Browse Source

Cleanup of Source::guess_language

merge-requests/413/head
eidheim 3 years ago
parent
commit
85405c36bc
  1. 24
      src/source.cpp

24
src/source.cpp

@ -59,11 +59,6 @@ Glib::RefPtr<Gsv::Language> Source::guess_language(const boost::filesystem::path
content_type.clear(); content_type.clear();
auto language = language_manager->guess_language(filename, content_type); auto language = language_manager->guess_language(filename, content_type);
auto extension = file_path.extension().string(); auto extension = file_path.extension().string();
if(!language && (extension == ".in" || extension == ".bak")) {
auto path_copy = file_path;
path_copy.replace_extension();
return guess_language(path_copy);
}
if(!language) { if(!language) {
if(filename == "CMakeLists.txt") if(filename == "CMakeLists.txt")
language = language_manager->get_language("cmake"); language = language_manager->get_language("cmake");
@ -86,21 +81,16 @@ Glib::RefPtr<Gsv::Language> Source::guess_language(const boost::filesystem::path
extension == ".geom" || extension == ".geom" ||
extension == ".comp") extension == ".comp")
language = language_manager->get_language("glsl"); language = language_manager->get_language("glsl");
else if(!file_path.has_extension()) { else if(extension == ".in" || extension == ".bak")
for(auto &part : file_path) { return guess_language(boost::filesystem::path(file_path).replace_extension());
if(part == "include") { else if(!file_path.has_extension() && std::any_of(file_path.begin(), file_path.end(),
language = language_manager->get_language("cpphdr"); [](const boost::filesystem::path &path) { return path == "include"; }))
break; language = language_manager->get_language("cpphdr");
}
}
}
else { else {
std::ifstream input(file_path.string(), std::ios::binary); std::ifstream input(file_path.string(), std::ios::binary);
std::string tag(5, '\0'); std::string tag(5, '\0');
if(input && input.read(&tag[0], static_cast<std::streamsize>(tag.size()))) { if(input && input.read(&tag[0], static_cast<std::streamsize>(tag.size())) && tag == "<?xml")
if(tag == "<?xml") language = language_manager->get_language("xml");
language = language_manager->get_language("xml");
}
} }
} }
else if(language->get_id() == "cuda") { else if(language->get_id() == "cuda") {

Loading…
Cancel
Save