Function: eshell-glob-convert-1
eshell-glob-convert-1 is a byte-compiled function defined in
em-glob.el.gz.
Signature
(eshell-glob-convert-1 GLOB &optional LAST)
Documentation
Convert a GLOB matching a single element of a file name to regexps.
If LAST is non-nil, this glob is the last element of a file name.
The result is a pair of regexps, the first for file names to include, and the second for ones to exclude.
Source Code
;; Defined in /usr/src/emacs/lisp/eshell/em-glob.el.gz
(defun eshell-glob-convert-1 (glob &optional last)
"Convert a GLOB matching a single element of a file name to regexps.
If LAST is non-nil, this glob is the last element of a file name.
The result is a pair of regexps, the first for file names to
include, and the second for ones to exclude."
(let ((len (length glob)) (index 1) (incl glob) excl)
;; We can't use `directory-file-name' because it strips away text
;; properties in the string.
(let ((last (1- (length incl))))
(when (eq (aref incl last) ?/)
(setq incl (substring incl 0 last))))
;; Split the glob if it contains a negation like x~y.
(while (and (eq incl glob)
(setq index (string-search "~" glob index)))
(if (or (get-text-property index 'escaped glob)
(or (= (1+ index) len)))
(setq index (1+ index))
(setq incl (substring glob 0 index)
excl (substring glob (1+ index)))))
(setq incl (eshell-glob-regexp incl)
excl (and excl (eshell-glob-regexp excl)))
;; Exclude dot files if requested.
(if (or eshell-glob-include-dot-files
(eq (aref glob 0) ?.))
(unless (or eshell-glob-include-dot-dot
(not last))
(setq excl (if excl
(concat "\\(\\`\\.\\.?\\'\\|" excl "\\)")
"\\`\\.\\.?\\'")))
(setq excl (if excl
(concat "\\(\\`\\.\\|" excl "\\)")
"\\`\\.")))
(cons incl excl)))