|
|
|
|
@ -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 == '.' || (keyval == ':' && *iter == ':')) |
|
|
|
|
if(keyval == '.' || (*iter == ':' && keyval == ':') || (*iter == '-' && keyval == '>')) |
|
|
|
|
return true; |
|
|
|
|
return false; |
|
|
|
|
}; |
|
|
|
|
@ -1657,7 +1657,7 @@ void Source::LanguageProtocolView::setup_autocomplete() {
|
|
|
|
|
} |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
else if(prevprev.backward_char() && *prevprev == ':' && *prev == ':') { |
|
|
|
|
else if(prevprev.backward_char() && ((*prevprev == ':' && *prev == ':') || (*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 == ':')); |
|
|
|
|
autocomplete_enable_snippets = !(*prev == '.' || (prevprev.backward_char() && ((*prevprev == ':' && *prev == ':') || (*prevprev == '-' && *prev == '>')))); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -1808,7 +1808,13 @@ void Source::LanguageProtocolView::setup_autocomplete() {
|
|
|
|
|
prefix = autocomplete->prefix; |
|
|
|
|
} |
|
|
|
|
for(auto &item : items) { |
|
|
|
|
auto label = item.string_or("label", ""); |
|
|
|
|
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); |
|
|
|
|
} |
|
|
|
|
if(starts_with(label, prefix)) { |
|
|
|
|
auto detail = item.string_or("detail", ""); |
|
|
|
|
LanguageProtocol::Documentation documentation(item.child_optional("documentation")); |
|
|
|
|
|