Browse Source

Language client: improved detection of parameter number

pipelines/235045657
eidheim 5 years ago
parent
commit
548e10b2ab
  1. 17
      src/source_language_protocol.cpp

17
src/source_language_protocol.cpp

@ -1531,8 +1531,11 @@ void Source::LanguageProtocolView::setup_autocomplete() {
std::set<std::string> used_named_parameters; std::set<std::string> used_named_parameters;
auto iter = get_buffer()->get_insert()->get_iter(); auto iter = get_buffer()->get_insert()->get_iter();
int para_count = 0; int para_count = 0;
int square_count = 0;
int angle_count = 0;
int curly_count = 0;
while(iter.backward_char() && backward_to_code(iter)) { while(iter.backward_char() && backward_to_code(iter)) {
if(para_count == 0) { if(para_count == 0 && square_count == 0 && angle_count == 0 && curly_count == 0) {
if(named_parameter_symbol && (*iter == ',' || *iter == '(')) { if(named_parameter_symbol && (*iter == ',' || *iter == '(')) {
auto next = iter; auto next = iter;
if(next.forward_char() && forward_to_code(next)) { if(next.forward_char() && forward_to_code(next)) {
@ -1553,6 +1556,18 @@ void Source::LanguageProtocolView::setup_autocomplete() {
++para_count; ++para_count;
else if(*iter == ')') else if(*iter == ')')
--para_count; --para_count;
else if(*iter == '[')
++square_count;
else if(*iter == ']')
--square_count;
else if(*iter == '<')
++angle_count;
else if(*iter == '>')
--angle_count;
else if(*iter == '{')
++curly_count;
else if(*iter == '}')
--curly_count;
} }
bool using_named_parameters = named_parameter_symbol && !(current_parameter_position > 0 && used_named_parameters.empty()); bool using_named_parameters = named_parameter_symbol && !(current_parameter_position > 0 && used_named_parameters.empty());

Loading…
Cancel
Save