aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2023-02-01 22:54:09 +0000
committerJosh Rahm <rahm@google.com>2023-02-01 22:54:09 +0000
commitdc8466b027ed44891a47251e71ff213f45de1e37 (patch)
tree3c17f8fa381a97cd84ea926ac20271eccad62607
parent625a72d89db24e9b44cecf3e1132bc8078730ee1 (diff)
downloadfieldmarshal.vim-dc8466b027ed44891a47251e71ff213f45de1e37.tar.gz
fieldmarshal.vim-dc8466b027ed44891a47251e71ff213f45de1e37.tar.bz2
fieldmarshal.vim-dc8466b027ed44891a47251e71ff213f45de1e37.zip
add winswap.vim
-rw-r--r--plugin/winswap.vim28
1 files changed, 28 insertions, 0 deletions
diff --git a/plugin/winswap.vim b/plugin/winswap.vim
new file mode 100644
index 0000000..739ba4d
--- /dev/null
+++ b/plugin/winswap.vim
@@ -0,0 +1,28 @@
+function! s:do_window_swap() abort
+ let cur_buffer = bufnr('%')
+ let cur_win = win_getid()
+
+ let expr = ""
+ let c = nr2char(getchar())
+ while c =~ '[0-9]'
+ let expr = expr .. c
+ let c = nr2char(getchar())
+ endwhile
+ let expr = expr .. c
+
+ let w = winnr(expr)
+ if w > 0
+ let wid = win_getid(w)
+ let buf = nvim_win_get_buf(wid)
+
+ call nvim_win_set_buf(wid, cur_buffer)
+ call nvim_win_set_buf(cur_win, buf)
+
+ exec w .. "wincmd w"
+ endif
+
+endfunction
+
+noremap <Plug>(WindowSwap) <cmd>call <SID>do_window_swap()<cr>
+noremap <C-w><C-S> <Plug>(WindowSwap)
+noremap <C-S-w> <Plug>(WindowSwap)