Browse Source

Fixed autocomplete at start of buffer

merge-requests/404/merge
eidheim 5 years ago
parent
commit
aa1019093d
  1. 14
      src/source_clang.cpp
  2. 7
      src/source_generic.cpp
  3. 14
      src/source_language_protocol.cpp

14
src/source_clang.cpp

@ -858,19 +858,19 @@ Source::ClangViewAutocomplete::ClangViewAutocomplete(const boost::filesystem::pa
autocomplete.run_check = [this]() { autocomplete.run_check = [this]() {
auto iter = get_buffer()->get_insert()->get_iter(); auto iter = get_buffer()->get_insert()->get_iter();
auto prefix_end = 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; return false;
enable_snippets = false; enable_snippets = false;
show_parameters = false; show_parameters = false;
size_t count = 0;
while(is_token_char(*iter) && iter.backward_char())
++count;
auto prefix_start = iter; auto prefix_start = iter;
if(prefix_start != prefix_end) if(prefix_start != prefix_end && !is_token_char(*iter))
prefix_start.forward_char(); prefix_start.forward_char();
auto previous = iter; auto previous = iter;

7
src/source_generic.cpp

@ -206,10 +206,15 @@ void Source::GenericView::setup_autocomplete() {
autocomplete.run_check = [this]() { autocomplete.run_check = [this]() {
auto start = get_buffer()->get_insert()->get_iter(); auto start = get_buffer()->get_insert()->get_iter();
auto end = start; auto end = start;
size_t count = 0; size_t count = 0;
while(start.backward_char() && is_token_char(*start)) while(start.backward_char() && is_token_char(*start))
++count; ++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 lock1(autocomplete.prefix_mutex);
LockGuard lock2(buffer_words_mutex); LockGuard lock2(buffer_words_mutex);
autocomplete.prefix = get_buffer()->get_text(start, end); autocomplete.prefix = get_buffer()->get_text(start, end);

14
src/source_language_protocol.cpp

@ -1632,19 +1632,19 @@ void Source::LanguageProtocolView::setup_autocomplete() {
autocomplete->run_check = [this, is_possible_jsx_property]() { autocomplete->run_check = [this, is_possible_jsx_property]() {
auto iter = get_buffer()->get_insert()->get_iter(); auto iter = get_buffer()->get_insert()->get_iter();
auto prefix_end = 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; return false;
autocomplete_enable_snippets = false; autocomplete_enable_snippets = false;
autocomplete_show_arguments = false; autocomplete_show_arguments = false;
size_t count = 0;
while(is_token_char(*iter) && iter.backward_char())
++count;
auto prefix_start = iter; auto prefix_start = iter;
if(prefix_start != prefix_end) if(prefix_start != prefix_end && !is_token_char(*iter))
prefix_start.forward_char(); prefix_start.forward_char();
auto previous = iter; auto previous = iter;

Loading…
Cancel
Save