From: Chong Yidong Date: Sun, 10 Apr 2011 21:31:14 +0000 (-0400) Subject: Fix bad interaction between icomplete and completion inline help (Bug#5849). X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~283^2~27 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=369e974dc086452033227a5d350c357602c6274e;p=emacs.git Fix bad interaction between icomplete and completion inline help (Bug#5849). * lisp/minibuffer.el (completion-show-inline-help): New var. (completion--do-completion, minibuffer-complete) (minibuffer-force-complete, minibuffer-complete-word): Inhibit minibuffer messages if completion-show-inline-help is nil. * lisp/icomplete.el (icomplete-mode): Bind completion-show-inline-help to avoid interference from inline help. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 51f8066077d..8de276b8480 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2011-04-10 Chong Yidong + + * minibuffer.el (completion-show-inline-help): New var. + (completion--do-completion, minibuffer-complete) + (minibuffer-force-complete, minibuffer-complete-word): Inhibit + minibuffer messages if completion-show-inline-help is nil. + + * icomplete.el (icomplete-mode): Bind completion-show-inline-help + to avoid interference from inline help (Bug#5849). + 2011-04-10 Leo Liu * emacs-lisp/tabulated-list.el (tabulated-list-print-entry): Fix diff --git a/lisp/icomplete.el b/lisp/icomplete.el index 490b2b2ebfc..ab67fcfcdfd 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -179,8 +179,11 @@ otherwise turn it off." (if icomplete-mode ;; The following is not really necessary after first time - ;; no great loss. - (add-hook 'minibuffer-setup-hook 'icomplete-minibuffer-setup) - (remove-hook 'minibuffer-setup-hook 'icomplete-minibuffer-setup))) + (progn + (setq completion-show-inline-help nil) + (add-hook 'minibuffer-setup-hook 'icomplete-minibuffer-setup)) + (remove-hook 'minibuffer-setup-hook 'icomplete-minibuffer-setup) + (setq completion-show-inline-help t))) ;;;_ > icomplete-simple-completing-p () (defun icomplete-simple-completing-p () diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 19084aad5d6..d6e11b5a7c5 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -381,6 +381,9 @@ If the current buffer is not a minibuffer, erase its entire contents." ;; is on, the field doesn't cover the entire minibuffer contents. (delete-region (minibuffer-prompt-end) (point-max))) +(defvar completion-show-inline-help t + "If non-nil, print helpful inline messages during completion.") + (defcustom completion-auto-help t "Non-nil means automatically provide help for invalid completion input. If the value is t the *Completion* buffer is displayed whenever completion @@ -568,8 +571,9 @@ E = after completion we now have an Exact match. (cond ((null comp) (minibuffer-hide-completions) - (unless completion-fail-discreetly - (ding) (minibuffer-message "No match")) + (when (and (not completion-fail-discreetly) completion-show-inline-help) + (ding) + (minibuffer-message "No match")) (minibuffer--bitset nil nil nil)) ((eq t comp) (minibuffer-hide-completions) @@ -639,9 +643,10 @@ E = after completion we now have an Exact match. (minibuffer-hide-completions)) ;; Show the completion table, if requested. ((not exact) - (if (case completion-auto-help - (lazy (eq this-command last-command)) - (t completion-auto-help)) + (if (cond ((null completion-show-inline-help) t) + ((eq completion-auto-help 'lazy) + (eq this-command last-command)) + (t completion-auto-help)) (minibuffer-completion-help) (minibuffer-message "Next char not unique"))) ;; If the last exact completion and this one were the same, it @@ -683,9 +688,11 @@ scroll the window of possible completions." t) (t (case (completion--do-completion) (#b000 nil) - (#b001 (minibuffer-message "Sole completion") + (#b001 (if completion-show-inline-help + (minibuffer-message "Sole completion")) t) - (#b011 (minibuffer-message "Complete, but not unique") + (#b011 (if completion-show-inline-help + (minibuffer-message "Complete, but not unique")) t) (t t))))) @@ -743,7 +750,9 @@ Repeated uses step through the possible completions." (end (field-end)) (all (completion-all-sorted-completions))) (if (not (consp all)) - (minibuffer-message (if all "No more completions" "No completions")) + (if completion-show-inline-help + (minibuffer-message + (if all "No more completions" "No completions"))) (setq completion-cycling t) (goto-char end) (insert (car all)) @@ -931,9 +940,11 @@ Return nil if there is no valid completion, else t." (interactive) (case (completion--do-completion 'completion--try-word-completion) (#b000 nil) - (#b001 (minibuffer-message "Sole completion") + (#b001 (if completion-show-inline-help + (minibuffer-message "Sole completion")) t) - (#b011 (minibuffer-message "Complete, but not unique") + (#b011 (if completion-show-inline-help + (minibuffer-message "Complete, but not unique")) t) (t t)))