Browse Source

Fixes LanguageManager::guess_language calls in certain circumstances: use filename as argument instead of entire path

pipelines/235045657
eidheim 5 years ago
parent
commit
3498b4bf82
  1. 25
      src/source.cpp

25
src/source.cpp

@ -50,28 +50,29 @@ Glib::RefPtr<Gsv::StyleSchemeManager> Source::StyleSchemeManager::get_default()
Glib::RefPtr<Gsv::Language> Source::guess_language(const boost::filesystem::path &file_path) { Glib::RefPtr<Gsv::Language> Source::guess_language(const boost::filesystem::path &file_path) {
auto language_manager = LanguageManager::get_default(); auto language_manager = LanguageManager::get_default();
bool result_uncertain = false; bool result_uncertain = false;
auto content_type = Gio::content_type_guess(file_path.string(), nullptr, 0, result_uncertain); auto filename = file_path.filename().string();
auto content_type = Gio::content_type_guess(filename, nullptr, 0, result_uncertain);
if(result_uncertain) if(result_uncertain)
content_type.clear(); content_type.clear();
auto language = language_manager->guess_language(file_path.string(), content_type); auto language = language_manager->guess_language(filename, content_type);
if(!language) { if(!language) {
auto filename = file_path.filename().string(); auto extension = file_path.extension().string();
if(filename == "CMakeLists.txt") if(filename == "CMakeLists.txt")
language = language_manager->get_language("cmake"); language = language_manager->get_language("cmake");
else if(filename == "meson.build") else if(filename == "meson.build")
language = language_manager->get_language("meson"); language = language_manager->get_language("meson");
else if(filename == "Makefile") else if(filename == "Makefile")
language = language_manager->get_language("makefile"); language = language_manager->get_language("makefile");
else if(file_path.extension() == ".tcc") else if(extension == ".tcc")
language = language_manager->get_language("cpphdr"); language = language_manager->get_language("cpphdr");
else if(file_path.extension() == ".ts" || file_path.extension() == ".tsx" || file_path.extension() == ".jsx" || file_path.extension() == ".flow") else if(extension == ".ts" || extension == ".tsx" || extension == ".jsx" || extension == ".flow")
language = language_manager->get_language("js"); language = language_manager->get_language("js");
else if(file_path.extension() == ".vert" || // listed on https://github.com/KhronosGroup/glslang else if(extension == ".vert" || // listed on https://github.com/KhronosGroup/glslang
file_path.extension() == ".frag" || extension == ".frag" ||
file_path.extension() == ".tesc" || extension == ".tesc" ||
file_path.extension() == ".tese" || extension == ".tese" ||
file_path.extension() == ".geom" || extension == ".geom" ||
file_path.extension() == ".comp") extension == ".comp")
language = language_manager->get_language("glsl"); language = language_manager->get_language("glsl");
else if(!file_path.has_extension()) { else if(!file_path.has_extension()) {
for(auto &part : file_path) { for(auto &part : file_path) {
@ -221,7 +222,7 @@ Source::View::View(const boost::filesystem::path &file_path, const Glib::RefPtr<
if(language_id == "cmake" || language_id == "makefile" || language_id == "python" || if(language_id == "cmake" || language_id == "makefile" || language_id == "python" ||
language_id == "python3" || language_id == "sh" || language_id == "perl" || language_id == "python3" || language_id == "sh" || language_id == "perl" ||
language_id == "ruby" || language_id == "r" || language_id == "asm" || language_id == "ruby" || language_id == "r" || language_id == "asm" ||
language_id == "automake" || language_id == "yaml") language_id == "automake" || language_id == "yaml" || language_id == "docker")
comment_characters = "#"; comment_characters = "#";
else if(language_id == "latex" || language_id == "matlab" || language_id == "octave" || language_id == "bibtex") else if(language_id == "latex" || language_id == "matlab" || language_id == "octave" || language_id == "bibtex")
comment_characters = "%"; comment_characters = "%";

Loading…
Cancel
Save