X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/3a35cf56e7c9951f6d99f54c65d7109654c854f0..56388398e7a1251497f002072c061002ec9d9e81:/lisp/eshell/em-glob.el diff --git a/lisp/eshell/em-glob.el b/lisp/eshell/em-glob.el index 3a53ded645..0676efa381 100644 --- a/lisp/eshell/em-glob.el +++ b/lisp/eshell/em-glob.el @@ -1,6 +1,7 @@ ;;; em-glob.el --- extended file name globbing -;; Copyright (C) 1999, 2000 Free Software Foundation +;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ;; Author: John Wiegley @@ -8,7 +9,7 @@ ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) +;; the Free Software Foundation; either version 3, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, @@ -21,19 +22,6 @@ ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. -;;; Code: - -(provide 'em-glob) - -(eval-when-compile (require 'esh-maint)) -(require 'esh-util) - -(defgroup eshell-glob nil - "This module provides extended globbing syntax, similar what is used -by zsh for filename generation." - :tag "Extended filename globbing" - :group 'eshell-module) - ;;; Commentary: ;; The globbing code used by Eshell closely follows the syntax used by @@ -62,6 +50,17 @@ by zsh for filename generation." ;; owned by the user 'johnw'. See [Value modifiers and predicates], ;; for more information about argument predication. +;;; Code: + +(eval-when-compile (require 'eshell)) +(require 'esh-util) + +(defgroup eshell-glob nil + "This module provides extended globbing syntax, similar what is used +by zsh for filename generation." + :tag "Extended filename globbing" + :group 'eshell-module) + ;;; User Variables: (defcustom eshell-glob-load-hook '(eshell-glob-initialize) @@ -96,7 +95,7 @@ This option slows down recursive glob processing by quite a bit." :type 'boolean :group 'eshell-glob) -(defcustom eshell-glob-chars-list '(?\] ?\[ ?* ?? ?~ ?\( ?\) ?| ?#) +(defcustom eshell-glob-chars-list '(?\] ?\[ ?* ?? ?~ ?\( ?\) ?| ?# ?^) "*List of additional characters used in extended globbing." :type '(repeat character) :group 'eshell-glob) @@ -104,6 +103,7 @@ This option slows down recursive glob processing by quite a bit." (defcustom eshell-glob-translate-alist '((?\] . "]") (?\[ . "[") + (?^ . "^") (?? . ".") (?* . ".*") (?~ . "~") @@ -256,7 +256,7 @@ the form: (eshell-glob-entries (file-name-as-directory ".") paths)) (if message-shown (message nil))) - (or (and matches (nreverse matches)) + (or (and matches (sort matches #'string<)) (if eshell-error-if-no-glob (error "No matches found: %s" glob) glob)))) @@ -265,6 +265,7 @@ the form: (defvar matches) (defvar message-shown)) +;; FIXME does this really need to abuse matches, message-shown? (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 @@ -353,5 +354,7 @@ the form: (eshell-glob-entries (car rdirs) globs recurse-p) (setq rdirs (cdr rdirs))))) +(provide 'em-glob) + ;;; arch-tag: d0548f54-fb7c-4978-a88e-f7c26f7f68ca ;;; em-glob.el ends here