summaryrefslogtreecommitdiff
path: root/.config/nvim/plugin/winmove.vim
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/plugin/winmove.vim')
-rw-r--r--.config/nvim/plugin/winmove.vim47
1 files changed, 47 insertions, 0 deletions
diff --git a/.config/nvim/plugin/winmove.vim b/.config/nvim/plugin/winmove.vim
new file mode 100644
index 0000000..a72f6ab
--- /dev/null
+++ b/.config/nvim/plugin/winmove.vim
@@ -0,0 +1,47 @@
+if &cp || exists('g:loaded_winmove')
+ finish
+endif
+let g:loaded_winmove = v:true
+
+function! winmove#Next()
+ let l:n1 = winnr()
+ wincmd l
+ if l:n1 != winnr()
+ return
+ endif
+
+ tabnext
+
+ let l:n1 = winnr()
+ while v:true
+ wincmd h
+ let l:n2 = winnr()
+ if l:n1 == l:n2
+ return
+ endif
+ let l:n1 = l:n2
+ endwhile
+endfunction
+
+function! winmove#Prev()
+ let l:n1 = winnr()
+ wincmd h
+ if l:n1 != winnr()
+ return
+ endif
+
+ tabprev
+
+ let l:n1 = winnr()
+ while v:true
+ wincmd l
+ let l:n2 = winnr()
+ if l:n1 == l:n2
+ return
+ endif
+ let l:n1 = l:n2
+ endwhile
+endfunction
+
+command! -nargs=0 WinMoveNext call winmove#Next()
+command! -nargs=0 WinMovePrev call winmove#Prev()