mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-24 08:35:08 +00:00
Simplify and work around vscode _sortTextLow
This commit is contained in:
parent
42b6b7b3f0
commit
18e5d5c498
@ -91,19 +91,6 @@ ParseIncludeLineResult ParseIncludeLine(const std::string &line) {
|
||||
return {ok, match[3], match[5], match[6], match};
|
||||
}
|
||||
|
||||
template <typename T> char *tofixedbase64(T input, char *out) {
|
||||
const char *digits = "./0123456789"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
"abcdefghijklmnopqrstuvwxyz";
|
||||
int len = (sizeof(T) * 8 - 1) / 6 + 1;
|
||||
for (int i = len - 1; i >= 0; i--) {
|
||||
out[i] = digits[input % 64];
|
||||
input /= 64;
|
||||
}
|
||||
out[len] = '\0';
|
||||
return out;
|
||||
}
|
||||
|
||||
// Pre-filters completion responses before sending to vscode. This results in a
|
||||
// significantly snappier completion experience as vscode is easily overloaded
|
||||
// when given 1000+ completion items.
|
||||
@ -130,6 +117,7 @@ void FilterCandidates(lsCompletionList &result,
|
||||
result.isIncomplete = true;
|
||||
}
|
||||
|
||||
std::string sort(4, ' ');
|
||||
for (auto &item : items) {
|
||||
item.textEdit.range = lsRange{begin_pos, end_pos};
|
||||
if (has_open_paren && item.filterText)
|
||||
@ -149,15 +137,12 @@ void FilterCandidates(lsCompletionList &result,
|
||||
}
|
||||
edits.erase(edits.begin());
|
||||
}
|
||||
for (auto i = sort.size(); i && ++sort[i - 1] == 'A';)
|
||||
sort[--i] = ' ';
|
||||
item.sortText = sort;
|
||||
// Compatibility
|
||||
item.insertText = item.textEdit.newText;
|
||||
}
|
||||
|
||||
// Set sortText. Note that this happens after resizing - we could do it
|
||||
// before, but then we should also sort by priority.
|
||||
char buf[16];
|
||||
for (size_t i = 0; i < items.size(); ++i)
|
||||
items[i].sortText = tofixedbase64(i, buf);
|
||||
};
|
||||
|
||||
// No complete text; don't run any filtering logic except to trim the items.
|
||||
|
Loading…
Reference in New Issue
Block a user