From: "Drew Adams" <drew.adams@oracle.com>
To: "Juri Linkov" <juri@jurta.org>
Cc: emacs-devel@gnu.org
Subject: RE: propose adding Icicles to Emacs
Date: Mon, 18 Jun 2007 16:31:50 -0700 [thread overview]
Message-ID: <EIENLHALHGIMHGDOLMIMIELEDCAA.drew.adams@oracle.com> (raw)
In-Reply-To: <87hcp5t2wr.fsf@jurta.org>
> >> Also there is another bug (I can't believe it's by design):
> >> after typing <C-next> the face description in the *Help* window
> >> goes out of sync with the face name highlighted in the
> >> *Completions* window and displayed in the minibuffer (e.g.
> >> when the current selected completion is `bold-italic',
> >> the *Help* window displays the description of the previous
> >> face `bold').
> >
> > No, this is the normal behavior of `C-next'. When you hit
> > `C-next', it acts on the _current_ completion candidate and
> > _then_ moves to the next one (so you can then act on it, in
> > turn). `C-next' is thus a shortcut for `C-RET'
> > (act on the current candidate) followed by `next' (make the
> > next candidate current).
>
> When I type `C-next' I expect it acting on the _next_ completion candidate
> (`next' + `C-RET'). When I want it acting on the _current_
> completion candidate, I can simply type `C-RET'.
Well, what can I say? That's what you expect and that's not what you get. We
disagree. Like I said, I first implemented it the way you think you would
prefer it, I corrected that design a long time afterward, and even though I
was already used to the previous behavior I preferred the new behavior - and
I still do.
> It is a pity that you changed your original design. Displaying the result
> of action applied to the previous completion candidate with the name of
> the next completion candidate highlighted in the *Completions* window is
> as confusing as for instance if you typed `next-error' and see
> the previous match in the source buffer with the next match highlighted
> in the grep/compilation buffer.
This is not `next-error'.
The current candidate for action (including help display) is not only
highlighted in *Completions* but also inserted in the minibuffer so that you
can edit it or accept it as is. That is, you hit RET or C-RET to act on the
current candidate, which is in the minibuffer.
What should be in the minibuffer after you do that? My answer: the next
available candidate, so that you can act on it, in turn (whether with
`C-RET', `RET', or `C-next'). You should not see, in the minibuffer or
highlighted in *Completions*, the candidate that you already acted on. The
minibuffer input after you act on a candidate has to be a different
candidate, if you are to be able to act on successive candidates. What you
see in the minibuffer should again, per standard Emacs behavior, be what
will be acted on if you hit RET (or C-RET).
This, however, does not dictate what `C-next' should do. I say it should
perform the defined action on the current candidate and then prepare the
next candidate for possible action. You say that it should do nothing to the
current candidate and should act directly on the next candidate. It could be
designed either way.
For me, the text that appears in the minibuffer as input should be the
target of any user action. For you, `C-next' should perform an action on
text that is not yet in the minibuffer, and it should show that text in the
minibuffer after the action. With my approach, `C-next' followed by `C-RET'
or `RET' acts on two successive candidates. For you, it acts twice on the
same candidate. Likewise, for `C-prior'. But either approach can be
supported.
With the behavior you propose, a user thinks of `C-next' as not acting on
the current candidate but as acting on the next candidate. OK. I prefer to
think of all actions, `C-RET', `C-next', `C-prior', `C-up', `C-down', as
acting on the same, current candidate. I think this simplifies the user's
mental model a bit. It simplifies thinking about actions, just as it
simplifies talking about them (e.g. doc).
But I can't argue that the behavior you want doesn't also correspond to a
coherent user model.
It is logical to expect to see the result of acting on a candidate only
after choosing that candidate. For me, the candidate that is ripe for
choosing with the keyboard is the one that is (a) highlighted in
*Completions* and (b) present in the minibuffer as your default input.
Choosing it acts on it, and you then see the result.
You would respond that you don't disagree with most of that (display the
result after choosing what to act on), but you think it is logical to
sometimes choose (act on) a candidate that is not the one in the minibuffer.
I cannot convince you, but I'd suggest that you not focalize only on
candidate help, where the action is displaying help on the current
candidate. "Act on" can mean anything, depending on the context, and I think
in most contexts the current behavior is preferable.
Anyway, we can go 'round the barn multiple times about this, without really
getting anywhere. I think it's time to agree to disagree. If you as an
Icicles user want to define your own command and bind it in place of
`icicle-next-apropos-candidate-action' to `C-next', it is trivial to do so.
Here is the complete definition:
(defun icicle-next-apropos-candidate-action (&optional nth)
"`icicle-candidate-action', then `icicle-next-apropos-candidate'.
Optional argument NTH is as for `icicle-next-apropos-candidate'."
(interactive)
(when (interactive-p) (icicle-barf-if-outside-minibuffer))
(icicle-successive-action #'icicle-next-apropos-candidate
#'icicle-candidate-action
nth))
So your definition would be this:
(defun JURI-next-apropos-candidate-action (&optional nth)
"`icicle-next-apropos-candidate', then `icicle-candidate-action'.
Optional argument NTH is as for `icicle-next-apropos-candidate'."
(interactive)
(when (interactive-p) (icicle-barf-if-outside-minibuffer))
(icicle-successive-action #'icicle-candidate-action
#'icicle-next-apropos-candidate
nth))
I have nothing fundamentally against such an approach; I just don't agree
that it is generally preferable. What we can do is ask people to try the
current approach for a while, and then revisit the question after that
trial. It is trivial to flip the behavior if we decide to change it.
I think I mentioned that I in fact employ the approach you prefer for the
particular case of `icicle-search', because the use case is somewhat
different. The *Help* display is a bit similar to search, so I cannot say
that you are 100% wrong about it: if help display were all that `C-next' is
about, you might convince me. But help is available all of the time, as a
secondary action, when the primary action is something else. And for that
primary action, at least, I think it is clearer if the user's simple mental
model of "do something to act on the current candidate" is reinforced by
`C-next', so that a user can think of `C-next' as an atomic action on the
current candidate, just as for `C-RET' and `RET'.
next prev parent reply other threads:[~2007-06-18 23:31 UTC|newest]
Thread overview: 212+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-26 0:19 [drew.adams@oracle.com: RE: cannot find :enable in Elisp manual index] Richard Stallman
2007-05-26 6:05 ` Eli Zaretskii
2007-05-29 4:01 ` [drew.adams@oracle.com: RE: cannot find :enable in Elisp manualindex] Drew Adams
2007-05-29 19:12 ` Eli Zaretskii
2007-05-29 20:05 ` Stephen Berman
2007-05-29 20:58 ` Eli Zaretskii
2007-05-29 21:20 ` Stephen Berman
2007-05-29 21:25 ` [drew.adams@oracle.com: RE: cannot find :enable in Elispmanualindex] Drew Adams
2007-05-29 21:03 ` [drew.adams@oracle.com: RE: cannot find :enable in Elisp manualindex] Drew Adams
2007-05-30 3:20 ` Eli Zaretskii
2007-05-30 4:43 ` Drew Adams
2007-05-30 5:26 ` [drew.adams@oracle.com: RE: cannot find :enable in Elispmanualindex] Drew Adams
2007-05-30 15:17 ` [drew.adams@oracle.com: RE: cannot find :enable in Elisp manualindex] Johan Bockgård
2007-05-30 23:09 ` Eli Zaretskii
2007-05-30 5:23 ` David Kastrup
2007-05-30 23:01 ` Eli Zaretskii
2007-05-30 23:14 ` Eli Zaretskii
2007-06-02 2:54 ` Richard Stallman
2007-06-02 9:18 ` Jason Rumney
2007-06-02 17:29 ` Richard Stallman
2007-06-02 10:12 ` Robert J. Chassell
2007-06-02 17:29 ` Richard Stallman
2007-06-02 23:47 ` Robert J. Chassell
2007-06-03 21:27 ` Richard Stallman
2007-06-02 10:18 ` Alan Mackenzie
2007-06-02 14:36 ` [drew.adams@oracle.com: RE: cannot find :enable in Elispmanualindex] Drew Adams
2007-06-02 17:26 ` [drew.adams@oracle.com: RE: cannot find :enable in Elisp manualindex] Eli Zaretskii
2007-06-02 23:47 ` Alan Mackenzie
2007-06-02 23:48 ` Jason Rumney
2007-06-02 17:29 ` Richard Stallman
2007-06-02 18:10 ` [drew.adams@oracle.com: RE: cannot find :enable in Elispmanualindex] Drew Adams
2007-06-03 21:27 ` Richard Stallman
2007-06-04 5:30 ` [drew.adams@oracle.com: RE: cannot find :enable inElispmanualindex] Drew Adams
2007-06-02 23:01 ` [drew.adams@oracle.com: RE: cannot find :enable in Elisp manualindex] Miles Bader
2007-06-03 0:00 ` Karl Berry
2007-06-03 21:27 ` Richard Stallman
2007-06-03 22:52 ` Juri Linkov
2007-06-03 23:55 ` [drew.adams@oracle.com: RE: cannot find :enable in Elispmanualindex] Drew Adams
2007-06-04 5:01 ` Richard Stallman
2007-06-04 5:42 ` [drew.adams@oracle.com: RE: cannot find :enable inElispmanualindex] Drew Adams
2007-06-04 23:20 ` Richard Stallman
2007-06-05 0:10 ` [drew.adams@oracle.com: RE: cannot find :enableinElispmanualindex] Drew Adams
2007-06-06 0:50 ` [drew.adams@oracle.com: RE: cannot find :enable in Elispmanualindex] Stefan Monnier
2007-06-06 2:12 ` Drew Adams
2007-06-06 12:26 ` Stefan Monnier
2007-06-06 13:54 ` Drew Adams
2007-06-06 15:06 ` [drew.adams@oracle.com: RE: cannot find :enable inElispmanualindex] Drew Adams
2007-06-06 18:44 ` Juri Linkov
2007-06-06 20:01 ` Stefan Monnier
2007-06-06 20:51 ` Juri Linkov
2007-06-06 21:18 ` Stefan Monnier
2007-06-06 22:01 ` Juri Linkov
2007-06-06 22:24 ` Stefan Monnier
2007-06-06 22:40 ` Karl Berry
2007-06-07 12:37 ` Stefan Monnier
2007-06-07 22:22 ` Karl Berry
2007-06-08 1:00 ` Stefan Monnier
2007-06-08 2:28 ` Karl Berry
2007-06-08 6:58 ` csant
2007-06-08 15:42 ` Stefan Monnier
2007-06-08 7:12 ` Stefan Monnier
2007-06-08 8:34 ` Juri Linkov
2007-06-06 22:04 ` Karl Berry
2007-06-08 7:11 ` Richard Stallman
2007-06-08 8:32 ` Juri Linkov
2007-06-08 15:46 ` Stefan Monnier
2007-06-08 15:52 ` propose adding Icicles to Emacs Drew Adams
2007-06-10 13:19 ` Richard Stallman
2007-06-10 17:16 ` Drew Adams
2007-06-10 18:22 ` Sean O'Rourke
2007-06-11 0:09 ` Drew Adams
2007-06-11 9:44 ` Richard Stallman
2007-06-11 18:33 ` Drew Adams
2007-06-11 19:17 ` Stefan Monnier
2007-06-11 20:53 ` Drew Adams
2007-06-11 21:46 ` Stefan Monnier
2007-06-11 23:21 ` Drew Adams
2007-06-13 8:06 ` Richard Stallman
2007-06-14 7:48 ` Richard Stallman
2007-06-14 15:51 ` Drew Adams
2007-06-14 16:07 ` Stefan Monnier
2007-06-15 0:39 ` Drew Adams
2007-06-15 19:22 ` Richard Stallman
2007-06-15 21:04 ` Drew Adams
2007-06-16 18:51 ` Richard Stallman
2007-06-16 18:51 ` Richard Stallman
2007-06-16 18:51 ` Richard Stallman
2007-06-16 20:53 ` Drew Adams
2007-06-17 8:54 ` Richard Stallman
2007-06-17 18:48 ` Juri Linkov
2007-06-17 20:39 ` Drew Adams
2007-06-17 21:18 ` Juri Linkov
2007-06-17 23:07 ` Drew Adams
2007-06-18 21:17 ` Juri Linkov
2007-06-18 23:31 ` Drew Adams [this message]
2007-06-19 8:16 ` Juri Linkov
2007-06-19 14:47 ` Drew Adams
2007-06-18 14:56 ` Stefan Monnier
2007-06-19 22:26 ` Richard Stallman
2007-06-20 6:46 ` Stefan Monnier
2007-06-28 2:41 ` Stefan Monnier
2007-06-28 15:47 ` Drew Adams
2007-06-28 19:25 ` Richard Stallman
2007-06-28 20:03 ` Stefan Monnier
2007-06-29 5:10 ` Richard Stallman
2007-06-18 21:31 ` Richard Stallman
2007-06-19 3:52 ` Stefan Monnier
2007-06-19 22:26 ` Richard Stallman
2007-06-19 23:11 ` Drew Adams
2007-06-20 1:19 ` Stefan Monnier
2007-06-19 22:47 ` Drew Adams
2007-06-19 23:15 ` Drew Adams
2007-06-20 14:19 ` Juri Linkov
2007-06-20 15:13 ` Drew Adams
2007-06-20 15:13 ` Stefan Monnier
2007-06-20 15:34 ` Drew Adams
2007-06-20 15:50 ` Juri Linkov
2007-06-20 16:02 ` Juanma Barranquero
2007-06-20 16:38 ` Drew Adams
2007-06-20 17:28 ` Drew Adams
2007-06-20 17:51 ` Juri Linkov
2007-06-21 1:07 ` Richard Stallman
2007-06-19 22:48 ` Drew Adams
2007-06-20 17:36 ` Richard Stallman
2007-06-16 18:51 ` Richard Stallman
2007-06-16 19:58 ` Drew Adams
2007-06-16 18:51 ` Richard Stallman
2007-06-16 22:36 ` Drew Adams
2007-06-17 21:49 ` Richard Stallman
2007-06-16 18:51 ` Richard Stallman
2007-06-16 22:29 ` Drew Adams
2007-06-17 21:48 ` Richard Stallman
2007-06-17 22:18 ` Drew Adams
2007-06-18 16:15 ` Drew Adams
2007-06-25 13:19 ` Richard Stallman
2007-06-25 14:57 ` Drew Adams
2007-06-25 19:52 ` Richard Stallman
2007-06-25 21:40 ` Drew Adams
2007-06-26 16:57 ` Richard Stallman
2007-06-26 17:36 ` Drew Adams
2007-07-01 20:40 ` Richard Stallman
2007-07-01 21:54 ` Drew Adams
2007-07-02 19:47 ` Richard Stallman
2007-07-02 22:19 ` Drew Adams
2007-07-03 4:24 ` Richard Stallman
2007-07-03 7:56 ` Drew Adams
2007-07-04 3:43 ` Richard Stallman
2007-07-04 6:13 ` Drew Adams
2007-06-25 20:47 ` Juri Linkov
2007-06-21 18:35 ` Davis Herring
2007-06-21 18:39 ` Lennart Borgman (gmail)
2007-06-21 20:42 ` Drew Adams
2007-06-21 22:27 ` Davis Herring
2007-06-22 0:20 ` Drew Adams
2007-06-24 14:40 ` Richard Stallman
2007-06-15 8:48 ` Richard Stallman
2007-06-15 13:23 ` Drew Adams
2007-06-15 22:45 ` Richard Stallman
2007-06-13 16:21 ` Richard Stallman
2007-06-13 16:22 ` Richard Stallman
2007-06-13 19:00 ` Drew Adams
2007-06-14 16:19 ` Richard Stallman
2007-06-15 1:01 ` Drew Adams
2007-06-15 19:22 ` Richard Stallman
2007-06-15 21:04 ` Drew Adams
2007-06-16 18:50 ` Richard Stallman
2007-06-17 18:46 ` Juri Linkov
2007-06-17 19:35 ` Drew Adams
2007-06-18 21:31 ` Richard Stallman
2007-06-11 9:44 ` Richard Stallman
2007-06-11 17:29 ` Drew Adams
2007-06-11 18:10 ` Stefan Monnier
2007-06-13 8:07 ` Richard Stallman
2007-06-13 15:23 ` Drew Adams
2007-06-14 7:49 ` Richard Stallman
2007-06-15 0:41 ` Drew Adams
2007-06-15 19:22 ` Richard Stallman
2007-06-15 21:04 ` Drew Adams
2007-06-16 18:51 ` Richard Stallman
2007-06-16 22:30 ` Drew Adams
2007-06-13 8:07 ` Richard Stallman
2007-06-11 3:49 ` Miles Bader
2007-06-11 7:24 ` Drew Adams
2007-06-11 16:25 ` Richard Stallman
2007-06-11 9:44 ` Richard Stallman
2007-06-11 18:41 ` Drew Adams
2007-06-12 0:43 ` Miles Bader
2007-06-12 8:08 ` Kim F. Storm
2007-06-12 9:18 ` joakim
2007-06-12 11:04 ` Kim F. Storm
2007-06-12 11:16 ` joakim
2007-06-12 13:30 ` Drew Adams
2007-06-12 14:06 ` keys that work on terminals (was: Re: propose adding Icicles to Emacs) Dan Nicolaescu
2007-06-12 14:45 ` keys that work on terminals joakim
2007-06-12 13:22 ` propose adding Icicles to Emacs Drew Adams
2007-06-06 15:43 ` [drew.adams@oracle.com: RE: cannot find :enable in Elispmanualindex] Stefan Monnier
2007-06-04 5:01 ` [drew.adams@oracle.com: RE: cannot find :enable in Elisp manualindex] Richard Stallman
2007-06-04 23:51 ` Juri Linkov
2007-06-05 3:55 ` Miles Bader
2007-06-05 16:29 ` Juri Linkov
2007-06-05 17:12 ` [drew.adams@oracle.com: RE: cannot find :enable in Elispmanualindex] Drew Adams
2007-06-05 19:17 ` [drew.adams@oracle.com: RE: cannot find :enable in Elisp manualindex] Richard Stallman
2007-06-05 22:32 ` Richard Stallman
2007-06-06 0:32 ` Karl Berry
2007-06-06 22:10 ` Richard Stallman
2007-06-06 22:21 ` Karl Berry
2007-06-02 22:34 ` Juri Linkov
2007-06-02 22:42 ` Juri Linkov
2007-06-03 3:07 ` Eli Zaretskii
2007-06-03 9:34 ` Juri Linkov
2007-06-03 21:23 ` Karl Berry
2007-06-03 21:27 ` Richard 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=EIENLHALHGIMHGDOLMIMIELEDCAA.drew.adams@oracle.com \
--to=drew.adams@oracle.com \
--cc=emacs-devel@gnu.org \
--cc=juri@jurta.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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.