Function: eshell-separate-commands
eshell-separate-commands is a byte-compiled function defined in
esh-cmd.el.gz.
Signature
(eshell-separate-commands TERMS SEPARATOR &optional REVERSED LAST-TERMS-SYM)
Documentation
Separate TERMS using SEPARATOR.
If REVERSED is non-nil, the list of separated term groups will be returned in reverse order. If LAST-TERMS-SYM is a symbol, its value will be set to a list of all the separator operators found (or (nil) if none).
Source Code
;; Defined in /usr/src/emacs/lisp/eshell/esh-cmd.el.gz
(defun eshell-separate-commands (terms separator &optional
reversed last-terms-sym)
"Separate TERMS using SEPARATOR.
If REVERSED is non-nil, the list of separated term groups will be
returned in reverse order. If LAST-TERMS-SYM is a symbol, its value
will be set to a list of all the separator operators found (or (nil)
if none)."
(let ((sub-terms (list t))
(eshell-sep-terms (list t))
subchains)
(while terms
(if (and (consp (car terms))
(eq (caar terms) 'eshell-operator)
(string-match (concat "^" separator "$")
(nth 1 (car terms))))
(progn
(nconc eshell-sep-terms (list (nth 1 (car terms))))
(setq subchains (cons (cdr sub-terms) subchains)
sub-terms (list t)))
(nconc sub-terms (list (car terms))))
(setq terms (cdr terms)))
(if (> (length sub-terms) 1)
(setq subchains (cons (cdr sub-terms) subchains)))
(if reversed
(progn
(if last-terms-sym
(set last-terms-sym (reverse (cdr eshell-sep-terms))))
subchains) ; already reversed
(if last-terms-sym
(set last-terms-sym (cdr eshell-sep-terms)))
(nreverse subchains))))