From 888932153ba7b6984deef265e72d624ef9faaa92 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 14 Apr 2008 15:10:36 +0000 Subject: [PATCH] (completion-table-with-terminator): Those completions are never valid w.r.t test-completion. (completion--file-name-table): Check completion-all-completions-with-base-size. --- lisp/ChangeLog | 11 +++++++++-- lisp/minibuffer.el | 30 +++++++++++++++++++----------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ceec5796399..90090c66784 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2008-04-14 Stefan Monnier + + * minibuffer.el (completion-table-with-terminator): Those completions + are never valid w.r.t test-completion. + (completion--file-name-table): + Check completion-all-completions-with-base-size. + 2008-04-14 Tassilo Horn * doc-view.el (doc-view-dvipdf-program): New variable. @@ -7,8 +14,8 @@ (doc-view-dvi->pdf): Prefer dvipdf over dvipdfm. * doc-view.el (doc-view-start-process): Don't set - default-directory to "~/" if the current value is valid. This - broke PS files that run other files in the same directory. + default-directory to "~/" if the current value is valid. + This broke PS files that run other files in the same directory. 2008-04-14 Dan Nicolaescu diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 7baef47ba79..7429af3248d 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -131,14 +131,19 @@ You should give VAR a non-nil `risky-local-variable' property." (defun completion-table-with-terminator (terminator table string pred action) (let ((comp (complete-with-action action table string pred))) - (if (eq action nil) - (if (eq comp t) - (concat string terminator) - (if (and (stringp comp) - (eq (complete-with-action action table comp pred) t)) - (concat comp terminator) - comp)) - comp))) + (cond + ((eq action nil) + (if (eq comp t) + (concat string terminator) + (if (and (stringp comp) + (eq (complete-with-action action table comp pred) t)) + (concat comp terminator) + comp)) + comp) + ;; completion-table-with-terminator is always used for + ;; "sub-completions" so it's only called if the terminator is missing, + ;; in which case `test-completion' should return nil. + ((eq action 'lambda) nil)))) (defun completion-table-in-turn (&rest tables) "Create a completion table that tries each table in TABLES in turn." @@ -707,8 +712,11 @@ during running `completion-setup-hook'." (if (funcall pred tem) (push tem comp)))) (setq all (nreverse comp)))) - ;; Add base-size, but only if the list is non-empty. - (if (consp all) (nconc all base-size)))) + (if (and completion-all-completions-with-base-size (consp all)) + ;; Add base-size, but only if the list is non-empty. + (nconc all base-size)) + + all)) (t ;; Only other case actually used is ACTION = lambda. @@ -717,7 +725,7 @@ during running `completion-setup-hook'." (defalias 'read-file-name-internal (completion-table-in-turn 'completion--embedded-envvar-table - 'completion--file-name-table) + 'completion--file-name-table) "Internal subroutine for `read-file-name'. Do not call this.") (provide 'minibuffer) -- 2.11.4.GIT