From ec5e839d9bae94f7c0d28168fff1b53d009fe913 Mon Sep 17 00:00:00 2001 From: eidheim Date: Fri, 2 Feb 2018 21:10:46 +0100 Subject: [PATCH] Language protocol, autocomplete: no longer inserts function/template parameters if they already exists --- src/source_language_protocol.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/source_language_protocol.cc b/src/source_language_protocol.cc index 29480b5..3232a82 100644 --- a/src/source_language_protocol.cc +++ b/src/source_language_protocol.cc @@ -1238,6 +1238,17 @@ void Source::LanguageProtocolView::setup_autocomplete() { get_buffer()->erase(CompletionDialog::get()->start_mark->get_iter(), get_buffer()->get_insert()->get_iter()); if(hide_window) { Glib::ustring insert=autocomplete_insert[index]; + + // 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=insert.substr(0, bracket_pos); + } + } + + // Find and add position marks that one can move to using tab-key size_t pos1=0; std::vector> mark_offsets; while((pos1=insert.find("${"), pos1)!=Glib::ustring::npos) {