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.
This commit is contained in:
Chong Yidong 2011-04-10 17:31:14 -04:00
parent 8a2cbd723c
commit 369e974dc0
3 changed files with 36 additions and 12 deletions

View file

@ -1,3 +1,13 @@
2011-04-10 Chong Yidong <cyd@stupidchicken.com>
* 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 <sdl.web@gmail.com>
* emacs-lisp/tabulated-list.el (tabulated-list-print-entry): Fix

View file

@ -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 ()

View file

@ -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)))