Mercurial > emacs
diff lisp/eshell/em-glob.el @ 88155:d7ddb3e565de
sync with trunk
author | Henrik Enberg <henrik.enberg@telia.com> |
---|---|
date | Mon, 16 Jan 2006 00:03:54 +0000 |
parents | eeded772a8a2 |
children |
line wrap: on
line diff
--- a/lisp/eshell/em-glob.el Sun Jan 15 23:02:10 2006 +0000 +++ b/lisp/eshell/em-glob.el Mon Jan 16 00:03:54 2006 +0000 @@ -1,6 +1,7 @@ ;;; em-glob.el --- extended file name globbing -;; Copyright (C) 1999, 2000 Free Software Foundation +;; Copyright (C) 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. ;; Author: John Wiegley <johnw@gnu.org> @@ -18,8 +19,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Code: @@ -122,10 +123,6 @@ :type '(repeat (cons character (choice regexp function))) :group 'eshell-glob) -;;; Internal Variables: - -(defvar eshell-glob-chars-regexp nil) - ;;; Functions: (defun eshell-glob-initialize () @@ -134,8 +131,6 @@ (when (boundp 'eshell-special-chars-outside-quoting) (set (make-local-variable 'eshell-special-chars-outside-quoting) (append eshell-glob-chars-list eshell-special-chars-outside-quoting))) - (set (make-local-variable 'eshell-glob-chars-regexp) - (format "[%s]+" (apply 'string eshell-glob-chars-list))) (add-hook 'eshell-parse-argument-hook 'eshell-parse-glob-chars t t) (add-hook 'eshell-pre-rewrite-command-hook 'eshell-no-command-globbing nil t)) @@ -184,6 +179,8 @@ (buffer-substring-no-properties (1- (point)) (1+ end)) (goto-char (1+ end)))))))))) +(defvar eshell-glob-chars-regexp nil) + (defun eshell-glob-regexp (pattern) "Convert glob-pattern PATTERN to a regular expression. The basic syntax is: @@ -204,8 +201,11 @@ resulting regular expression." (let ((matched-in-pattern 0) ; How much of PATTERN handled regexp) - (while (string-match eshell-glob-chars-regexp - pattern matched-in-pattern) + (while (string-match + (or eshell-glob-chars-regexp + (set (make-local-variable 'eshell-glob-chars-regexp) + (format "[%s]+" (apply 'string eshell-glob-chars-list)))) + pattern matched-in-pattern) (let* ((op-begin (match-beginning 0)) (op-char (aref pattern op-begin))) (setq regexp @@ -266,9 +266,6 @@ (defvar matches) (defvar message-shown)) -;; jww (1999-11-18): this function assumes that directory-sep-char is -;; a forward slash (/) - (defun eshell-glob-entries (path globs &optional recurse-p) "Glob the entries in PATHS, possibly recursing if RECURSE-P is non-nil." (let* ((entries (ignore-errors @@ -304,11 +301,11 @@ ;; can't use `directory-file-name' because it strips away text ;; properties in the string (let ((len (1- (length incl)))) - (if (eq (aref incl len) directory-sep-char) + (if (eq (aref incl len) ?/) (setq incl (substring incl 0 len))) (when excl (setq len (1- (length excl))) - (if (eq (aref excl len) directory-sep-char) + (if (eq (aref excl len) ?/) (setq excl (substring excl 0 len))))) (setq incl (eshell-glob-regexp incl) excl (and excl (eshell-glob-regexp excl))) @@ -330,7 +327,7 @@ (while entries (setq name (car entries) len (length name) - isdir (eq (aref name (1- len)) directory-sep-char)) + isdir (eq (aref name (1- len)) ?/)) (if (let ((fname (directory-file-name name))) (and (not (and excl (string-match excl fname))) (string-match incl fname))) @@ -357,4 +354,5 @@ (eshell-glob-entries (car rdirs) globs recurse-p) (setq rdirs (cdr rdirs))))) +;;; arch-tag: d0548f54-fb7c-4978-a88e-f7c26f7f68ca ;;; em-glob.el ends here