zsh-workers
 help / color / mirror / code / Atom feed
From: Oliver Kiddle <okiddle@yahoo.co.uk>
To: zsh-workers@zsh.org
Subject: Re: accept-and-hold in interactive mode of menu select
Date: Tue, 16 Dec 2014 20:11:40 +0100	[thread overview]
Message-ID: <10372.1418757100@thecus.kiddle.eu> (raw)
In-Reply-To: <141216084537.ZM18852@torch.brasslantern.com>

Bart wrote:
> 
> I'm not entirely sure that's wrong; accept means to accept what is on the
> command line, not to accept what is highlighted in the menu.  You have to
> finish the action of choosing one of the menu items so that the command
> line is updated, before you accept.

No, with menu selection many widgets have quite different behaviour. The
documented behaviour of accept-and-hold is to insert the currently
selected match but keep the menu active so that you can select another
match. accept-line-and-down-history does the same but doesn't seem to be
documented. It's a useful feature.

Coopting existing widgets in this way allows existing key bindings to
automatically pick up related behaviour but it does mean that they
aren't quite doing what their name would imply.

In a separate thread Bart recently wrote:
> I hadn't seen auto-fu before but it appears to be a rewrite of the old
> incremental-complete-word functions.  I'm mildly surprised to see that
> it's using the keymap+widget technique, I didn't think anyone had even
> noticed that existed.

The keymap+widget technique is somewhat related. I was aware of it but
haven't applied it because it involves rebinding lots of core widgets.
A number of omz plugins rebind stuff en-masse and I suspect that's one
reason why people turn up on IRC wondering why things are broken when
they enable too many plugins.

At its basic level keymap+widget seems to just be a way to define the
behaviour of a widget for a particular keymap separately so you can have
one function for say ucase and another for say lcase and you can use one
without the other.

Perhaps a more generic mechanism would be to allow zle widget aliases to
be keymap specific. (Or possibly conditional on a selection of things
using zstyle as a backend.)

We could then make, e.g vi-up-line-or-history an explicit alias for a
new menuselect+prev-entry widget in the menuselect keymap.

For the too many omz plugins case, we'd need to somehow allow the
aliases to be chained so I'm not sure that this is a complete solution.

Oliver


  reply	other threads:[~2014-12-16 19:17 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-16 14:18 Jun T.
2014-12-16 16:45 ` Bart Schaefer
2014-12-16 19:11   ` Oliver Kiddle [this message]
2014-12-17  3:07     ` Bart Schaefer

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=10372.1418757100@thecus.kiddle.eu \
    --to=okiddle@yahoo.co.uk \
    --cc=zsh-workers@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).