zsh-users
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: Frederick Eaton <frederik@ofb.net>
Cc: Zsh Users <zsh-users@zsh.org>
Subject: Re: completion autolist has time-sensitive interface
Date: Wed, 15 Aug 2018 10:54:56 -0700	[thread overview]
Message-ID: <CAH+w=7Z_swkvkJv97F0ULmzvZsDk-FZUSXNeSuV1bwa_Y44ofA@mail.gmail.com> (raw)
In-Reply-To: <20180815155700.GD30438@ofb.net>

On Tue, Aug 14, 2018 at 10:49 PM,  <frederik@ofb.net> wrote:
> Dear Zsh Hackers,
>
> Sometimes completion is so laggy on my system that when I press TAB
> after e.g. "man perl", nothing seems to happen. So I press it again.
> Still nothing happens. Completion seems broken.
>
> What happens is that if I just press TAB once, e.g. after "man perl",
> there is a one-second delay and a prompt "zsh: do you wish to see all
> 201 possibilities (51 lines)?". At this point I can press TAB again,
> which is equivalent to "y" I guess, and I see a list of completions.

The delay is almost certainly the time required to generate the 201
possibilities rather than any "intentional" pause that zsh is doing.

Yes, at that particular prompt TAB and y/Y are equivalent, also ctrl-C
and ctrl-D (eof) and n/N are equivalent.

But there's more going on than that.  Before displaying the prompt,
zsh checks to see whether you have already typed something else
(typeahead) and if you have, it assumes you decided to disambiguate
the input further, so it skips printing the prompt and proceeds as if
you had answered "n".  So by pressing the second TAB while zsh is
still working on the set of completion for the menu, you have told the
shell you don't want to wait for the menu and it should simply
proceed.

> However, if I press TAB twice quickly in succession then I see no
> list, it is exactly as if there are no completions at all. (Actually
> if the prompt is at the bottom of the screen, I get a newline)

The faster you press the two TABs, the more likely you are to trigger
the typeahead detection.

> I find
> it confusing that the completion interface would be time-sensitive in
> this manner. Why TAB-delay-TAB would behave differently from TAB-TAB.

Back in the day, a lot of people would automatically muscle-memory
whack the tab key after typing part of a word, realize they didn't
mean to, and keep typing more of the word.  They were annoyed when the
shell ate part of their continued typing as the answer to the prompt,
leaving them with a word with one missing letter in the middle, so the
shell was changed to not do that.  This is also why pressing a second
TAB when the prompt does appear is treated as yes.


  reply	other threads:[~2018-08-15 17:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20180815061554epcas3p4806e2cb2444ee67f4cb404ed2957a750@epcas3p4.samsung.com>
     [not found] ` <20180815054958.GA27844@ofb.net>
     [not found]   ` <20180815083359eucas1p157426370c46cd6d59b96b8964f0445ce~LAcQObm1u2570325703eucas1p1b@eucas1p1.samsung.com>
2018-08-15 15:57     ` frederik
2018-08-15 17:54       ` Bart Schaefer [this message]
2018-08-16  1:45         ` frederik
2018-08-16  3:55           ` Eric Cook
2018-08-16 12:05             ` frederik

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

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

  git send-email \
    --in-reply-to='CAH+w=7Z_swkvkJv97F0ULmzvZsDk-FZUSXNeSuV1bwa_Y44ofA@mail.gmail.com' \
    --to=schaefer@brasslantern.com \
    --cc=frederik@ofb.net \
    --cc=zsh-users@zsh.org \
    /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.vuxu.org/mirror/zsh/

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 NNTP newsgroup(s).