Browse Source

Language protocol: optimization of autocomplete insertion when language server answers with incomplete insertText

merge-requests/382/head
eidheim 8 years ago
parent
commit
c552e248c1
  1. 7
      src/source_language_protocol.cc

7
src/source_language_protocol.cc

@ -1225,11 +1225,14 @@ void Source::LanguageProtocolView::setup_autocomplete() {
auto detail=it->second.get<std::string>("detail", ""); auto detail=it->second.get<std::string>("detail", "");
auto documentation=it->second.get<std::string>("documentation", ""); auto documentation=it->second.get<std::string>("documentation", "");
auto insert=it->second.get<std::string>("insertText", ""); auto insert=it->second.get<std::string>("insertText", "");
if(!insert.empty()) { // In case ( is missing in insert but is present in label if(!insert.empty()) {
// In case ( is missing in insert but is present in label
if(label.size()>insert.size() && label.back()==')' && insert.find('(')==std::string::npos) {
auto pos=label.find('('); auto pos=label.find('(');
if(pos!=std::string::npos && pos==insert.size() && pos+1<label.size() && label.back()==')' && insert.find('(')==std::string::npos) if(pos!=std::string::npos && pos==insert.size() && pos+1<label.size())
insert+="(${1:"+label.substr(pos+1, label.size()-1-(pos+1))+"})"; insert+="(${1:"+label.substr(pos+1, label.size()-1-(pos+1))+"})";
} }
}
else { else {
insert=label; insert=label;
auto kind=it->second.get<unsigned>("kind", 0); auto kind=it->second.get<unsigned>("kind", 0);

Loading…
Cancel
Save