Skip to content
This repository was archived by the owner on Aug 24, 2020. It is now read-only.

Commit bf8d206

Browse files
authored
Cache signature_help_trigger_chars (prabirshrestha#696)
* Cache signature_help_trigger_chars * Move code to the part which updating init_results. * Tweaking delay for signature help * Disable warning of unused-variables
1 parent 08f702b commit bf8d206

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

autoload/lsp.vim

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,10 @@ function! s:handle_initialize(server_name, data) abort
746746

747747
if !lsp#client#is_error(l:response)
748748
let l:server['init_result'] = l:response
749+
" Delete cache of trigger chars
750+
if has_key(b:, 'lsp_signature_help_trigger_character')
751+
unlet b:lsp_signature_help_trigger_character
752+
endif
749753
else
750754
let l:server['failed'] = l:response['error']
751755
call lsp#utils#error('Failed to initialize ' . a:server_name . ' with error ' . l:response['error']['code'] . ': ' . l:response['error']['message'])

autoload/lsp/ui/vim/signature_help.vim

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
" vint: -ProhibitUnusedVariable
12
let s:debounce_timer_id = 0
23

34
function! s:not_supported(what) abort
@@ -114,10 +115,10 @@ endfunction
114115
function! s:on_cursor_moved() abort
115116
let l:bufnr = bufnr('%')
116117
call timer_stop(s:debounce_timer_id)
117-
let s:debounce_timer_id = timer_start(200, { -> s:on_text_changed_after(l:bufnr) }, { 'repeat': 1 })
118+
let s:debounce_timer_id = timer_start(500, function('s:on_text_changed_after', [l:bufnr]), { 'repeat': 1 })
118119
endfunction
119120

120-
function! s:on_text_changed_after(bufnr) abort
121+
function! s:on_text_changed_after(bufnr, timer) abort
121122
if bufnr('%') != a:bufnr
122123
return
123124
endif
@@ -128,10 +129,14 @@ function! s:on_text_changed_after(bufnr) abort
128129
return
129130
endif
130131

131-
let l:chars = []
132-
for l:server_name in lsp#get_whitelisted_servers(a:bufnr)
133-
let l:chars += lsp#capabilities#get_signature_help_trigger_characters(l:server_name)
134-
endfor
132+
" Cache trigger chars since this loop is heavy
133+
let l:chars = get(b:, 'lsp_signature_help_trigger_character', [])
134+
if empty(l:chars)
135+
for l:server_name in lsp#get_whitelisted_servers(a:bufnr)
136+
let l:chars += lsp#capabilities#get_signature_help_trigger_characters(l:server_name)
137+
endfor
138+
let b:lsp_signature_help_trigger_character = l:chars
139+
endif
135140

136141
if index(l:chars, lsp#utils#_get_before_char_skip_white()) >= 0
137142
call lsp#ui#vim#signature_help#get_signature_help_under_cursor()

0 commit comments

Comments
 (0)