diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2024-07-28 11:35:27 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2024-07-28 11:35:27 -0300 |
commit | 8ed53743ab305c7cdad98cd79f4a1f61a24507d1 (patch) | |
tree | 55be44a94b654d112b7fd662b0c820f66d69d58a | |
parent | d77f88995f3b4485bbf79ea9056c79541751baf5 (diff) | |
download | vim-8ed53743ab305c7cdad98cd79f4a1f61a24507d1.tar.gz vim-8ed53743ab305c7cdad98cd79f4a1f61a24507d1.tar.bz2 |
Fix: additional session workarounds
-rw-r--r-- | vim.dot.link/plugin/nerdtree_workarounds.vim | 51 |
1 files changed, 40 insertions, 11 deletions
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 <rhatto@riseup.net> " -" 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. |