Browse Source

Language client: added support for ?. completions

pipelines/235045657
eidheim 6 years ago
parent
commit
3a7a4d1ccc
  1. 13
      src/source_language_protocol.cpp

13
src/source_language_protocol.cpp

@ -1436,7 +1436,7 @@ void Source::LanguageProtocolView::setup_autocomplete() {
autocomplete_show_arguments = false;
auto line = ' ' + get_line_before();
const static std::regex regex("^.*([a-zA-Z_\\)\\]\\>\"']|[^a-zA-Z0-9_][a-zA-Z_][a-zA-Z0-9_]*)(\\.)([a-zA-Z0-9_]*)$|" // .
const static std::regex regex("^.*([a-zA-Z_\\)\\]\\>\"']|[^a-zA-Z0-9_][a-zA-Z_][a-zA-Z0-9_]*\\?{0,1})(\\.)([a-zA-Z0-9_]*)$|" // .
"^.*(::)([a-zA-Z0-9_]*)$|" // ::
"^.*[^a-zA-Z0-9_]([a-zA-Z_][a-zA-Z0-9_]{2,})$"); // part of symbol
std::smatch sm;
@ -1652,12 +1652,23 @@ void Source::LanguageProtocolView::setup_autocomplete() {
get_buffer()->erase(CompletionDialog::get()->start_mark->get_iter(), get_buffer()->get_insert()->get_iter());
// Do not insert function/template parameters if they already exist
{
auto iter = get_buffer()->get_insert()->get_iter();
if(*iter == '(' || *iter == '<') {
auto bracket_pos = insert.find(*iter);
if(bracket_pos != std::string::npos)
insert.erase(bracket_pos);
}
}
// Do not instert ?. after ., instead replace . with ?.
if(1 < insert.size() && insert[0] == '?' && insert[1] == '.') {
auto iter = get_buffer()->get_insert()->get_iter();
auto prev = iter;
if(prev.backward_char() && *prev == '.') {
get_buffer()->erase(prev, iter);
}
}
if(hide_window) {
if(autocomplete_show_arguments) {

Loading…
Cancel
Save