]> gitweb.fluxo.info Git - rhatto/dotfiles/vim.git/commitdiff
Fix: NERDTree and session restoration workarounds
authorSilvio Rhatto <rhatto@riseup.net>
Sun, 28 Jul 2024 04:33:23 +0000 (01:33 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Sun, 28 Jul 2024 04:33:23 +0000 (01:33 -0300)
vimrc.dot.link

index 4179a91062682ac42aa565ab79cf1fc3b848e033..d7389dc89751948205262a08f4711d5d08bafc49 100644 (file)
@@ -423,10 +423,47 @@ let g:session_autosave='yes'
 let g:session_autoload='no'
 let g:session_directory='~/.local/share/vim/sessions'
 
-" Don't save hidden and unloaded buffers in sessions.
+" Session options
 " https://github.com/xolox/vim-session?tab=readme-ov-file#options
 set sessionoptions-=buffers
+set sessionoptions-=blank
+set sessionoptions-=resize
+set sessionoptions-=winsize
+set sessionoptions-=winpos
 
 " Autosave
 " See https://github.com/vim-scripts/vim-auto-save
 "let g:auto_save = 1
+
+" 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 all NERDTree widths afert session load
+augroup workaround
+  autocmd!
+  autocmd workaround SessionLoadPost * tabdo call FixNERDTreeWidth()
+augroup END