diff options
Diffstat (limited to 'autoload/cursorline_current.vim')
-rw-r--r-- | autoload/cursorline_current.vim | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/autoload/cursorline_current.vim b/autoload/cursorline_current.vim new file mode 100644 index 0000000..36bb210 --- /dev/null +++ b/autoload/cursorline_current.vim @@ -0,0 +1,31 @@ +" Suspend 'cursorline' when a window is inactive or inserting +function! cursorline_current#Suspend() abort + let w:cursorline_current = &l:cursorline + let &l:cursorline = 0 +endfunction + +" Restore 'cursorline' when a window is active and non-insert +function! cursorline_current#Restore() abort + let &l:cursorline = get(w:, 'cursorline_current', &g:cursorline) + let w:cursorline_current = &l:cursorline +endfunction + +" Call cursorline_current#Suspend() on all windows besides the current one +function! cursorline_current#Load() abort + + " Cache current window index + let wcur = winnr() + + " Iterate through all the windows and suspend all but the current one + for wnum in range(1, winnr('$')) + if wnum == wcur + continue + endif + execute wnum . 'wincmd w' + call cursorline_current#Suspend() + endfor + + " Return to the window in which we started + execute wcur . 'wincmd w' + +endfunction |