zsh-users
 help / color / mirror / code / Atom feed
From: Peter Stephenson <p.w.stephenson@ntlworld.com>
To: Zsh-Users List <zsh-users@zsh.org>
Subject: Re: Fish-like autosuggestions
Date: Wed, 6 Nov 2013 20:07:15 +0000	[thread overview]
Message-ID: <20131106200715.6e549a6e@pws-pc.ntlworld.com> (raw)
In-Reply-To: <131105124000.ZM18277@torch.brasslantern.com>

On Tue, 05 Nov 2013 12:40:00 -0800
Bart Schaefer <schaefer@brasslantern.com> wrote:
> On Nov 5, 11:46am, Bart Schaefer wrote:
> }
> } ... a single predefined widget name that is called at that point ...
> } 
> } Hmm, the doc doesn't actually explain what the return value from a -F
> } handler means to the surrounding code.  There should probably be some
> } sort of return-code-based protocol to indicate whether handling should
> } proceed, which makes me lean away from the "instead" option but still
> } doesn't resolve before/after for me.

It doesn't mean anything: it doesn't make sense for a function
listening for one file descriptor to cause aborting of a function or
widget associated with a different descriptor.  I'd suggest simply we
have either a widget or a normal function for each descriptor and the
problem goes away.  It doesn't make sense to process input from the file
descriptor twice so assigning two processor entities should just be an
error.

> A bit more examination leads me to feel that running the zle -F handler
> first, and then skipping the widget ("zle-tcp-handler" ?) if the -F
> function returns nonzero, is probably the most sensible way to go, both
> for backward compatibility and because it's harder to interpret the
> "failure" of a widget.

You'll have to associate a widget with a file descriptor, so it'll need
to have a specific name --- we could use magic names like
zle-tcp-handler-<fd>, but that's a bit messy and doesn't make clear the
competition between reading the fd this way and the original way.  We
can't just use a generic widget because we don't know what file
descriptors we're listening on.  Listing file descriptors separately
from defining a widget loses both functionality and coherence --- if you
have multiple file descriptors there's no reason to suppose you want to
call the same widget for each, indeed there very likely to be doing
completely different tasks.  So I think the easiest thing is just
slightly augment the interface with an option to say the argument names
a widget rather than a function.  This also makes the implementation
easy: we just do something a little bit different based on a flag
associated with each string in the list.

pws


  reply	other threads:[~2013-11-06 20:07 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-29 17:52 Thiago Padilha
2013-10-30 16:25 ` Bart Schaefer
2013-11-04 19:30   ` Thiago Padilha
2013-11-05 15:57     ` Bart Schaefer
2013-11-05 16:18       ` Peter Stephenson
2013-11-05 19:46         ` Bart Schaefer
2013-11-05 20:40           ` Bart Schaefer
2013-11-06 20:07             ` Peter Stephenson [this message]
2013-11-07  0:04               ` Bart Schaefer
2013-11-07  9:44                 ` Peter Stephenson
2013-11-07 18:07                   ` Thiago Padilha
2013-11-07 18:12                     ` Peter Stephenson

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=20131106200715.6e549a6e@pws-pc.ntlworld.com \
    --to=p.w.stephenson@ntlworld.com \
    --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).