unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Drew Adams" <drew.adams@oracle.com>
Subject: RE: completion-auto-help
Date: Fri, 11 Nov 2005 09:47:45 -0800	[thread overview]
Message-ID: <DNEMKBNJBGPAOPIJOOICMEKHCOAA.drew.adams@oracle.com> (raw)
In-Reply-To: <87lkzvpz2s.fsf-monnier+emacs@gnu.org>

    complete.el extends the meaning of the variable so that a non-nil non-t
    value means "show the help but only on the second attempt to complete".
    I.e. if TAB finds nothing to complete, the first TAB will just
    say "[Next
    char not unique]" without bringing up the *Completions* buffer, and the
    second TAB will then bring up the *Completions* buffer.
    It happens to be my favorite behavior.

Thanks. I knew about that behavior, but I couldn't make out the related use
of completion-auto-help.

I still don't see it in complete.el (it is only tested there, never bound),
and I don't see it in C code either. Where is `completion-auto-help's
non-nil, non-t value bound?

If it is only a user who sets such a value, then shouldn't the non-nil,
non-t behavior be documented for the user option? I don't see that, as I
mentioned.

    > 2. New feature proposal - How about allowing for an
    > "always-display-*Completions*' behavior:

    >  - t means what it means now
    >  - nil means what it means now
    >  - other means this:

    We could have

       t = what it means now
       nil = what it means now
       eager = what you suggest (always show the completions and update them
                                 after each key stroke)
       lazy = what complete.el does for non-nil non-t values

Good.

    > IOW, with this value, the user would not need to hit `TAB' to display
    > *Completions*. (S)he would see the list of completions
    whenever there are
    > more than one. There is currently no way to make `completing-read',
    > `read-file-name' etc. display *Completions* from the outset.

    Indeed.  The closest is icomplete-mode.

Yes, in fact, I implement this behavior with regexp matching in Icicles,
where I refer to it, by analogy, as "apropos icompletion" ("apropos" because
it uses a regexp, "icompletion" because it is incremental completion). That
was one of the motivations for this request: I currently have no way to
display the candidates right from the beginning - a user must first request
the display (via, e.g., `TAB').

I proposed `eager' _without_ the automatic update after each keystroke, in
order to allow that as an additional (separate) option. I think that would
be better. Some people (or some functions) might like to display the list of
candidates right from the beginning, as a kind of menu, but prefer to update
it only upon demand (via `TAB'), not automatically at each keystroke. Some
people might find the automatic list updating to be distracting (I find it
very helpful, personally).

IOW, I think we should separate the control of when to display of
*Completions* from the control of whether or not to automatically update it.
The difference only makes sense, probably, for the `eager' value, so we
could just have two values instead of one: `eager-with-auto-update' and
`eager-without-auto-update'.

My implementation of this kind of incremental completion in Icicles uses an
option that is checked in the special self-insert I use. The option values:

 non-nil means update *Completions* incrementally, as you type.
  t means do nothing if *Completions* is not already displayed.
  non-nil and non-t means display *Completions* and update it.

So, for instance, non-nil, non-t causes character insertion to display
*Completions*. That does not take care of displaying it, however, right from
the beginning, which is why I made this request. The special self-insert
gets called inside `completing-read', upon insertion, but I see no way to
get `completing-read' to display *Completions* without any user action.

  reply	other threads:[~2005-11-11 17:47 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-11-11  1:30 completion-auto-help Drew Adams
2005-11-11  4:55 ` completion-auto-help Stefan Monnier
2005-11-11 17:47   ` Drew Adams [this message]
2005-11-11 18:39     ` completion-auto-help Drew Adams
2005-11-11 19:10     ` completion-auto-help Stefan Monnier
2005-11-11 19:32       ` completion-auto-help Drew Adams
2005-11-11 21:53         ` completion-auto-help Drew Adams
2005-11-11 22:43           ` completion-auto-help Drew Adams
2005-11-13 20:42             ` completion-auto-help Stefan Monnier
2005-11-13 21:06               ` completion-auto-help Drew Adams
2005-11-13 23:09                 ` completion-auto-help Stefan Monnier
2005-11-13 23:40                   ` completion-auto-help Drew Adams
2005-11-19 12:10       ` completion-auto-help Eli Zaretskii
2005-11-20 23:23         ` completion-auto-help Richard M. Stallman
2005-11-26 11:20           ` completion-auto-help Eli Zaretskii
2005-11-12  3:38   ` completion-auto-help Richard M. Stallman

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=DNEMKBNJBGPAOPIJOOICMEKHCOAA.drew.adams@oracle.com \
    --to=drew.adams@oracle.com \
    /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).