@@ -198,15 +198,36 @@ function! s:async_enter_tree(node) abort dict
198198 if a: node .status is # helper.STATUS_NONE
199199 return s: Promise .reject ()
200200 endif
201+ let saved = {
202+ \ ' hidden' : fern.hidden ,
203+ \ ' include' : fern.include ,
204+ \ ' exclude' : fern.exclude,
205+ \}
201206 return s: Promise .resolve (a: node )
202207 \. then ({ n - > s: enter (fern, n ) })
208+ \. then ({ bufnr - > fern#helper#new (bufnr ) })
209+ \. then ({ helper - > s: async_enter_tree_post (helper, saved) })
210+ endfunction
211+ function ! s: async_enter_tree_post (helper, saved) abort
212+ let fern = a: helper .fern
213+ let fern.hidden = a: saved .hidden
214+ let fern.include = a: saved .include
215+ let fern.exclude = a: saved .exclude
216+ return a: helper .async.update_nodes (fern.nodes)
217+ \. then ({ - > a: helper .async.redraw () })
203218endfunction
204219let s: async .enter_tree = funcref (' s:async_enter_tree' )
205220
206221function ! s: async_leave_tree () abort dict
207222 let helper = self .helper
208223 let fern = helper.fern
209224 let root = helper.sync .get_root_node ()
225+ let saved = {
226+ \ ' name' : root.name,
227+ \ ' hidden' : fern.hidden ,
228+ \ ' include' : fern.include ,
229+ \ ' exclude' : fern.exclude,
230+ \}
210231 return s: Promise .resolve ()
211232 \. then ({ - > fern#internal#node#parent (
212233 \ root,
@@ -215,8 +236,17 @@ function! s:async_leave_tree() abort dict
215236 \ )
216237 \} )
217238 \. then ({ n - > s: enter (fern, n ) })
218- \. then ({ - > fern#helper#new (winbufnr (helper.winid)) })
219- \. then ({ h - > h .sync .focus_node ([root.name]) })
239+ \. then ({ bufnr - > fern#helper#new (bufnr ) })
240+ \. then ({ helper - > s: async_leave_tree_post (helper, saved) })
241+ endfunction
242+ function ! s: async_leave_tree_post (helper, saved) abort
243+ let fern = a: helper .fern
244+ let fern.hidden = a: saved .hidden
245+ let fern.include = a: saved .include
246+ let fern.exclude = a: saved .exclude
247+ return a: helper .async.update_nodes (fern.nodes)
248+ \. then ({ - > a: helper .async.redraw () })
249+ \. then ({ - > a: helper .sync .focus_node ([a: saved .name]) })
220250endfunction
221251let s: async .leave_tree = funcref (' s:async_leave_tree' )
222252
0 commit comments