diff options
Diffstat (limited to 'lisp/complete.el')
-rw-r--r-- | lisp/complete.el | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/lisp/complete.el b/lisp/complete.el index 4f223365202..d3c5de459d5 100644 --- a/lisp/complete.el +++ b/lisp/complete.el @@ -1,6 +1,6 @@ ;;; complete.el --- partial completion mechanism plus other goodies -;; Copyright (C) 1990, 1991, 1992, 1993, 1999, 2000 +;; Copyright (C) 1990, 1991, 1992, 1993, 1999, 2000, 2003 ;; Free Software Foundation, Inc. ;; Author: Dave Gillespie <daveg@synaptics.com> @@ -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)) @@ -954,4 +944,5 @@ absolute rather than relative to some directory on the SEARCH-PATH." (provide 'complete) +;;; arch-tag: fc7e2768-ff44-4e22-b579-4d825b968458 ;;; complete.el ends here |