X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/1259009aa17da6dc038afff96963f6d9bbd3b8e1..dd92b5f5047931f6020045ce47360b62d1c2cb72:/lisp/eshell/em-glob.el diff --git a/lisp/eshell/em-glob.el b/lisp/eshell/em-glob.el index 623d2c8e19..b06804e069 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-2012 Free Software Foundation, Inc. +;; Copyright (C) 1999-2016 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: @@ -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: @@ -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,8 +193,8 @@ 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 - | \| boolean OR within an 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." @@ -286,7 +289,7 @@ the form: glob (car globs) len (length glob))))) (if (and recurse-p (not glob)) - (error "'**' cannot end a globbing pattern")) + (error "`**' cannot end a globbing pattern")) (let ((index 1)) (setq incl glob) (while (and (eq incl glob)