]> git.eshelyaron.com Git - emacs.git/commitdiff
completion-auto-help new values.
authorJimmy Aguilar Mena <spacibba@aol.com>
Thu, 10 Mar 2022 10:24:17 +0000 (11:24 +0100)
committerJimmy Aguilar Mena <spacibba@aol.com>
Thu, 10 Mar 2022 13:37:40 +0000 (14:37 +0100)
Added also entries to news and manual

doc/emacs/mini.texi
etc/NEWS
lisp/minibuffer.el

index 13d9269c68e2131d7e62dc42e72ade47ab035047..5d351dd10b6588f6868f285dc16349069a753d13 100644 (file)
@@ -628,7 +628,14 @@ commands never display the completion list buffer; you must type
 shows the completion list buffer on the second attempt to complete.
 In other words, if there is nothing to complete, the first @key{TAB}
 echoes @samp{Next char not unique}; the second @key{TAB} shows the
-completion list buffer.
+completion list buffer.  With the previous values and the default
+@code{t} the completions are hidden when some unique completion is
+executed.  If @code{completion-auto-help} is set to @code{always} the
+completion commands are always shown after a completion attempt or
+updated if they are already visible. If the value is @code{visible}
+then completions are not hidden, but updated if they are already
+visible while the current behavior stays the same as default if they
+are not.
 
 @vindex completion-cycle-threshold
   If @code{completion-cycle-threshold} is non-@code{nil}, completion
index 80cf0a2f72571e44369694be67101cf535e69f31..3d325133861bfa56d9a16cbd9b234b470afd2424 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -554,6 +554,15 @@ This option controls the sorting of the completion candidates in
 the "*Completions*" buffer.  Available styles are no sorting,
 alphabetical (the default), or a custom sort function.
 
+*** New values for the 'completion-auto-select' option.
+
+There are two new values to control the way *Completions* behave after
+a <tab> if completion is not unique.  'always updates or shows
+the *Completions* buffer after any attempt to complete.  'visual is
+like 'always, but only update the completions if they are already
+visible.  The default value t always hide the completion buffer after
+some completion is made.
+
 ** Isearch and Replace
 
 +++
index 36b8d808417e355bfa9b9836debd5eb8fe868cf8..c6a803cbc44bb995414802d1f2b0a0e1c0e928ec 100644 (file)
@@ -898,7 +898,11 @@ If the value is t the *Completions* buffer is displayed whenever completion
 is requested but cannot be done.
 If the value is `lazy', the *Completions* buffer is only displayed after
 the second failed attempt to complete."
-  :type '(choice (const nil) (const t) (const lazy)))
+  :type '(choice (const :tag "Disabled" nil)
+                 (const :tag "Enabled legacy" t)
+                 (const :tag "After a second attempt" lazy)
+                 (const :tag "Visible update" visible)
+                 (const :tag "Always update" always)))
 
 (defvar completion-styles-alist
   '((emacs21
@@ -1343,16 +1347,19 @@ when the buffer's text is already an exact match."
               (completion--cache-all-sorted-completions beg end comps)
               (minibuffer-force-complete beg end))
              (completed
-              ;; We could also decide to refresh the completions,
-              ;; if they're displayed (and assuming there are
-              ;; completions left).
-              (minibuffer-hide-completions)
-              (if exact
-                  ;; If completion did not put point at end of field,
-                  ;; it's a sign that completion is not finished.
-                  (completion--done completion
-                                    (if (< comp-pos (length completion))
-                                        'exact 'unknown))))
+              (cond
+               (exact
+                ;; If completion did not put point at end of field,
+                ;; it's a sign that completion is not finished.
+                (minibuffer-hide-completions)
+                (completion--done completion
+                                  (if (< comp-pos (length completion))
+                                      'exact 'unknown)))
+               ((pcase completion-auto-help
+                  ('visible (get-buffer-window "*Completions*" 0))
+                  ('always t))
+                (minibuffer-completion-help beg end))
+               (t (minibuffer-hide-completions))))
              ;; Show the completion table, if requested.
              ((not exact)
              (if (pcase completion-auto-help