vim:aucmd: Delay cword highlighting by 100ms

This should lead to better performance while scrolling through a file.
This commit is contained in:
2024-09-30 11:42:58 +02:00
parent e7b287940f
commit c27128fc5a

View File

@@ -65,6 +65,21 @@ function! HighlightCurrentWord()
return
endif
" Delay the highlight by 100ms so that not every word is highlighted
" while moving the cursor fast. (This kind of simulates a CursorHold
" event with a custom time)
if exists('w:cword_timer_id')
" Abort the already running timer and its callback
call timer_stop(w:cword_timer_id)
call ClearHighlights(s:CLEAR_HIGHS_CWORD)
endif
let w:cword_timer_id = timer_start(100, "_HighlightCurrentWord")
endfunction
function! _HighlightCurrentWord(timer_id)
" TODO: there is probably some kind of race condition here
unlet w:cword_timer_id
let l:cword = expand('<cword>')
if exists('w:old_cword') && w:old_cword == l:cword
" Do not delete and readd the match if on the same word