From: Richard Stallman <rms@gnu.org>
To: "Drew Adams" <drew.adams@oracle.com>
Cc: emacs-devel@gnu.org
Subject: Re: propose adding Icicles to Emacs
Date: Thu, 14 Jun 2007 12:19:56 -0400 [thread overview]
Message-ID: <E1Hys3A-0004Gj-02@fencepost.gnu.org> (raw)
In-Reply-To: <EIENLHALHGIMHGDOLMIMEEGPDCAA.drew.adams@oracle.com>
You seem bent on automatically converting all commands to multi-commands.
That might be useful, in a limited way. But programmers will still need to
be able to define multi-commands that go beyond the simple case. I gave
`icicle-search' as an example.
Would you please explain what is special about it?
> The need to replace commands is a complexity, and the code will
> be much better if we avoid that complexity.
There is no need to replace any commands. Keep them all.
As you have described it, Icicles replaces the command find-file. It
does this by defining a new command (Icicle-find-file?) and remapping
remapping find-file to that.
I think this complexity is unnecessary, and I want to try to avoid
installing it.
The only purpose that I know of for defining Icicle-find-file is to
implement multi-command behavior. Is there any other reason?
I have proposed a modular and clean way to provide the multi-command
behavior, without the need to replace commands in this way. You said
that my proposal doesn't do the whole job. Maybe you are right, but I
need you to explain. What part of the job does it not do?
No one is against modularity. I have not seen a "proposed implementation",
beyond some vague hand-waving.
I gave you an outline of the scheme. Of course I don't have all the
details. I am trying to work out the details but I need your help.
However, that needs to be done
carefully and fully. For example, use of a standalone minibuffer and non-nil
pop-up-frames should also work.
I expect we can write the code in Fcall_interactively to do TRT in
those cases. The only way to make sure is to try it.
I agree about "independent of the specific command that was run", but only
in the case of run-of-the-mill multi-commands.
Even if this only handles the run-of-the-mill multi-commands, and the
exceptions are handled by your macros, that is still a big
simplification. And we can continue trying to make this mechanism
better; perhaps we can make it handle more of the commands.
For some multi-commands you
want the frame focus to end up in a different place when you are done, for
example.
Could you tell me about one example? Maybe I can find a simple
general mechanism to handle this too.
You might typically work in the buffer of application after using a
multi-command, or you might instead typically want the minibuffer frame to
continue to have the focus so you can use it again - different commands have
different use cases.
Can you tell me about one example of each type, so I can see
why this is so?
I had my multi-command definition macros available for my own use,
yet I did not use them to define some of the multi-commands. Why?
Because they are not flexible enough - they cannot be flexible
enough. There is no substitute for being able to code what is
needed in a particular case.
Maybe that is true, but first let's make a reasonable effort to make a
general mechanism handle as much of the job as possible. Eventually
we may decide to handle a few hard cases with your macros.
Practically every place where I have used a non-nil value for
`icicle-use-candidates-only-once' is an example. It is not so much that
multiple invocation would be harmful (though perhaps that can also be true
for some commands). It is that, in many cases, it is handy for the user to
remove the candidate from the list of available candidates, once it has been
acted on.
We could build that into the low-level mechanism too. It would be
quite clean. Fcall_interactively just has to bind a certain variable
to nil, which holds a list of completion alternatives to exclude.
display-completion-list will ignore the alternatives in this list.
Then, each time around Fcall_interactively adds the proper argument
value to this list.
We could control the feature with a character in the interactive spec,
as in
(interactive "#bDelete Windows of buffer:")
where # specifies using candidates only once.
FYI - wrt clicking the `delete' key to remove a candidate - I've recently
defined a complementary feature, to save a candidate for later
consideration. I haven't yet uploaded this feature to the wiki, but I'll do
so soon, after testing things a bit more.
These features seem interesting. I think they can all be implemented
cleanly in Fcall_interactively, but this suggests we might want to make
it call some Lisp code which would handle some of these cases.
It's best to read about what Icicles search offers and how it works, and
then look at the code for `icicle-search' as an example. I'll be glad to
answer questions, but I don't want to repeat here what is already written
elsewhere. Please see the links above.
I will be glad to read the text you've already written, but finding
that text would be a pain for me. Could you please email it to me?
next prev parent reply other threads:[~2007-06-14 16:19 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
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 [this message]
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=E1Hys3A-0004Gj-02@fencepost.gnu.org \
--to=rms@gnu.org \
--cc=drew.adams@oracle.com \
--cc=emacs-devel@gnu.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.