aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2019-05-30 21:37:19 +1200
committerTom Ryder <tom@sanctum.geek.nz>2019-05-30 21:37:19 +1200
commitbfb65858ea696cf1ed5ad2c8ed6d2174c28a7801 (patch)
treea8801816dbfcc1777e3ea27fca05cf0a302d5f4c
parentMerge branch 'release/v0.5.0' (diff)
parentBump VERSION (diff)
downloadvim-cursorline-current-bfb65858ea696cf1ed5ad2c8ed6d2174c28a7801.tar.gz
vim-cursorline-current-bfb65858ea696cf1ed5ad2c8ed6d2174c28a7801.zip
Merge branch 'release/v1.0.0'v1.0.0
* release/v1.0.0: Add comments Remove unneeded part of documentation Correct winnr() call Restore BufEnter hook Use much shorter implementation for Load() Remove BufEnter hook Run load and restore functions only with multiwin Pare down variable names and usage Merge autocmd definitions Remove support for g:cursorline_current_insert Strip comments out from plugin file Factor out functions into autoload
-rw-r--r--VERSION2
-rw-r--r--autoload/cursorline_current.vim17
-rw-r--r--doc/cursorline_current.txt10
-rw-r--r--plugin/cursorline_current.vim59
4 files changed, 32 insertions, 56 deletions
diff --git a/VERSION b/VERSION
index 8f0916f..3eefcb9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.5.0
+1.0.0
diff --git a/autoload/cursorline_current.vim b/autoload/cursorline_current.vim
new file mode 100644
index 0000000..648d633
--- /dev/null
+++ b/autoload/cursorline_current.vim
@@ -0,0 +1,17 @@
+" Suspend 'cursorline' when a window is inactive or inserting
+function! cursorline_current#Suspend() abort
+ let w:cursorline = &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', &g:cursorline)
+endfunction
+
+" Call cursorline_current#Suspend() on all windows besides the current one
+function! cursorline_current#Load() abort
+ let wcur = winnr()
+ windo if winnr() != wcur | call cursorline_current#Suspend() | endif
+ execute wcur . 'wincmd w'
+endfunction
diff --git a/doc/cursorline_current.txt b/doc/cursorline_current.txt
index 838c272..be3e78d 100644
--- a/doc/cursorline_current.txt
+++ b/doc/cursorline_current.txt
@@ -12,15 +12,7 @@ correctly handle local values for windows.
REQUIREMENTS *cursorline_current-requirements*
-This plugin only loads if 'compatible' is not set. It requires the |+autocmd|
-and |+windows| features.
-
-OPTIONS *cursorline_current-options*
-
- *g:cursorline_current_insert*
-Set `g:cursorline_current_insert` to 0 in your |vimrc| if you don't like the
-cursor line switching off while you're in insert mode. This option defaults to
-1.
+This plugin only loads if 'compatible' is not set.
AUTHOR *cursorline_current-author*
diff --git a/plugin/cursorline_current.vim b/plugin/cursorline_current.vim
index 9cdb25d..ed590b8 100644
--- a/plugin/cursorline_current.vim
+++ b/plugin/cursorline_current.vim
@@ -11,56 +11,23 @@ if exists('loaded_cursorline_current') || &compatible || v:version < 700
endif
let loaded_cursorline_current = 1
-" Suspend 'cursorline' when a window is inactive or inserting
-function! s:Suspend() abort
- let w:cursorline_current = &l:cursorline
- let &l:cursorline = 0
-endfunction
-
-" Restore 'cursorline' when a window is active and non-insert
-function! s:Restore() abort
- let &l:cursorline = get(w:, 'cursorline_current', &g:cursorline)
- let w:cursorline_current = &l:cursorline
-endfunction
-
-" Call s:Suspend() on all windows besides the current one
-function! s: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 s:Suspend()
- endfor
-
- " Return to the window in which we started
- execute wcur . 'wincmd w'
-
-endfunction
-
-" Set up hooks for toggling 'cursorline'
+" Set up hooks
augroup cursorline_current
autocmd!
- " Turn off 'cursorline' for other windows on load
- autocmd VimEnter * call s:Load()
+ " Toggle local 'cursorline' state to follow window focus
+ autocmd InsertLeave,WinEnter,FocusGained *
+ \ call cursorline_current#Restore()
+ autocmd InsertEnter,WinLeave,FocusLost *
+ \ call cursorline_current#Suspend()
- " Turn off 'cursorline' when leaving a window or losing focus. We call the
- " restore again on BufEnter to handle existent local buffer values for the
- " option overwriting the window value (Vim bug?)
- autocmd WinLeave,FocusLost * call s:Suspend()
- autocmd BufEnter,WinEnter,FocusGained * call s:Restore()
+ " If Vim opens with more than one window, set them up correctly
+ autocmd VimEnter *
+ \ if winnr('$') > 1 | call cursorline_current#Load() | endif
- " Turn off 'cursorline' when in insert mode
- " Check g:cursorline_current_insert, in case the user doesn't want it
- if get(g:, 'cursorline_current_insert', 1)
- autocmd InsertEnter * call s:Suspend()
- autocmd InsertLeave * call s:Restore()
- endif
+ " Restore the window setting on re-entering a window onto an existing
+ " buffer, if there is more than one buffer
+ autocmd BufEnter *
+ \ if winnr('$') > 1 | call cursorline_current#Restore() | endif
augroup END