unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Ergus <spacibba@aol.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
Subject: Re: Question about completion behavior
Date: Wed, 9 Mar 2022 12:46:54 +0100	[thread overview]
Message-ID: <20220309114654.zq3h3u47btmt7q2u@Ergus> (raw)
In-Reply-To: <20220309101159.4k3uma2ztvldlqiz@Ergus>

[-- Attachment #1: Type: text/plain, Size: 1626 bytes --]

Hi again Eli:

Look at the attached patch, it may need some small improve to solve the
case 4. but so far it gives a consistent behavior with any value of
completion-auto-help (and it is actually simpler than the current code)

Alternatively we may add another custom, something like:

completions-on-complete-action which may have 3 possible values:

'always to update
'hide for the current behavior
nil to do nothing (not hide the completions but keep them visible)

WDYT? (personally I prefer the simpler... but I know... it's emacs)
Ergus

On Wed, Mar 09, 2022 at 11:11:59AM +0100, Ergus wrote:
>On Wed, Mar 09, 2022 at 05:37:37AM +0200, Eli Zaretskii wrote:
>
>Hi Eli:
>
>Thanks for replying. What do you mean by "at a complete"?
>
>there are several conditions to handle:
>
>These are the current more or less the conditions we have now:
>
>1. no unique        (shows or update completions)
>2. unique common    (complete-common and hides completion)
>3. unique candidate (complete and hides completion)
>4. unique common but completion is a valid entry (complete-common and hides completion)
>
>Is the 4 to what you refer?
>
>For example when we have:
>
>magit
>magit-commit
>magit-push
>....
>
>and we do: magi<tab>
>
>the completion goes up to magit (adds the t) but it is a valid
>candidate.
>
>What I propose is:
>
>1. no unique        (shows or update completions)
>2. unique common    (complete-common and UPDATE completions)
>3. unique candidate (complete and hides completion)
>4. unique common but completion is a valid entry (complete-common and hides completion)
>
>Is this behavior fine??
>
>Best,
>Ergus
>

[-- Attachment #2: completion.patch --]
[-- Type: text/plain, Size: 1973 bytes --]

diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index a06986fdb7..fbb72f3d32 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1342,24 +1342,22 @@ completion--do-completion
               (setq completed t exact t)
               (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))))
              ;; Show the completion table, if requested.
              ((not exact)
 	      (if (pcase completion-auto-help
                     ('lazy (eq this-command last-command))
                     (_ completion-auto-help))
                   (minibuffer-completion-help beg end)
+                (minibuffer-hide-completions)
                 (completion--message "Next char not unique")))
+             (completed
+              ;; We could also decide to refresh the completions,
+              ;; if they're displayed (and assuming there are
+              ;; completions left).
+              (minibuffer-hide-completions)
+              (completion--done completion
+                                (if (< comp-pos (length completion))
+                                    'exact 'unknown)))
              ;; If the last exact completion and this one were the same, it
              ;; means we've already given a "Complete, but not unique" message
              ;; and the user's hit TAB again, so now we give him help.

  reply	other threads:[~2022-03-09 11:46 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20220309001013.gxyh2uasbuxiz6ww.ref@Ergus>
2022-03-09  0:10 ` Question about completion behavior Ergus
2022-03-09  0:22   ` Stefan Monnier
2022-03-09  1:46     ` Ergus
2022-03-09  3:05       ` Stefan Monnier
2022-03-09  3:37         ` Eli Zaretskii
2022-03-09 10:11           ` Ergus
2022-03-09 11:46             ` Ergus [this message]
2022-03-09 13:16               ` Eli Zaretskii
2022-03-09 13:46                 ` Po Lu
2022-03-09 17:32                   ` Stefan Monnier
2022-03-09 17:41                     ` Ergus
2022-03-10  0:42                     ` Po Lu
2022-03-10 10:21                       ` Ergus
2022-03-10 11:15                         ` Po Lu
2022-03-10 14:03                           ` Ergus
2022-03-10 18:50                             ` Juri Linkov
2022-03-10 22:35                               ` Ergus
2022-03-12 18:31                                 ` Juri Linkov
2022-03-13 14:58                                   ` Ergus
2022-03-12  0:17                               ` Ergus
2022-03-12 18:34                                 ` Juri Linkov
2022-03-13 11:21                                   ` Ergus
2022-03-13 17:44                                     ` Juri Linkov
2022-03-13 18:50                                       ` Ergus
2022-03-13 18:57                                         ` Eli Zaretskii
2022-03-13 19:49                                           ` Ergus
2022-03-13 20:48                                       ` [External] : " Drew Adams
2022-03-13 21:15                                         ` Ergus
2022-03-13 23:14                                           ` Drew Adams
2022-03-13 23:38                                             ` Ergus
2022-03-14  2:23                                               ` Drew Adams
2022-03-12 20:25                             ` Drew Adams
2022-03-09 14:30                 ` Ergus
2022-03-09 16:14                   ` [PATCH] " Ergus
2022-03-09 16:56                   ` Eli Zaretskii
2022-03-09 13:10             ` Eli Zaretskii
2022-03-09 14:22               ` Ergus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220309114654.zq3h3u47btmt7q2u@Ergus \
    --to=spacibba@aol.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).