|
|
|
|
@ -1434,10 +1434,20 @@ void Source::LanguageProtocolView::setup_autocomplete() {
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
autocomplete.on_select = [this](unsigned int index, const std::string &text, bool hide_window) { |
|
|
|
|
get_buffer()->erase(CompletionDialog::get()->start_mark->get_iter(), get_buffer()->get_insert()->get_iter()); |
|
|
|
|
if(hide_window) { |
|
|
|
|
Glib::ustring insert = autocomplete_insert[index]; |
|
|
|
|
|
|
|
|
|
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 = insert.substr(0, bracket_pos); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(hide_window) { |
|
|
|
|
if(autocomplete_show_parameters) { |
|
|
|
|
if(has_named_parameters()) { // Do not select named parameters in for instance Python
|
|
|
|
|
get_buffer()->insert(CompletionDialog::get()->start_mark->get_iter(), insert); |
|
|
|
|
@ -1452,15 +1462,6 @@ void Source::LanguageProtocolView::setup_autocomplete() {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 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<std::pair<size_t, size_t>> mark_offsets; |
|
|
|
|
@ -1500,7 +1501,7 @@ void Source::LanguageProtocolView::setup_autocomplete() {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
get_buffer()->insert(CompletionDialog::get()->start_mark->get_iter(), text); |
|
|
|
|
get_buffer()->insert(CompletionDialog::get()->start_mark->get_iter(), insert); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
autocomplete.get_tooltip = [this](unsigned int index) { |
|
|
|
|
|