From bfb5bc47334bf8bc510a94c7fbe02c7a29368302 Mon Sep 17 00:00:00 2001 From: Shinya Ohyanagi Date: Sun, 10 Aug 2025 20:08:43 +0900 Subject: [PATCH] Fix completion item text selection priority According to the Language Server Protocol 3.17 specification: - filterText is only used for filtering and sorting completion items - When textEdit is provided, insertText must be ignored --- autoload/lsp/omni.vim | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/autoload/lsp/omni.vim b/autoload/lsp/omni.vim index 160ca10e7..d4f010a5e 100644 --- a/autoload/lsp/omni.vim +++ b/autoload/lsp/omni.vim @@ -312,15 +312,7 @@ function! lsp#omni#get_vim_completion_items(options) abort let l:range = lsp#utils#text_edit#get_range(get(l:completion_item, 'textEdit', {})) let l:complete_word = '' if has_key(l:completion_item, 'textEdit') && type(l:completion_item['textEdit']) == s:t_dict && !empty(l:range) && has_key(l:completion_item['textEdit'], 'newText') - let l:text_edit_new_text = l:completion_item['textEdit']['newText'] - if has_key(l:completion_item, 'filterText') && !empty(l:completion_item['filterText']) && matchstr(l:text_edit_new_text, '^' . l:refresh_pattern) ==# '' - " Use filterText as word. - let l:complete_word = l:completion_item['filterText'] - else - " Use textEdit.newText as word. - let l:complete_word = l:text_edit_new_text - endif - + let l:complete_word = l:completion_item['textEdit']['newText'] let l:item_start_character = l:range['start']['character'] let l:start_character = min([l:item_start_character, l:start_character]) let l:start_characters += [l:item_start_character]