X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/3e59c20a7a476d0b704c2cc1b377b9b10be0640a..5e613adedc4689fb4f0a58e51b44dd229066ab07:/vim/plugin/quit_another_window.vim diff --git a/vim/plugin/quit_another_window.vim b/vim/plugin/quit_another_window.vim deleted file mode 100644 index 6453d84..0000000 --- a/vim/plugin/quit_another_window.vim +++ /dev/null @@ -1,110 +0,0 @@ -"============================================================================= -" File: quit_another_window.vim -" Author: Dmitry Frank (dimon.frank@gmail.com) -" Version: 1.04 -"============================================================================= -" See documentation in accompanying help file -" You may use this code in whatever way you see fit. - -function! s:getchar() - let c = getchar() - if c =~ '^\d\+$' - let c = nr2char(c) - endif - return c -endfunction - -function! s:inputtarget() - let a = s:getchar() - let c = '' - while a != ' ' - if a =~ '^[hjkl]$' - let c = c . a - endif - let a = s:getchar() - endwhile - return c -endfunction - -function! QuitWindow(boolBang) - if (!a:boolBang) - :q - else - :q! - endif -endfunction - -"" function to close other window -" @param sWincmd - window movement command(s). -" for example, "h" used to close left window, -" "j" used to close lower window, -" etc. -" -" You can combine them: -" "jl" used to go to lower window, -" then go to right window, -" then close it. -" etc. -function! QuitAnotherWindow(sWincmd, boolBang) - - if empty(a:sWincmd) - call QuitWindow(a:boolBang) - return - endif - - " remember current winnr, e.g. winnr of starting window - " (we need to go to the same winnr after close other window) - let l:iCurWinnr = winnr() - - let l:iIndex = 0 - - while (l:iIndex < strlen(a:sWincmd)) - " move to window that should be closed and get its winnr - exec 'wincmd '.a:sWincmd[l:iIndex] - let l:iClosedWinnr = winnr() - - let l:iIndex += 1 - endwhile - - " if its winnr is the same as starting winnr, then do nothing. - " (you should use just :q instead) - if (l:iCurWinnr == l:iClosedWinnr) - return - endif - - " calculate target winnr - if (l:iCurWinnr > l:iClosedWinnr) - let l:iCurWinnr -= 1 - endif - - " close needed window - call QuitWindow(a:boolBang) - - " go to starting window - while (winnr() != l:iCurWinnr) - :wincmd w - endwhile -endfunction - - - -" define plugin's commands -command! -nargs=? -bang -complete=file Qh call QuitAnotherWindow('h', 0) -command! -nargs=? -bang -complete=file Qj call QuitAnotherWindow('j', 0) -command! -nargs=? -bang -complete=file Qk call QuitAnotherWindow('k', 0) -command! -nargs=? -bang -complete=file Ql call QuitAnotherWindow('l', 0) - -command! -nargs=? -bang -complete=file Q call QuitAnotherWindow("", 0) - -nnoremap QAnotherWin :call QuitAnotherWindow(inputtarget(), 0) - -" define lowercased aliases if possible -if exists("loaded_cmdalias") && exists("*CmdAlias") - call CmdAlias('qh', 'Qh') - call CmdAlias('qj', 'Qj') - call CmdAlias('qk', 'Qk') - call CmdAlias('ql', 'Ql') - - call CmdAlias('q', 'Q') -endif -