|
|
|
|
@ -78,10 +78,32 @@ Glib::RefPtr<Gsv::Language> Source::guess_language(const boost::filesystem::path
|
|
|
|
|
language = language_manager->get_language("cpphdr"); |
|
|
|
|
else { |
|
|
|
|
std::ifstream input(file_path.string(), std::ios::binary); |
|
|
|
|
std::string tag(5, '\0'); |
|
|
|
|
if(input && input.read(&tag[0], static_cast<std::streamsize>(tag.size())) && tag == "<?xml") |
|
|
|
|
std::string first_chars(2, '\0'); |
|
|
|
|
if(input && input.read(&first_chars[0], static_cast<std::streamsize>(first_chars.size()))) { |
|
|
|
|
if(first_chars == "<?") { |
|
|
|
|
std::string next_chars(3, '\0'); |
|
|
|
|
if(input.read(&next_chars[0], static_cast<std::streamsize>(next_chars.size())) && next_chars == "xml") |
|
|
|
|
language = language_manager->get_language("xml"); |
|
|
|
|
} |
|
|
|
|
else if(first_chars == "#!") { |
|
|
|
|
boost::filesystem::path interpreter; |
|
|
|
|
input >> interpreter; |
|
|
|
|
auto interpreter_filename = interpreter.filename().string(); |
|
|
|
|
if(interpreter_filename == "env") |
|
|
|
|
input >> interpreter_filename; |
|
|
|
|
if(interpreter_filename == "perl") |
|
|
|
|
return language_manager->get_language("perl"); |
|
|
|
|
else if(interpreter_filename == "python3") |
|
|
|
|
return language_manager->get_language("python3"); |
|
|
|
|
else if(interpreter_filename == "python") |
|
|
|
|
return language_manager->get_language("python"); |
|
|
|
|
else if(interpreter_filename == "sh" || interpreter_filename == "bash") |
|
|
|
|
return language_manager->get_language("sh"); |
|
|
|
|
else if(interpreter_filename == "node") |
|
|
|
|
return language_manager->get_language("js"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else if(language->get_id() == "cuda") { |
|
|
|
|
if(extension == ".cuh") |
|
|
|
|
|