all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Chong Yidong <cyd@stupidchicken.com>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: Dan Nicolaescu <dann@ics.uci.edu>,
	emacs-devel@gnu.org, "Kim F. Storm" <storm@cua.dk>
Subject: Re: Shift selection using interactive spec
Date: Fri, 14 Mar 2008 16:52:39 -0400	[thread overview]
Message-ID: <874pb9koyw.fsf@stupidchicken.com> (raw)
In-Reply-To: <jwvbq5hmhft.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Fri\, 14 Mar 2008 11\:54\:34 -0400")

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>> What if a movement command uses a lisp form rather than a string as
>>> interactive spec?  
>>> 
>>> Then, how do you do the equivalent of '^' in that case?
>
>> Is there any movement command that uses a lisp form spec?  If these
>> are sufficiently rare, the command itself could simply be modified
>> directly.
>
>> Not that the @ and * interactive specs would also have problems with
>> interactive specs that are lisp forms.
>
> *Any* letter in `interactive' should have a simple Elisp equivalent.
> I suggest you write the code directly in an elisp function to start
> with, and then call that function from callint.c.

The way I see it, there are a few ways we can go with this.

1. Add a new code LETTER for interactive specs, e.g. t

   This provides an argument that is t if the command was called by
   shift translation.  In other words, read_key_sequence couldn't find
   a keybinding for the entered key sequence, so it tried removing the
   shift modifier and found the binding to this command.

   Then we modify the motion commands to accept the additional
   argument, e.g.:

   (forward-char &optional N) -> (forward-char &optional N shift-select)

   The body of each motion command is then changed to DTRT with the
   new argument.

   With this approach, there is the least amount of magic going on,
   but adding an argument to all motion commands may cause disruption
   and incompatibilities.  How much disruption remains unclear to me.

1a. As above, but make the letter activate so long as the keybinding
    contains a shift (i.e. even if the command was found with a direct
    keybinding.)

2. Don't bother with interactive spec.  Provide a built-in function
   that says whether a command has been run using shift translation.
   Call it, e.g.,

      this-single-command-keys-shift-translated

   Directly modify the body of each motion command to call
   this-single-command-keys-shift-translated and DTRT.

2a. As above, but also for direct keybindings with the shift modifier.
    (This is the idea that Stefan has been pushing.)

3. Use a non-letter interactive code, analogous to @ and *, that
   causes Fcall_interactively to perform the handling of
   transient-mark-mode automagically.  This was the code I showed.
   Because it's a non-letter code, we don't need to change the
   argument list.  This approach needs the least new code, and might
   be less disruptive, but it's obviously a little magical.

3a. As above, but also for direct keybindings with the shift modifier.




  parent reply	other threads:[~2008-03-14 20:52 UTC|newest]

Thread overview: 167+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-13 23:29 Shift selection using interactive spec Chong Yidong
2008-03-14  0:44 ` Thomas Lord
2008-03-14  0:10   ` David Kastrup
2008-03-14  1:22     ` Thomas Lord
2008-03-14  9:46       ` David Kastrup
2008-03-14 10:01         ` Johan Bockgård
2008-03-14 10:30           ` David Kastrup
2008-03-14 11:18           ` Thomas Lord
2008-03-14 11:11         ` Thomas Lord
2008-03-14 10:42           ` David Kastrup
2008-03-14 11:36             ` Thomas Lord
2008-03-14 11:50             ` Thomas Lord
2008-03-14 11:39               ` David Kastrup
2008-03-14 18:41                 ` Thomas Lord
2008-03-14  4:06 ` Dan Nicolaescu
2008-03-14 14:26   ` Kim F. Storm
2008-03-14 14:32     ` Chong Yidong
2008-03-14 14:53       ` Kim F. Storm
2008-03-14 16:19         ` David Kastrup
2008-03-14 15:54       ` Stefan Monnier
2008-03-14 16:09         ` Drew Adams
2008-03-14 20:52         ` Chong Yidong [this message]
2008-03-14 20:59           ` David Kastrup
2008-03-14 21:08             ` Chong Yidong
2008-03-15  0:56           ` Stefan Monnier
2008-03-15  2:02             ` Chong Yidong
2008-03-15  3:31               ` Stefan Monnier
2008-03-15 14:07                 ` Chong Yidong
2008-03-15 15:07                   ` Stefan Monnier
2008-03-15 17:11                     ` Chong Yidong
2008-03-15 20:52                       ` Stefan Monnier
2008-03-15 21:45                         ` Thomas Lord
2008-03-16 14:15                           ` Chong Yidong
2008-03-16 14:37                             ` Lennart Borgman (gmail)
2008-03-15 22:01                         ` shift-select harmony Thomas Lord
2008-03-15 23:38                           ` Thomas Lord
2008-03-15 17:16                   ` Shift selection using interactive spec Kim F. Storm
2008-03-15 20:59                     ` Thomas Lord
2008-03-16 23:31                       ` Alan Mackenzie
2008-03-15 21:08                     ` Thomas Lord
2008-03-16  0:27                       ` Chong Yidong
2008-03-16  1:37                         ` Thomas Lord
2008-03-16  9:09                           ` Mathias Dahl
2008-03-16 14:21                             ` Chong Yidong
2008-03-16 16:56                               ` Thomas Lord
2008-03-16 16:34                             ` Dear lazyweb (Re: Shift selection using interactive spec) Thomas Lord
2008-03-16 18:40                           ` Shift selection using interactive spec Stefan Monnier
2008-03-16 21:00                             ` Thomas Lord
2008-03-16 20:45                               ` Thien-Thi Nguyen
2008-03-16 21:46                                 ` Thomas Lord
2008-03-16 21:24                                   ` Thien-Thi Nguyen
2008-03-16 22:27                                     ` Thomas Lord
2008-03-16 23:04                               ` Lennart Borgman (gmail)
2008-03-16 23:17                                 ` Lennart Borgman (gmail)
2008-03-17  0:46                                 ` Thomas Lord
2008-03-17  0:21                                   ` Lennart Borgman (gmail)
2008-03-17  1:16                                     ` Thomas Lord
2008-03-16 23:35                               ` Stephen J. Turnbull
2008-03-17  0:55                                 ` Thomas Lord
2008-03-17  2:23                                   ` Stefan Monnier
2008-03-17  3:12                                     ` Thomas Lord
2008-03-17  2:21                               ` Stefan Monnier
2008-03-17  3:47                                 ` what's the point (re shift selection) Thomas Lord
2008-03-16 14:40                     ` Shift selection using interactive spec Chong Yidong
2008-03-16 15:04                       ` Lennart Borgman (gmail)
2008-03-16 17:13                         ` Thomas Lord
2008-03-17  0:54                       ` Chong Yidong
2008-03-17  2:40                         ` Stefan Monnier
2008-03-17  3:24                           ` Chong Yidong
2008-03-17 13:26                             ` Stefan Monnier
2008-03-17 16:33                               ` Chong Yidong
2008-03-17 17:21                                 ` Lennart Borgman (gmail)
2008-03-17 19:11                                 ` Stefan Monnier
2008-03-17 21:10                                   ` Chong Yidong
2008-03-17 21:44                                     ` Drew Adams
2008-03-18 11:40                                     ` Kim F. Storm
2008-03-18 14:16                                       ` Chong Yidong
2008-03-18 15:07                                         ` Kim F. Storm
2008-03-18 16:24                                       ` Stefan Monnier
2008-03-18 17:54                                         ` Drew Adams
2008-03-20  5:03                                   ` Chong Yidong
2008-03-23  1:39                                     ` Stefan Monnier
2008-03-17 22:24                                 ` martin rudalics
2008-03-17 22:37                                   ` Lennart Borgman (gmail)
2008-03-18  0:50                                     ` Thomas Lord
2008-03-18  7:48                                       ` martin rudalics
2008-03-18 17:46                                         ` Thomas Lord
2008-03-18 17:36                                           ` Lennart Borgman (gmail)
2008-03-18 19:07                                             ` Thomas Lord
2008-03-18  7:48                                     ` martin rudalics
2008-03-17 22:53                                   ` Chong Yidong
2008-03-18  3:12                                   ` Stefan Monnier
2008-03-18  7:49                                     ` martin rudalics
2008-03-18 16:36                                       ` Stefan Monnier
2008-03-18 16:44                                         ` Lennart Borgman (gmail)
2008-03-18 14:45                               ` Chong Yidong
2008-03-18 16:39                                 ` Stefan Monnier
2008-03-18 18:28                                   ` Chong Yidong
2008-03-18 21:42                                     ` Stefan Monnier
2008-03-18 22:30                                       ` Kim F. Storm
2008-03-18 22:39                                         ` Lennart Borgman (gmail)
2008-03-19  4:40                                         ` M Jared Finder
2008-03-26  8:09                                           ` David Kastrup
2008-03-26 10:48                                             ` Juri Linkov
2008-03-26 11:32                                               ` David Kastrup
2008-03-26 11:39                                                 ` Juri Linkov
2008-03-26 12:20                                                   ` David Kastrup
2008-03-26 13:14                                                     ` Johan Bockgård
2008-03-26 13:26                                                       ` David Kastrup
2008-03-26 14:52                                                     ` Stefan Monnier
2008-03-27  0:46                                                     ` Juri Linkov
2008-03-26 12:02                                                 ` Lennart Borgman (gmail)
2008-03-26 11:47                                               ` Lennart Borgman (gmail)
2008-03-26 22:26                                                 ` Richard Stallman
2008-03-26 23:31                                                   ` Lennart Borgman (gmail)
2008-03-27  7:02                                                     ` David Kastrup
2008-03-27  8:19                                                       ` Lennart Borgman (gmail)
2008-03-27  8:41                                                         ` David Kastrup
2008-03-27 13:57                                                           ` Lennart Borgman (gmail)
2008-03-27 14:39                                                             ` David Kastrup
2008-03-27 15:01                                                               ` Juanma Barranquero
2008-03-27 15:34                                                                 ` David Kastrup
2008-03-27 15:41                                                                   ` Juanma Barranquero
2008-03-27 15:13                                                               ` Johan Bockgård
2008-03-27 19:41                                                     ` Richard Stallman
2008-03-27 23:52                                                       ` Juri Linkov
2008-03-28  7:33                                                         ` David Kastrup
2008-03-29  0:47                                                           ` Juri Linkov
2008-03-29  7:03                                                             ` David Kastrup
2008-03-29 11:53                                                               ` Lennart Borgman (gmail)
2008-03-29 12:30                                                               ` Juri Linkov
2008-03-29 14:07                                                                 ` David Kastrup
2008-03-29 14:45                                                                   ` Lennart Borgman (gmail)
2008-03-29 15:09                                                                     ` David Kastrup
2008-03-29 15:30                                                                       ` Lennart Borgman (gmail)
2008-03-30  0:52                                                                   ` Juri Linkov
2008-03-30 17:56                                                                     ` David Kastrup
2008-03-30  5:49                                                                 ` Richard Stallman
2008-03-28  4:05                                                       ` M Jared Finder
2008-03-28 11:10                                                         ` David Kastrup
2008-03-28 17:14                                                           ` Lennart Borgman (gmail)
2008-03-28 20:05                                                             ` David Kastrup
2008-03-28 23:49                                                               ` Lennart Borgman (gmail)
2008-03-28 20:42                                                         ` Richard Stallman
2008-03-28 21:47                                                           ` Chong Yidong
2008-03-28 22:01                                                             ` David Kastrup
2008-03-30  0:48                                                               ` Juri Linkov
2008-03-30 17:55                                                                 ` David Kastrup
2008-03-30 18:55                                                                   ` Juri Linkov
2008-03-27  0:49                                                   ` Juri Linkov
2008-03-27  2:59                                                     ` Chong Yidong
2008-03-27 19:41                                                     ` Richard Stallman
2008-03-27 23:48                                                       ` Juri Linkov
2008-03-28 20:41                                                         ` Richard Stallman
2008-03-29  0:54                                                           ` Juri Linkov
2008-03-29  1:15                                                             ` Lennart Borgman (gmail)
2008-03-29 16:37                                                             ` Richard Stallman
2008-03-30  1:05                                                               ` Juri Linkov
2008-03-30  4:12                                                                 ` Stefan Monnier
2008-03-30 18:33                                                                   ` Juri Linkov
2008-03-31 16:24                                                                     ` Richard Stallman
2008-03-30 19:56                                                                 ` Richard Stallman
2008-03-30 22:46                                                                   ` Juri Linkov
2008-03-26 22:26                                               ` Richard Stallman
2008-03-18 17:45                                 ` Thomas Lord
2008-03-16  2:33                 ` Richard Stallman
  -- strict thread matches above, loose matches on Subject: below --
2008-03-16 12:58 Robert J. Chassell

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=874pb9koyw.fsf@stupidchicken.com \
    --to=cyd@stupidchicken.com \
    --cc=dann@ics.uci.edu \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=storm@cua.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 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.