Function: eshell-hist-parse-event-designator
eshell-hist-parse-event-designator is a byte-compiled function defined
in em-hist.el.gz.
Signature
(eshell-hist-parse-event-designator REFERENCE)
Documentation
Parse a history event designator beginning in REFERENCE.
Source Code
;; Defined in /usr/src/emacs/lisp/eshell/em-hist.el.gz
(defun eshell-hist-parse-event-designator (reference)
"Parse a history event designator beginning in REFERENCE."
(let* ((index (string-match eshell-hist-event-designator reference))
(end (and index (match-end 0))))
(unless index
(error "Invalid history event designator `%s'" reference))
(let* ((event (match-string 1 reference))
(pos
(cond
((string= event "!") (ring-length eshell-history-ring))
((string= event "#") (error "!# not yet implemented"))
((string-match "^-?[0-9]+$" event)
(let ((num (string-to-number event)))
(if (>= num 0)
(- (ring-length eshell-history-ring) num)
(1- (abs num)))))
((string-match "^\\(\\??\\)\\([^?]+\\)\\??$" event)
(let ((pref (if (> (length (match-string 1 event)) 0)
"" "^"))
(str (match-string 2 event)))
(save-match-data
(eshell-previous-matching-input-string-position
(concat pref (regexp-quote str)) 1))))
(t
(error "Failed to parse event designator `%s'" event)))))
(and pos (cons pos end)))))