X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/ab5796a9f97180707734a81320e3eb81937281fe..27422a9d8a01ea0658d689be824936674bb20d6e:/lisp/complete.el diff --git a/lisp/complete.el b/lisp/complete.el index 567e0fee10..d3ff6c5398 100644 --- a/lisp/complete.el +++ b/lisp/complete.el @@ -1,7 +1,7 @@ ;;; complete.el --- partial completion mechanism plus other goodies -;; Copyright (C) 1990, 1991, 1992, 1993, 1999, 2000 -;; Free Software Foundation, Inc. +;; Copyright (C) 1990, 1991, 1992, 1993, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. ;; Author: Dave Gillespie ;; Keywords: abbrev convenience @@ -21,8 +21,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. ;;; Commentary: @@ -118,7 +118,7 @@ Some arcane rules: If `]' is in this string, it must come first. If `^' is in this string, it must not come first. If `-' is in this string, it must come first or right after `]'. -In other words, if S is this string, then `[S]' must be a legal Emacs regular +In other words, if S is this string, then `[S]' must be a valid Emacs regular expression (not containing character ranges like `a-z')." :type 'string :group 'partial-completion) @@ -368,7 +368,7 @@ of `minibuffer-completion-table' and the minibuffer contents.") ;; Check if buffer contents can already be considered complete (if (and (eq mode 'exit) - (PC-is-complete-p str table pred)) + (test-completion str table pred)) 'complete ;; Do substitutions in directory names @@ -394,7 +394,9 @@ of `minibuffer-completion-table' and the minibuffer contents.") ;; Add wildcards if necessary (and filename (let ((dir (file-name-directory str)) - (file (file-name-nondirectory str))) + (file (file-name-nondirectory str)) + ;; The base dir for file-completion is passed in `predicate'. + (default-directory (expand-file-name pred))) (while (and (stringp dir) (not (file-directory-p dir))) (setq dir (directory-file-name dir)) (setq file (concat (replace-regexp-in-string @@ -408,6 +410,8 @@ of `minibuffer-completion-table' and the minibuffer contents.") (and filename (string-match "\\*.*/" str) (let ((pat str) + ;; The base dir for file-completion is passed in `predicate'. + (default-directory (expand-file-name pred)) files) (setq p (1+ (string-match "/[^/]*\\'" pat))) (while (setq p (string-match PC-delim-regex pat p)) @@ -637,7 +641,7 @@ of `minibuffer-completion-table' and the minibuffer contents.") (if improved ;; We changed it... would it be complete without the space? - (if (PC-is-complete-p (buffer-substring 1 (1- end)) + (if (test-completion (buffer-substring 1 (1- end)) table pred) (delete-region (1- end) end))) @@ -645,7 +649,7 @@ of `minibuffer-completion-table' and the minibuffer contents.") ;; We changed it... enough to be complete? (and (eq mode 'exit) - (PC-is-complete-p (field-string) table pred)) + (test-completion (field-string) table pred)) ;; If totally ambiguous, display a list of completions (if (or (eq completion-auto-help t) @@ -676,20 +680,6 @@ of `minibuffer-completion-table' and the minibuffer contents.") (car poss))))) t))))) - -(defun PC-is-complete-p (str table pred) - (let ((res (if (listp table) - (assoc str table) - (if (vectorp table) - (or (equal str "nil") ; heh, heh, heh - (intern-soft str table)) - (funcall table str pred 'lambda))))) - (and res - (or (not pred) - (and (not (listp table)) (not (vectorp table))) - (funcall pred res)) - res))) - (defun PC-chop-word (new old) (let ((i -1) (j -1)) @@ -947,12 +937,11 @@ absolute rather than relative to some directory on the SEARCH-PATH." ((not completion-table) nil) ((eq action nil) (try-completion str2 completion-table nil)) ((eq action t) (all-completions str2 completion-table nil)) - ((eq action 'lambda) - (eq (try-completion str2 completion-table nil) t)))) + ((eq action 'lambda) (test-completion str2 completion-table nil)))) (funcall PC-old-read-file-name-internal string dir action))) (provide 'complete) -;;; arch-tag: fc7e2768-ff44-4e22-b579-4d825b968458 +;; arch-tag: fc7e2768-ff44-4e22-b579-4d825b968458 ;;; complete.el ends here