@@ -12,7 +12,7 @@ import { useRoute } from "@tui/context/route"
1212import { useSync } from "@tui/context/sync"
1313import { useEvent } from "@tui/context/event"
1414import { MessageID , PartID } from "@/session/schema"
15- import { createStore , produce } from "solid-js/store"
15+ import { createStore , produce , unwrap } from "solid-js/store"
1616import { useKeybind } from "@tui/context/keybind"
1717import { usePromptHistory , type PromptInfo } from "./history"
1818import { assign } from "./part"
@@ -75,6 +75,8 @@ function randomIndex(count: number) {
7575 return Math . floor ( Math . random ( ) * count )
7676}
7777
78+ let stashed : { prompt : PromptInfo ; cursor : number } | undefined
79+
7880export function Prompt ( props : PromptProps ) {
7981 let input : TextareaRenderable
8082 let anchor : BoxRenderable
@@ -433,7 +435,22 @@ export function Prompt(props: PromptProps) {
433435 } ,
434436 }
435437
438+ onMount ( ( ) => {
439+ const saved = stashed
440+ stashed = undefined
441+ if ( store . prompt . input ) return
442+ if ( saved && saved . prompt . input ) {
443+ input . setText ( saved . prompt . input )
444+ setStore ( "prompt" , saved . prompt )
445+ restoreExtmarksFromParts ( saved . prompt . parts )
446+ input . cursorOffset = saved . cursor
447+ }
448+ } )
449+
436450 onCleanup ( ( ) => {
451+ if ( store . prompt . input ) {
452+ stashed = { prompt : unwrap ( store . prompt ) , cursor : input . cursorOffset }
453+ }
437454 props . ref ?.( undefined )
438455 } )
439456
0 commit comments