From cbd12218a4f578b415d5a7da40275ad450e0ec64 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sun, 28 Jul 2024 09:09:51 -0300 Subject: Fix: move NERDTree workarounds to a plugin --- vim.dot.link/plugin/nerdtree_workarounds.vim | 55 ++++++++++++++++++++++++++++ vimrc.dot.link | 55 ---------------------------- 2 files changed, 55 insertions(+), 55 deletions(-) create mode 100644 vim.dot.link/plugin/nerdtree_workarounds.vim diff --git a/vim.dot.link/plugin/nerdtree_workarounds.vim b/vim.dot.link/plugin/nerdtree_workarounds.vim new file mode 100644 index 0000000..d0d682e --- /dev/null +++ b/vim.dot.link/plugin/nerdtree_workarounds.vim @@ -0,0 +1,55 @@ +" nedtree_workaroungs.vim - NERDTree and session restoration workarounds +" +" Author: Silvio Rhatto +" + +" Ensure the window has maximized height +" +" This helps restoring the window size after reopening sessions after +" switching monitors (like from laptop screen to external HDMI monitor). +" +" https://superuser.com/questions/140419/how-to-start-gvim-maximized +" https://vim.fandom.com/wiki/Maximize_or_set_initial_window_size +set lines=999 + +" Fix NERDTree width +" +" Useful after restoring sessions between screen size changes (such +" as when you share sessions between different computers). +function FixNERDTreeWidth() + " Make sure NERDTree is focuses + execute ":NERDTreeFocus" + + " Set a fixed width + execute ":vertical resize 30" + + " Move to the left pane + wincmd l +endfunction + +" In case you want to invoke FixNERDTreeWidth explicitly +command! -bang FixNERDTreeWidth :call FixNERDTreeWidth() + +" Fix NERDTree width on all tabs +function FixAllNERDTreeWidths() + " Save the last active window + let l:current_win = win_getid() + + tabdo :call FixNERDTreeWidth() + + " Restore the active window + call win_gotoid(l:current_win) + + " An additional, last move to the left pane + wincmd l +endfunction + +" Fix all NERDTree widths afert session load +augroup workaround + autocmd! + " This tends to fire for every buffers + "autocmd workaround SessionLoadPost * call FixAllNERDTreeWidths() + + " This seems to fire only once + autocmd workaround VimEnter * call FixAllNERDTreeWidths() +augroup END diff --git a/vimrc.dot.link b/vimrc.dot.link index 94bb058..c2454bf 100644 --- a/vimrc.dot.link +++ b/vimrc.dot.link @@ -434,58 +434,3 @@ set sessionoptions-=winpos " Autosave " See https://github.com/vim-scripts/vim-auto-save "let g:auto_save = 1 - -" -" NERDTree and session restoration workarounds -" - -" Ensure the window has maximized height -" -" This helps restoring the window size after reopening sessions after -" switching monitors (like from laptop screen to external HDMI monitor). -" -" https://superuser.com/questions/140419/how-to-start-gvim-maximized -" https://vim.fandom.com/wiki/Maximize_or_set_initial_window_size -set lines=999 - -" Fix NERDTree width -" -" Useful after restoring sessions between screen size changes (such -" as when you share sessions between different computers). -function FixNERDTreeWidth() - " Make sure NERDTree is focuses - execute ":NERDTreeFocus" - - " Set a fixed width - execute ":vertical resize 30" - - " Move to the left pane - wincmd l -endfunction - -" In case you want to invoke FixNERDTreeWidth explicitly -command! -bang FixNERDTreeWidth :call FixNERDTreeWidth() - -" Fix NERDTree width on all tabs -function FixAllNERDTreeWidths() - " Save the last active window - let l:current_win = win_getid() - - tabdo :call FixNERDTreeWidth() - - " Restore the active window - call win_gotoid(l:current_win) - - " An additional, last move to the left pane - wincmd l -endfunction - -" Fix all NERDTree widths afert session load -augroup workaround - autocmd! - " This tends to fire for every buffers - "autocmd workaround SessionLoadPost * call FixAllNERDTreeWidths() - - " This seems to fire only once - autocmd workaround VimEnter * call FixAllNERDTreeWidths() -augroup END -- cgit v1.2.3