diff --git a/autoload/maximizer.vim b/autoload/maximizer.vim new file mode 100644 index 0000000..e752962 --- /dev/null +++ b/autoload/maximizer.vim @@ -0,0 +1,25 @@ +fun! maximizer#maximize() + let t:maximizer_sizes = { 'before': winrestcmd() } + vert resize | resize + let t:maximizer_sizes.after = winrestcmd() + normal! ze +endfun + +fun! maximizer#restore() + if exists('t:maximizer_sizes') + silent! exe t:maximizer_sizes.before + if t:maximizer_sizes.before != winrestcmd() + wincmd = + endif + unlet t:maximizer_sizes + normal! ze + end +endfun + +fun! maximizer#toggle(force) + if exists('t:maximizer_sizes') && (a:force || (t:maximizer_sizes.after == winrestcmd())) + call maximizer#restore() + elseif winnr('$') > 1 + call maximizer#maximize() + endif +endfun diff --git a/plugin/maximizer.vim b/plugin/maximizer.vim index 206d63b..2a405ea 100644 --- a/plugin/maximizer.vim +++ b/plugin/maximizer.vim @@ -39,7 +39,7 @@ if !exists('g:maximizer_default_mapping_key') let g:maximizer_default_mapping_key = '' endif -command! -bang -nargs=0 -range MaximizerToggle :call s:toggle(0) +command! -bang -nargs=0 -range MaximizerToggle :call maximizer#toggle(0) if g:maximizer_set_default_mapping let command = ':MaximizerToggle' @@ -53,35 +53,9 @@ if g:maximizer_set_default_mapping silent! exe 'inoremap ' . g:maximizer_default_mapping_key . ' ' . command . '' endif -fun! s:maximize() - let t:maximizer_sizes = { 'before': winrestcmd() } - vert resize | resize - let t:maximizer_sizes.after = winrestcmd() - normal! ze -endfun - -fun! s:restore() - if exists('t:maximizer_sizes') - silent! exe t:maximizer_sizes.before - if t:maximizer_sizes.before != winrestcmd() - wincmd = - endif - unlet t:maximizer_sizes - normal! ze - end -endfun - -fun! s:toggle(force) - if exists('t:maximizer_sizes') && (a:force || (t:maximizer_sizes.after == winrestcmd())) - call s:restore() - elseif winnr('$') > 1 - call s:maximize() - endif -endfun - if g:maximizer_restore_on_winleave augroup maximizer au! - au WinLeave * call s:restore() + au WinLeave * call maximizer#restore() augroup END endif