Browse Source

Now also searches for rust-analyzer executable in $PATH

merge-requests/404/merge
eidheim 5 years ago
parent
commit
36a8515d05
  1. 22
      src/notebook.cpp

22
src/notebook.cpp

@ -170,19 +170,25 @@ bool Notebook::open(const boost::filesystem::path &file_path_, Position position
}
}
size_t source_views_previous_size = source_views.size();
if(language && (language->get_id() == "chdr" || language->get_id() == "cpphdr" || language->get_id() == "c" || language->get_id() == "cpp" || language->get_id() == "objc"))
source_views.emplace_back(new Source::ClangView(file_path, language));
else if(language && !language_protocol_language_id.empty() && !filesystem::find_executable(language_protocol_language_id + "-language-server").empty())
source_views.emplace_back(new Source::LanguageProtocolView(file_path, language, language_protocol_language_id, language_protocol_language_id + "-language-server"));
else if(language && language_protocol_language_id == "rust" && !filesystem::get_rust_sysroot_path().empty()) {
auto rust_analyzer = filesystem::get_rust_sysroot_path() / "bin" / "rust-analyzer";
boost::system::error_code ec;
if(boost::filesystem::exists(rust_analyzer, ec))
source_views.emplace_back(new Source::LanguageProtocolView(file_path, language, language_protocol_language_id, rust_analyzer.string()));
else
source_views.emplace_back(new Source::GenericView(file_path, language));
else if(language && language_protocol_language_id == "rust") {
if(!filesystem::find_executable("rust-analyzer").empty())
source_views.emplace_back(new Source::LanguageProtocolView(file_path, language, language_protocol_language_id, "rust-analyzer"));
else {
auto sysroot = filesystem::get_rust_sysroot_path();
if(!sysroot.empty()) {
auto rust_analyzer = sysroot / "bin" / "rust-analyzer";
boost::system::error_code ec;
if(boost::filesystem::exists(rust_analyzer, ec))
source_views.emplace_back(new Source::LanguageProtocolView(file_path, language, language_protocol_language_id, rust_analyzer.string()));
}
}
}
else {
if(source_views_previous_size == source_views.size()) {
if(language) {
static std::set<std::string> shown;
std::string language_id = language->get_id();

Loading…
Cancel
Save