Compare commits

..

1 Commits

Author SHA1 Message Date
Jørgen Lien Sellæg e2e799029f
Merge branch 'python-refactor' into 'master' 3 months ago
  1. 9
      docs/language_servers.md
  2. 2
      src/source_clang.cpp
  3. 14
      src/source_language_protocol.cpp

9
docs/language_servers.md

@ -182,13 +182,12 @@ chmod 755 /usr/local/bin/glsl-language-server
**Note that we recommend using the builtin C/C++ support in juCi++ instead.**
- Prerequisites:
- A C/C++ language server installed on your system, for example clangd
- A language server installed on your system, for example clangd or ccls
Create executable to enable server in juCi++:
Create symbolic link to enable language server in juCi++. For example, if you have the clangd
installed and available on path:
```sh
# Usually as root:
echo '#!/bin/sh
clangd' > /usr/local/bin/clang-language-server
chmod 755 /usr/local/bin/clang-language-server
ln -s `which clangd` /usr/local/bin/clang-language-server
```

2
src/source_clang.cpp

@ -893,7 +893,7 @@ Source::ClangViewAutocomplete::ClangViewAutocomplete(const boost::filesystem::pa
autocomplete.is_restart_key = [this](guint keyval) {
auto iter = get_buffer()->get_insert()->get_iter();
iter.backward_chars(2);
if(keyval == '.' || (*iter == ':' && keyval == ':') || (*iter == '-' && keyval == '>'))
if(keyval == '.' || (keyval == ':' && *iter == ':') || (keyval == '>' && *iter == '-'))
return true;
return false;
};

14
src/source_language_protocol.cpp

@ -1610,7 +1610,7 @@ void Source::LanguageProtocolView::setup_autocomplete() {
autocomplete->is_restart_key = [this](guint keyval) {
auto iter = get_buffer()->get_insert()->get_iter();
iter.backward_chars(2);
if(keyval == '.' || (*iter == ':' && keyval == ':') || (*iter == '-' && keyval == '>'))
if(keyval == '.' || (keyval == ':' && *iter == ':'))
return true;
return false;
};
@ -1657,7 +1657,7 @@ void Source::LanguageProtocolView::setup_autocomplete() {
}
return true;
}
else if(prevprev.backward_char() && ((*prevprev == ':' && *prev == ':') || (*prevprev == '-' && *prev == '>'))) {
else if(prevprev.backward_char() && *prevprev == ':' && *prev == ':') {
{
LockGuard lock(autocomplete->prefix_mutex);
autocomplete->prefix = get_buffer()->get_text(prefix_start, prefix_end);
@ -1689,7 +1689,7 @@ void Source::LanguageProtocolView::setup_autocomplete() {
autocomplete->prefix = get_buffer()->get_text(prefix_start, prefix_end);
}
auto prevprev = prev;
autocomplete_enable_snippets = !(*prev == '.' || (prevprev.backward_char() && ((*prevprev == ':' && *prev == ':') || (*prevprev == '-' && *prev == '>'))));
autocomplete_enable_snippets = !(*prev == '.' || (prevprev.backward_char() && *prevprev == ':' && *prev == ':'));
return true;
}
@ -1808,13 +1808,7 @@ void Source::LanguageProtocolView::setup_autocomplete() {
prefix = autocomplete->prefix;
}
for(auto &item : items) {
auto label = item.string_or("filterText", item.string_or("label", ""));
if(!label.empty()) {
if(starts_with(label, "."))
label.erase(0, 1);
else if(starts_with(label, "::") || starts_with(label, "->"))
label.erase(0, 2);
}
auto label = item.string_or("label", "");
if(starts_with(label, prefix)) {
auto detail = item.string_or("detail", "");
LanguageProtocol::Documentation documentation(item.child_optional("documentation"));

Loading…
Cancel
Save