@@ -163,15 +163,14 @@ M.close = function(state, focus_prior_window)
163
163
end
164
164
state .winid = nil
165
165
end
166
- local bufnr = utils . get_value ( state , " bufnr " , 0 , true )
167
- if bufnr > 0 and vim . api . nvim_buf_is_valid ( bufnr ) then
166
+ if window_existed then
167
+ local bufnr = utils . get_value ( state , " bufnr" , 0 , true )
168
168
state .bufnr = nil
169
- local success , err = pcall (vim .api .nvim_buf_delete , bufnr , { force = true })
170
- if not success and err :match (" E523" ) then
171
- vim .schedule_wrap (function ()
169
+ vim .schedule (function ()
170
+ if bufnr > 0 and vim .api .nvim_buf_is_valid (bufnr ) then
172
171
vim .api .nvim_buf_delete (bufnr , { force = true })
173
- end )()
174
- end
172
+ end
173
+ end )
175
174
end
176
175
return window_existed
177
176
end
@@ -781,6 +780,7 @@ create_tree = function(state)
781
780
state .tree = NuiTree ({
782
781
ns_id = highlights .ns_id ,
783
782
winid = state .winid ,
783
+ bufnr = state .bufnr ,
784
784
get_node_id = function (node )
785
785
return node .id
786
786
end ,
@@ -1090,7 +1090,7 @@ M.window_exists = function(state)
1090
1090
window_exists = false
1091
1091
elseif position == " current" then
1092
1092
window_exists = vim .api .nvim_win_is_valid (winid )
1093
- and vim .api .nvim_buf_is_valid (bufnr )
1093
+ and vim .api .nvim_buf_is_loaded (bufnr )
1094
1094
and vim .api .nvim_win_get_buf (winid ) == bufnr
1095
1095
else
1096
1096
local isvalid = M .is_window_valid (winid )
0 commit comments