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 ++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 vim.dot.link/plugin/nerdtree_workarounds.vim (limited to 'vim.dot.link') 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 -- cgit v1.2.3