Function: eshell-find-delimiter
eshell-find-delimiter is a byte-compiled function defined in
esh-util.el.gz.
Signature
(eshell-find-delimiter OPEN CLOSE &optional BOUND REVERSE-P BACKSLASH-P)
Documentation
From point, find the CLOSE delimiter corresponding to OPEN.
The matching is bounded by BOUND. If REVERSE-P is non-nil, process the region backwards. If BACKSLASH-P is non-nil, and OPEN and CLOSE are the same character, then quoting is done by a backslash, rather than a doubled delimiter.
Source Code
;; Defined in /usr/src/emacs/lisp/eshell/esh-util.el.gz
(defun eshell-find-delimiter
(open close &optional bound reverse-p backslash-p)
"From point, find the CLOSE delimiter corresponding to OPEN.
The matching is bounded by BOUND.
If REVERSE-P is non-nil, process the region backwards.
If BACKSLASH-P is non-nil, and OPEN and CLOSE are the same character,
then quoting is done by a backslash, rather than a doubled delimiter."
(save-excursion
(let ((depth 1)
(bound (or bound (point-max))))
(if (if reverse-p
(eq (char-before) close)
(eq (char-after) open))
(forward-char (if reverse-p -1 1)))
(while (and (> depth 0)
(funcall (if reverse-p '> '<) (point) bound))
(let ((c (if reverse-p (char-before) (char-after))) nc)
(cond ((and (not reverse-p)
(or (not (eq open close))
backslash-p)
(eq c ?\\)
(setq nc (char-after (1+ (point))))
(or (eq nc open) (eq nc close)))
(forward-char 1))
((and reverse-p
(or (not (eq open close))
backslash-p)
(or (eq c open) (eq c close))
(eq (char-before (1- (point)))
?\\))
(forward-char -1))
((eq open close)
(if (eq c open)
(if (and (not backslash-p)
(eq (if reverse-p
(char-before (1- (point)))
(char-after (1+ (point)))) open))
(forward-char (if reverse-p -1 1))
(setq depth (1- depth)))))
((= c open)
(setq depth (+ depth (if reverse-p -1 1))))
((= c close)
(setq depth (+ depth (if reverse-p 1 -1))))))
(forward-char (if reverse-p -1 1)))
(if (= depth 0)
(if reverse-p (point) (1- (point)))))))