From 8ed53743ab305c7cdad98cd79f4a1f61a24507d1 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sun, 28 Jul 2024 11:35:27 -0300 Subject: Fix: additional session workarounds --- vim.dot.link/plugin/nerdtree_workarounds.vim | 51 ++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 11 deletions(-) (limited to 'vim.dot.link') diff --git a/vim.dot.link/plugin/nerdtree_workarounds.vim b/vim.dot.link/plugin/nerdtree_workarounds.vim index a78ed0c..60e4a1c 100644 --- a/vim.dot.link/plugin/nerdtree_workarounds.vim +++ b/vim.dot.link/plugin/nerdtree_workarounds.vim @@ -3,15 +3,6 @@ " 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 @@ -51,11 +42,49 @@ function FixAllNERDTreeWidths() let dir_fixed_nerdtree_widths=1 endfunction -" Fix all NERDTree widths afert session load +" 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). +" +" We just want to quickly maximize the window and then restore it to +" it's original size, to ensure all windows are refreshed. +" +" Maybe this is not a NERDTree workaround itself, but more like a +" session workaround. +" +" https://superuser.com/questions/140419/how-to-start-gvim-maximized +" https://vim.fandom.com/wiki/Maximize_or_set_initial_window_size +"let lines_initial=&l:lines +function FixWindowHeights() + " Set the maximum available height + set lines=999 + + " Set the lines depending on the LINES environment variable + " or through tput. + if $LINES != "" + execute ':set lines=' . $LINES + else + let available_lines = system('tput lines') + execute ':set lines=' . available_lines + " Old, and not working approach that tries to reuse the initial height + "else + " execute ':set lines=' . lines_initial + " set lines=999 + " execute ':set lines=' . winheight(0) - 3 + endif +endfunction + +function RestoreWindowSizes() + call FixWindowHeights() + call FixAllNERDTreeWidths() +endfunction + +" Fix all window sizes augroup workaround autocmd! " This tends to fire for every buffer - autocmd workaround SessionLoadPost * call FixAllNERDTreeWidths() + autocmd workaround SessionLoadPost * call RestoreWindowSizes() " This seems to fire only once, but even when there's no session to be " restored. -- cgit v1.2.3