From 1858cc2311ddf6192c7a800aef9209e720cb7c94 Mon Sep 17 00:00:00 2001 From: eidheim Date: Fri, 28 Aug 2015 09:10:36 +0200 Subject: [PATCH] Cleanup of autocomplete buffer creation. --- src/source.cc | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/source.cc b/src/source.cc index 202b17e..de8146d 100644 --- a/src/source.cc +++ b/src/source.cc @@ -1206,24 +1206,17 @@ void Source::ClangViewAutocomplete::autocomplete() { }); std::shared_ptr > buffer_map=std::make_shared >(); - auto& buffer=(*buffer_map)[this->file_path.string()]; + auto ustr=get_buffer()->get_text(); auto iter=get_buffer()->get_insert()->get_iter(); - buffer=get_buffer()->get_text(get_buffer()->begin(), iter); auto line_nr=iter.get_line()+1; auto column_nr=iter.get_line_offset()+1; - unsigned c=1; - if(c<=buffer.size()) { - char *chr=&buffer[buffer.size()-c]; - while((*chr>='a' && *chr<='z') || (*chr>='A' && *chr<='Z') || (*chr>='0' && *chr<='9') || *chr=='_') { - *chr=' '; - column_nr--; - c++; - if(c>buffer.size()) - break; - chr--; - } + auto pos=iter.get_offset()-1; + while(pos>=0 && ((ustr[pos]>='a' && ustr[pos]<='z') || (ustr[pos]>='A' && ustr[pos]<='Z') || (ustr[pos]>='0' && ustr[pos]<='9') || ustr[pos]=='_')) { + ustr.replace(pos, 1, " "); + column_nr--; + pos--; } - buffer+=get_buffer()->get_text(iter, get_buffer()->end()); + (*buffer_map)[this->file_path.string()]=std::move(ustr); //TODO: does this work? set_status("autocomplete..."); if(autocomplete_thread.joinable()) autocomplete_thread.join();