diff --git a/.config/vim/vimrc.d/80-autocommands.vim b/.config/vim/vimrc.d/80-autocommands.vim index 53b9626..91e815e 100644 --- a/.config/vim/vimrc.d/80-autocommands.vim +++ b/.config/vim/vimrc.d/80-autocommands.vim @@ -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('') if exists('w:old_cword') && w:old_cword == l:cword " Do not delete and readd the match if on the same word