@@ -390,3 +390,37 @@ endfunc
390390
391391
392392
393+ " ----------------------------------------------------------------------
394+ " save curses help
395+ " ----------------------------------------------------------------------
396+ let s: previous_cursor = {}
397+
398+ function ! s: remember_cursor_context (code)
399+ let hwnd = g: quickui #context#current
400+ let name = hwnd.opts.keep_name
401+ let s: previous_cursor [name] = g: quickui #context#cursor
402+ endfunc
403+
404+ function ! s: remember_cursor_listbox (code)
405+ let hwnd = g: quickui #listbox#current
406+ let name = hwnd.opts.keep_name
407+ let s: previous_cursor [name] = g: quickui #listbox#cursor
408+ endfunc
409+
410+ function ! quickui#tools#clever_context (name, content, opts)
411+ let opts = deepcopy (a: opts )
412+ let opts.index = get (s: previous_cursor , a: name , -1 )
413+ let opts.keep_name = a: name
414+ let opts.callback = function (' s:remember_cursor_context' )
415+ let content = quickui#context#reduce_items (a: content )
416+ call quickui#context#open (content, opts)
417+ endfunc
418+
419+ function ! quickui#tools#clever_listbox (name, content, opts)
420+ let opts = deepcopy (a: opts )
421+ let opts.index = get (s: previous_cursor , a: name , -1 )
422+ let opts.keep_name = a: name
423+ let opts.callback = function (' s:remember_cursor_listbox' )
424+ call quickui#listbox#open (a: content , opts)
425+ endfunc
426+
0 commit comments