zsh-users
 help / color / mirror / code / Atom feed
From: DervishD <raul@pleyades.net>
To: Zsh Users <zsh-users@sunsite.dk>
Subject: Re: Interactive program in Zsh
Date: Thu, 10 Jun 2004 19:21:36 +0200	[thread overview]
Message-ID: <20040610172136.GC674@DervishD> (raw)
In-Reply-To: <Pine.LNX.4.44.0406100808140.7158-100000@toltec.zanshin.com>

    Hi Bart :)

 * Bart Schaefer <schaefer@brasslantern.com> dixit:
> >     I don't know if this is the proper approach for what I need to
> > do: the user is limited to use up arrow and down arrow for travelling
> > into the list of options (maybe pg-up and pg-down for scrolling) and
> > 'enter' to select the highlighted option. The program must process a
> > text, present a list of options containing the text that matched
> > certain regex and allow the user to choose one of the options.
> I would say the canonical way to do this is using a "select x in ..."  
> loop -- "select" already being clever enough these days to paginate its
> list of choices -- but that doesn't allow the user to scroll up and down
> with arrow keys.  (I think that's only because the history is disabled,
> as it uses the default keymaps.)

    And doesn't let me implement the navigation... I mean, I can use
'select', no problem, and that will do since it will present me the
list of choices, but I would like to do the navigation too, and
selects doesn't allow me to do that, since it reads from the keyboard
and does it's own output formatting (not configurable AFAIK).

> Or you could stuff the list of options into the history with "print -s"  
> and then use "vared -h" to let the user choose one, but then they aren't
> actually navigating through the list, just displaying them each in turn.
> Maybe that would be good enough, combined with first printing out the
> entire list, except then you run into pagination issues.  You'll have to
> play with key bindings to keep the user from modifying the choices --
> that'd be easier in recent zsh that let you redefine the whole keymap.

    Nice, but very complex if I need to modify the whole keymap. For
me would be easy to do the 'print -s', but instead of the list I will
print into the history the command to run the chosen option followed
by each option. Something like:

    command option1 
    command option2
    ...

    Don't know, very... ugly.
 
> Also in 4.2.x you might be able to do something with zle-line-init to
> start up one of the widgets (previously posted) that invoke menu selection
> on the history, which would then be pretty nearly what you asked for.

    That would be nice, too, but limited to zsh 4.2.x No problem for
me, but I would like to have this running at least in 4.0.x too.

    Anyway, I think I will use the 'select' way (I will rarely need
more than 20-30 options, and 'select' fills the lines beautifully) or
maybe I will try my first solution, using the key codes or bindkey to
get the mappings. The problem with that last solution is the speed:
slow and weird screen refreshing, etc. In addition to this, 'read -k',
when used with keys that generates multiple characters (an escape
sequence, for example), will read each character separately, so I
must assemble the individual chars and process the result. Very
complex...

    BTW, what I want to do is something like urlview, but with
multiple regexes each handled by a different handler. Currently it
can be done (but in a very ugly way) using a very BIG regex and using
url_handler.sh to do the discrimination, or maybe with multiple
configuration files, etc. Or even rewriting it (which I certainly
won't do!). But the point is that I would like to do with zsh just
for the sake of it, because I want, for learning O:)

    Thanks a lot for your help :) I'll try the 'select' way, for now.

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736
http://www.pleyades.net & http://raul.pleyades.net/


  reply	other threads:[~2004-06-10 17:23 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-09 14:32 DervishD
2004-06-09 14:44 ` Pierre HABOUZIT
2004-06-09 14:52   ` DervishD
2004-06-10 15:37 ` Bart Schaefer
2004-06-10 17:21   ` DervishD [this message]
2004-06-11  6:19     ` Bart Schaefer
2004-06-11  9:38       ` Peter Stephenson
2004-06-11  9:41       ` DervishD

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=20040610172136.GC674@DervishD \
    --to=raul@pleyades.net \
    --cc=zsh-users@sunsite.dk \
    /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).