|
|
|
@ -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") { |
|
|
|
|