@@ -13,6 +13,7 @@ local log = require("neo-tree.log")
1313
1414local M = { resize_timer_interval = 50 }
1515local ESC_KEY = vim .api .nvim_replace_termcodes (" <ESC>" , true , false , true )
16+ local default_popup_size = { width = 60 , height = " 80%" }
1617local floating_windows = {}
1718local draw , create_window , create_tree
1819
@@ -737,17 +738,17 @@ create_window = function(state)
737738 win_options = popups .popup_options (" Neo-tree " .. sourceTitle , 40 , win_options )
738739 win_options .win_options = nil
739740 win_options .zindex = 40
740- local size = { width = 60 , height = " 80%" }
741741
742742 -- Then override with source specific options.
743743 local b = win_options .border
744- win_options .size = utils .resolve_config_option (state , " window.popup.size" , size )
744+ win_options .size = utils .resolve_config_option (state , " window.popup.size" , default_popup_size )
745745 win_options .position = utils .resolve_config_option (state , " window.popup.position" , " 50%" )
746746 win_options .border = utils .resolve_config_option (state , " window.popup.border" , b )
747747
748748 win = NuiPopup (win_options )
749749 win :mount ()
750750 win .source_name = state .name
751+ win .original_options = state .window
751752 table.insert (floating_windows , win )
752753
753754 if require (" neo-tree" ).config .close_floats_on_escape_key then
@@ -822,6 +823,17 @@ create_window = function(state)
822823 return win
823824end
824825
826+ M .update_floating_window_layouts = function ()
827+ for _ , win in ipairs (floating_windows ) do
828+ local opt = {
829+ relative = " win" ,
830+ }
831+ opt .size = utils .resolve_config_option (win .original_options , " popup.size" , default_popup_size )
832+ opt .position = utils .resolve_config_option (win .original_options , " popup.position" , " 50%" )
833+ win :update_layout (opt )
834+ end
835+ end
836+
825837--- Determines is the givin winid is valid and the window still exists.
826838--- @param winid any
827839--- @return boolean
0 commit comments