Function: ghostel--navigate-previous-prompt
ghostel--navigate-previous-prompt is a natively compiled function
defined in ghostel-shell.el.
Signature
(ghostel--navigate-previous-prompt &optional N)
Documentation
Move point to the start of the Nth previous prompt region.
Source Code
;; Defined in /nix/store/1252krff0gb2kisjcpp45m50cpdskfrl-emacs-packages-deps/share/emacs/site-lisp/ghostel-shell.el
(defun ghostel--navigate-previous-prompt (&optional n)
"Move point to the start of the Nth previous prompt region."
(let ((pos (point)))
(dotimes (_ (or n 1))
;; If inside or on a prompt, first skip backward past it.
(when (or (get-text-property pos 'ghostel-input)
(and (> pos (point-min))
(get-text-property (1- pos) 'ghostel-input)))
(setq pos (or (previous-single-property-change pos 'ghostel-input)
(point-min))))
(when (or (get-text-property pos 'ghostel-prompt)
(and (> pos (point-min))
(get-text-property (1- pos) 'ghostel-prompt)))
(setq pos (or (previous-single-property-change pos 'ghostel-prompt)
(point-min))))
;; Now search backward for the previous prompt.
(let ((prev (previous-single-property-change pos 'ghostel-prompt)))
(cond
(prev
(setq pos prev)
;; If we landed at the end of a prompt, step to its start.
(when (get-text-property (max (1- pos) (point-min)) 'ghostel-prompt)
(setq pos (or (previous-single-property-change pos 'ghostel-prompt)
(point-min)))))
;; No property change before pos, but a prompt may start at point-min.
((and (> pos (point-min))
(get-text-property (point-min) 'ghostel-prompt))
(setq pos (point-min))))))
(when (and pos (/= pos (point)))
(goto-char pos)
(ghostel--prompt-input-start))))