X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/b14e3e21ec6702d27257a1400681fc36ee10282f..875a5d0ead827d3da32ecbd30e739a29f07bbc87:/lisp/eshell/em-glob.el diff --git a/lisp/eshell/em-glob.el b/lisp/eshell/em-glob.el index 732c6c05bf..8abdd0058f 100644 --- a/lisp/eshell/em-glob.el +++ b/lisp/eshell/em-glob.el @@ -1,6 +1,6 @@ -;;; em-glob.el --- extended file name globbing +;;; em-glob.el --- extended file name globbing -*- lexical-binding:t -*- -;; Copyright (C) 1999-2011 Free Software Foundation, Inc. +;; Copyright (C) 1999-2015 Free Software Foundation, Inc. ;; Author: John Wiegley @@ -49,15 +49,16 @@ ;;; Code: -(eval-when-compile (require 'eshell)) (require 'esh-util) +(eval-when-compile (require 'eshell)) ;;;###autoload -(eshell-defgroup eshell-glob nil +(progn +(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) + :group 'eshell-module)) ;;; User Variables: @@ -90,7 +91,7 @@ This option slows down recursive glob processing by quite a bit." (defcustom eshell-error-if-no-glob nil "If non-nil, it is an error for a glob pattern not to match. - This mimcs the behavior of zsh if non-nil, but bash if nil." + This mimics the behavior of zsh if non-nil, but bash if nil." :type 'boolean :group 'eshell-glob) @@ -118,7 +119,8 @@ This option slows down recursive glob processing by quite a bit." "*" "+")) (+ pos 2)) (cons "*" (1+ pos)))))) "An alist for translation of extended globbing characters." - :type '(repeat (cons character (choice regexp function))) + :type '(alist :key-type character + :value-type (choice string function)) :group 'eshell-glob) ;;; Functions: @@ -148,10 +150,10 @@ This option slows down recursive glob processing by quite a bit." ;; if this is a glob pattern than needs to be expanded, then it ;; will need to expand each member of the resulting glob list (add-to-list 'eshell-current-modifiers - '(lambda (list) - (if (listp list) - (mapcar 'expand-file-name list) - (expand-file-name list))))) + (lambda (list) + (if (listp list) + (mapcar 'expand-file-name list) + (expand-file-name list))))) (add-to-list 'eshell-current-modifiers 'eshell-extended-glob)) (defun eshell-parse-glob-chars () @@ -178,6 +180,8 @@ interpretation." (goto-char (1+ end)))))))))) (defvar eshell-glob-chars-regexp nil) +(defvar eshell-glob-matches) +(defvar message-shown) (defun eshell-glob-regexp (pattern) "Convert glob-pattern PATTERN to a regular expression. @@ -189,7 +193,7 @@ The basic syntax is: * .* matches any group of characters (or none) # * matches zero or more occurrences of preceding ## + matches one or more occurrences of preceding - (x) \(x\) makes 'x' a regular expression group + (x) \(x\) makes ‘x’ a regular expression group | \| boolean OR within an expression group [a-b] [a-b] matches a character or range [^a] [^a] excludes a character or range @@ -216,7 +220,7 @@ resulting regular expression." matched-in-pattern (1+ op-begin)) (let ((xlat (assq op-char eshell-glob-translate-alist))) (if (not xlat) - (error "Unrecognized globbing character '%c'" op-char) + (error "Unrecognized globbing character ‘%c’" op-char) (if (stringp (cdr xlat)) (setq regexp (concat regexp (cdr xlat)) matched-in-pattern (1+ op-begin)) @@ -228,6 +232,8 @@ resulting regular expression." (regexp-quote (substring pattern matched-in-pattern)) "\\'"))) +(defvar ange-cache) ; XEmacs? See esh-util + (defun eshell-extended-glob (glob) "Return a list of files generated from GLOB, perhaps looking for DIRS-ONLY. This function almost fully supports zsh style filename generation @@ -260,9 +266,6 @@ the form: (error "No matches found: %s" glob) glob)))) -(defvar eshell-glob-matches) -(defvar message-shown) - ;; FIXME does this really need to abuse eshell-glob-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."