Browse Source

Try to detect .m files as Objective-C

They are detected as Octave, but *.m is also used for Objective-C.
merge-requests/427/head
doe300 4 months ago
parent
commit
598fdee582
  1. 13
      src/source.cpp

13
src/source.cpp

@ -103,6 +103,19 @@ Glib::RefPtr<Gsv::Language> Source::guess_language(const boost::filesystem::path
} }
else if(language->get_id() == "opencl") else if(language->get_id() == "opencl")
language = language_manager->get_language("cpp"); language = language_manager->get_language("cpp");
else if(language->get_id() == "octave" && extension == ".m") {
// .m is used for both Octave and Objective-C, so try to differentiate
std::ifstream input(file_path.string(), std::ios::binary);
std::string buffer(256, '\0');
input.read(&buffer[0], static_cast<std::streamsize>(buffer.size()));
buffer.resize(static_cast<std::size_t>(input.gcount()));
if(input && (buffer.find("#import ") != std::string::npos ||
buffer.find("@interface ") != std::string::npos ||
buffer.find("/*") != std::string::npos ||
buffer.find("//") != std::string::npos)) {
language = language_manager->get_language("objc");
}
}
return language; return language;
} }

Loading…
Cancel
Save