diff --git a/src/source_clang.cpp b/src/source_clang.cpp index c0bb4f7..2d87481 100644 --- a/src/source_clang.cpp +++ b/src/source_clang.cpp @@ -858,19 +858,19 @@ Source::ClangViewAutocomplete::ClangViewAutocomplete(const boost::filesystem::pa autocomplete.run_check = [this]() { auto iter = get_buffer()->get_insert()->get_iter(); auto prefix_end = iter; - iter.backward_char(); - if(!is_code_iter(iter)) + + size_t count = 0; + while(iter.backward_char() && is_token_char(*iter)) + ++count; + + if(count == 0) return false; enable_snippets = false; show_parameters = false; - size_t count = 0; - while(is_token_char(*iter) && iter.backward_char()) - ++count; - auto prefix_start = iter; - if(prefix_start != prefix_end) + if(prefix_start != prefix_end && !is_token_char(*iter)) prefix_start.forward_char(); auto previous = iter; diff --git a/src/source_generic.cpp b/src/source_generic.cpp index b56a22a..b43c29e 100644 --- a/src/source_generic.cpp +++ b/src/source_generic.cpp @@ -206,10 +206,15 @@ void Source::GenericView::setup_autocomplete() { autocomplete.run_check = [this]() { auto start = get_buffer()->get_insert()->get_iter(); auto end = start; + size_t count = 0; while(start.backward_char() && is_token_char(*start)) ++count; - if((start.is_start() || start.forward_char()) && count >= 3 && !(*start >= '0' && *start <= '9')) { + + if(!is_token_char(*start)) + start.forward_char(); + + if(count >= 3 && !(*start >= '0' && *start <= '9')) { LockGuard lock1(autocomplete.prefix_mutex); LockGuard lock2(buffer_words_mutex); autocomplete.prefix = get_buffer()->get_text(start, end); diff --git a/src/source_language_protocol.cpp b/src/source_language_protocol.cpp index f337d48..f67b0c4 100644 --- a/src/source_language_protocol.cpp +++ b/src/source_language_protocol.cpp @@ -1632,19 +1632,19 @@ void Source::LanguageProtocolView::setup_autocomplete() { autocomplete->run_check = [this, is_possible_jsx_property]() { auto iter = get_buffer()->get_insert()->get_iter(); auto prefix_end = iter; - iter.backward_char(); - if(!is_code_iter(iter)) + + size_t count = 0; + while(iter.backward_char() && is_token_char(*iter)) + ++count; + + if(count == 0) return false; autocomplete_enable_snippets = false; autocomplete_show_arguments = false; - size_t count = 0; - while(is_token_char(*iter) && iter.backward_char()) - ++count; - auto prefix_start = iter; - if(prefix_start != prefix_end) + if(prefix_start != prefix_end && !is_token_char(*iter)) prefix_start.forward_char(); auto previous = iter;