File tree Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -222,9 +222,33 @@ M.win_enter_event = function()
222222 log .trace (" win_count: " , win_count )
223223 if prior_exists and win_count == 1 and vim .o .filetype == " neo-tree" then
224224 local position = vim .api .nvim_buf_get_var (0 , " neo_tree_position" )
225+ local source = vim .api .nvim_buf_get_var (0 , " neo_tree_source" )
225226 if position ~= " current" then
226227 -- close_if_last_window just doesn't make sense for a split style
227228 log .trace (" last window, closing" )
229+ local state = require (" neo-tree.sources.manager" ).get_state (source )
230+ if state == nil then
231+ return
232+ end
233+ local mod = utils .get_modified_buffers ()
234+ log .debug (" close_if_last_window, modified files found: " , vim .inspect (mod ))
235+ for filename , is_modified in pairs (mod ) do
236+ if is_modified then
237+ if vim .startswith (filename , " [No Name]#" ) then
238+ bufnr = string.sub (filename , 11 )
239+ log .trace (" close_if_last_window, showing unnamed modified buffer: " , filename )
240+ vim .schedule (function ()
241+ log .warn (
242+ " Cannot close because an unnamed buffer is modified. Please save or discard this file."
243+ )
244+ vim .cmd (" vsplit" )
245+ vim .api .nvim_win_set_width (win_id , state .window .width or 40 )
246+ vim .cmd (" b" .. bufnr )
247+ end )
248+ return
249+ end
250+ end
251+ end
228252 vim .cmd (" q!" )
229253 return
230254 end
Original file line number Diff line number Diff line change @@ -209,6 +209,9 @@ M.get_modified_buffers = function()
209209 local modified_buffers = {}
210210 for _ , buffer in ipairs (vim .api .nvim_list_bufs ()) do
211211 local buffer_name = vim .api .nvim_buf_get_name (buffer )
212+ if buffer_name == nil or buffer_name == " " then
213+ buffer_name = " [No Name]#" .. buffer
214+ end
212215 modified_buffers [buffer_name ] = vim .api .nvim_buf_get_option (buffer , " modified" )
213216 end
214217 return modified_buffers
You can’t perform that action at this time.
0 commit comments