mirror of
https://github.com/neovim/neovim
synced 2025-07-16 01:01:49 +00:00
Merge pull request #34429 from zeertzjq/vim-9.1.1447
vim-patch:9.1.{1447,1449}
This commit is contained in:
@ -1339,13 +1339,15 @@ static int cp_compare_nearest(const void *a, const void *b)
|
||||
/// Set fuzzy score.
|
||||
static void set_fuzzy_score(void)
|
||||
{
|
||||
if (compl_leader.data != NULL && compl_leader.size > 0) {
|
||||
compl_T *comp = compl_first_match;
|
||||
do {
|
||||
comp->cp_score = fuzzy_match_str(comp->cp_str.data, compl_leader.data);
|
||||
comp = comp->cp_next;
|
||||
} while (comp != NULL && !is_first_match(comp));
|
||||
if (!compl_first_match || compl_leader.data == NULL || compl_leader.size == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
compl_T *comp = compl_first_match;
|
||||
do {
|
||||
comp->cp_score = fuzzy_match_str(comp->cp_str.data, compl_leader.data);
|
||||
comp = comp->cp_next;
|
||||
} while (comp != NULL && !is_first_match(comp));
|
||||
}
|
||||
|
||||
/// Sort completion matches, excluding the node that contains the leader.
|
||||
|
@ -285,7 +285,7 @@ void pum_display(pumitem_T *array, int size, int selected, bool array_changed, i
|
||||
// for cmdline pum, no need for context lines unless target_win is set
|
||||
context_lines = 0;
|
||||
} else {
|
||||
// Leave two lines of context if possible
|
||||
// Leave three lines of context if possible
|
||||
validate_cheight(target_win);
|
||||
int cline_visible_offset = target_win->w_cline_row +
|
||||
target_win->w_cline_height - target_win->w_wrow;
|
||||
|
@ -4835,4 +4835,29 @@ func Test_complete_unloaded_buf_refresh_always()
|
||||
delfunc TestComplete
|
||||
endfunc
|
||||
|
||||
func Test_complete_fuzzy_omnifunc_backspace()
|
||||
let g:do_complete = v:false
|
||||
func Omni_test(findstart, base)
|
||||
if a:findstart
|
||||
let g:do_complete = !g:do_complete
|
||||
endif
|
||||
if g:do_complete
|
||||
return a:findstart ? 0 : [#{word: a:base .. 'def'}, #{word: a:base .. 'ghi'}]
|
||||
endif
|
||||
return a:findstart ? -3 : {}
|
||||
endfunc
|
||||
|
||||
new
|
||||
redraw " need this to prevent NULL dereference in Nvim
|
||||
setlocal omnifunc=Omni_test
|
||||
setlocal completeopt=menuone,fuzzy,noinsert
|
||||
call setline(1, 'abc')
|
||||
call feedkeys("A\<C-X>\<C-O>\<BS>\<Esc>0", 'tx!')
|
||||
call assert_equal('ab', getline(1))
|
||||
|
||||
bwipe!
|
||||
delfunc Omni_test
|
||||
unlet g:do_complete
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab nofoldenable
|
||||
|
Reference in New Issue
Block a user