fix(completion): filter results with complete+=f (#26029)

This commit is contained in:
Raphael
2023-11-18 12:26:52 +08:00
committed by GitHub
parent abac33605f
commit cdc8bacc79
2 changed files with 19 additions and 28 deletions

View File

@@ -3325,24 +3325,10 @@ static void get_next_bufname_token(void)
{
FOR_ALL_BUFFERS(b) {
if (b->b_p_bl && b->b_sfname != NULL) {
char *start = get_past_head(b->b_sfname);
char *current = start;
char *p = (char *)path_next_component(start);
while (true) {
int len = (int)(p - current) - (*p == NUL ? 0 : 1);
// treat . as a separator, unless it is the first char in a filename
char *dot = strchr(current, '.');
if (dot && *p == NUL && *current != '.') {
len = (int)(dot - current);
p = dot + 1;
}
ins_compl_add(current, len, NULL, NULL, false, NULL, 0,
char *tail = path_tail(b->b_sfname);
if (strncmp(tail, compl_orig_text, strlen(compl_orig_text)) == 0) {
ins_compl_add(tail, (int)strlen(tail), NULL, NULL, false, NULL, 0,
p_ic ? CP_ICASE : 0, false);
if (*p == NUL) {
break;
}
current = p;
p = (char *)path_next_component(p);
}
}
}