diff --git a/codex.el b/codex.el index 572db00..09aa264 100644 --- a/codex.el +++ b/codex.el @@ -180,9 +180,20 @@ (defun codex--get-current-user-prompt () (with-codex-buffer - (unless codex--prompt-start - (error "No current prompt start")) - (buffer-substring-no-properties codex--prompt-start (point-max)))) + (let ((prompt-start (and codex--prompt-start + (marker-buffer codex--prompt-start) + (marker-position codex--prompt-start)))) + ;; fallback in case we somehow lost where our user prompt starts + (unless prompt-start + (let* ((haystack (buffer-string)) + (needle "---\nUser:\n") + (index (cl-search needle haystack :from-end t))) + (when index + (setq prompt-start (+ (length needle) index)) + (setq codex--prompt-start (copy-marker prompt-start))))) + (unless prompt-start + (error "No current prompt start")) + (buffer-substring-no-properties prompt-start (point-max))))) (defun codex-send () (interactive)