unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Thomas Lord <lord@emf.net>
To: "Kim F. Storm" <storm@cua.dk>
Cc: rms@gnu.org, cyd@stupidchicken.com, emacs-devel@gnu.org,
	juri@jurta.org, monnier@iro.umontreal.ca,
	Alan Mackenzie <acm@muc.de>,
	miles@gnu.org
Subject: Re: Shift-movement selection
Date: Wed, 12 Mar 2008 10:39:16 -0700	[thread overview]
Message-ID: <47D81544.9050408@emf.net> (raw)
In-Reply-To: <87fxuwos3s.fsf@kfs-lx.rd.rdm>

[-- Attachment #1: Type: text/plain, Size: 3519 bytes --]

An idea:  Shift-select has pretty close to the same
"semantics" as recursive edits, when viewed from
the point of view of an emacs interaction loop.
So, use a mechanism pretty close to recursive edits
to implement shift-select.   Two variations on the
idea are given here.   One that does in fact have a
recursive command loop;  a second that fakes having
a recursive command loop using minor modes:

In the default key-maps, bind all shifted keys to a single
command we can call enter-implicit-select-mode

That command essentially begins a recursive edit:

enter-implicit-select-mode should first remember where
the point is starting from, then recursively call the
command that would have been invoked without
the shift (this may require reading more keys from the
user).

enter-implicit-select-mode should then read
key-sequences, mapping them the usual way
in key maps, but examining the function to be
invoked before invoking it.   If the mapped
function is, again, enter-implicit-select-mode
then don't recurse but do look up the unshifted
binding and call that interactively.   If the
mapped function is some other function,
then directly call that function interactively,
but immediately return from enter-implicit-select-mode's
recursive edit afterwards (terminating "shift select").

Commands for cutting, copying, wiping, yanking
etc. would still need to be handled specially and
might benefit from some separate mechanism for
telling enter-implicit-select-mode to not exit its
loop, yet.    In other words, a small number of commands
can be modified to continue shift-selection even if they
are not invoked by a shifted key-sequence.

Some modes might already have shift-bindings that
conflict with this.    Oh well, those need individual
attention anyway.

Recursive edits, as described, might not be quite
right.   A similar effect could be achieved with
minor-modes, I think.   A "ghostly" minor mode
could have no extended key-sequences and map
*all* keys to a function saves up the list of keys
pressed so far until they map to a binding in the
underlying keymaps of the buffer (then call the
right commands interactively, adjust whether shift-select
is going on, possibly de-install the ghostly minor mode,
etc.)

Either way, one advantage might be that nothing
is particular "shift specific".   A user who prefered
"hyper-select-mode" (or whatever) could have that
and the same mechanisms would still work.

Another advantage is that most commands would
not need to change.   

Another advantage is that, while this approach does
*slightly* change the way input key-sequences
invoke commands, it's really a very slight change
and mostly transparent to users.

A practical advantage is that it would probably
"mostly work" and almost never fail or surprise
in horrible ways.    It does (I *think*) 80% of the
job "for free" and then makes it easy to go and
patch up the remaining annoyances "by hand" as
they come to attention.

-t


Kim F. Storm wrote:
> Richard Stallman <rms@gnu.org> writes:
>
>   
>>     Why not introduce an after-move-hook, somewhat akin to after-change-hook?
>>
>> If the idea is that Fgoto-char and other point-setting primitives
>> would call this, that would be hard to implement safely and it slow
>> down Lisp programs terribly.
>>     
>
> Maybe the idea is to simply call the hook if point after executing the command
> is different from the value before the command.  It may be useful, but
> I'm not sure it will do the trick... for the shift-move function.
>  
>   


[-- Attachment #2: Type: text/html, Size: 4431 bytes --]

  reply	other threads:[~2008-03-12 17:39 UTC|newest]

Thread overview: 256+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-05  6:37 position on changing defaults? Dan Nicolaescu
2008-03-05  7:02 ` Miles Bader
2008-03-05 13:33   ` Miles Bader
2008-03-05 14:54     ` Juanma Barranquero
2008-03-05 15:44     ` Drew Adams
2008-03-05 19:25       ` Stefan Monnier
2008-03-05 19:38         ` Drew Adams
2008-03-05 21:55       ` Miles Bader
2008-03-05 15:34   ` Drew Adams
2008-03-05  9:55 ` David Kastrup
2008-03-07  3:37   ` Richard Stallman
2008-03-05 15:02 ` Bastien
2008-03-05 19:45 ` Stefan Monnier
2008-03-05 22:30   ` Dan Nicolaescu
2008-03-05 23:15     ` Miles Bader
2008-03-06  3:49       ` Dan Nicolaescu
2008-03-06  4:10         ` Miles Bader
2008-03-06  4:30           ` Dan Nicolaescu
2008-03-07  3:35           ` Richard Stallman
2008-03-07  3:38       ` Richard Stallman
2008-03-05 23:28     ` Juri Linkov
2008-03-06  3:58       ` Dan Nicolaescu
2008-03-06 10:07         ` Juri Linkov
2008-03-06 11:37           ` René Kyllingstad
2008-03-06 16:20         ` Stefan Monnier
2008-03-06 19:11           ` Dan Nicolaescu
2008-03-06 21:13             ` Stefan Monnier
2008-03-09  1:00           ` Xavier Maillard
2008-03-06 16:14       ` Stefan Monnier
2008-03-06 17:52         ` Juri Linkov
2008-03-06 18:25           ` Stefan Monnier
2008-03-07  0:35             ` Juri Linkov
2008-03-07  3:38       ` Richard Stallman
2008-03-09  1:00         ` Xavier Maillard
2008-03-09  1:46         ` Dan Nicolaescu
2008-03-09 16:40           ` Richard Stallman
2008-03-06 16:13     ` Stefan Monnier
2008-03-06 16:37       ` Drew Adams
2008-03-06 17:09         ` Dan Nicolaescu
2008-03-06 17:35           ` Drew Adams
2008-03-06 20:38             ` Alan Mackenzie
2008-03-06 20:40               ` Drew Adams
2008-03-06 21:33                 ` Alan Mackenzie
2008-03-06 21:36                   ` Drew Adams
2008-03-09  1:00         ` Xavier Maillard
2008-03-06 18:10       ` Johan Bockgård
2008-03-06 19:44         ` Mathias Dahl
2008-03-07  0:43           ` Juri Linkov
2008-03-09  1:00       ` Xavier Maillard
2008-03-07  3:38     ` Richard Stallman
2008-03-07  3:48       ` Miles Bader
2008-03-07  4:07       ` Dan Nicolaescu
2008-03-08 17:40         ` Richard Stallman
2008-03-08 18:08           ` Gregory Collins
2008-03-09  0:27             ` Miles Bader
2008-03-09  0:36               ` Dan Nicolaescu
2008-03-09  0:43                 ` Miles Bader
2008-03-09  1:10                   ` Dan Nicolaescu
2008-03-09 23:08                   ` Mathias Dahl
2008-03-11  1:00                     ` Xavier Maillard
2008-03-11  6:06                       ` Drew Adams
2008-03-09 21:51                 ` Juri Linkov
2008-03-09 22:34                   ` Drew Adams
2008-03-10  0:29                     ` Juri Linkov
2008-03-10  0:57                       ` Drew Adams
2008-03-11  1:00                 ` Xavier Maillard
2008-03-11  1:00               ` Xavier Maillard
2008-03-09 20:53             ` Richard Stallman
2008-03-08 18:15           ` Dan Nicolaescu
2008-03-08 21:09           ` Juri Linkov
2008-03-09 16:39             ` Richard Stallman
2008-03-09 17:55               ` Juri Linkov
2008-03-09 22:24                 ` Stefan Monnier
2008-03-10  0:30                   ` Juri Linkov
2008-03-10 22:29               ` Juri Linkov
2008-03-08 19:11         ` Andreas Schwab
2008-03-08 19:26           ` Dan Nicolaescu
2008-03-08 19:54             ` Andreas Schwab
2008-03-08 20:03               ` Dan Nicolaescu
2008-03-08 20:28                 ` Andreas Schwab
2008-03-08 23:41                   ` Kim F. Storm
2008-03-09  0:04                     ` Andreas Schwab
2008-03-09  0:18                       ` Stephen Eglen
2008-03-11  1:00                         ` Xavier Maillard
2008-03-11 10:44                           ` Kim F. Storm
2008-03-11 12:22                             ` Tassilo Horn
2008-03-11 14:39                               ` ido-mode (was Re: position on changing defaults?) Kim F. Storm
2008-03-11 16:14                                 ` ido-mode Tassilo Horn
2008-03-09  0:27                       ` position on changing defaults? Dan Nicolaescu
2008-03-09  0:36                         ` Miles Bader
2008-03-09  9:51                         ` David Kastrup
2008-03-09 16:40                         ` Richard Stallman
2008-03-11  1:00                         ` Xavier Maillard
2008-03-09  1:00         ` Xavier Maillard
2008-03-07 12:21       ` paul r
2008-03-11  1:00         ` Xavier Maillard
2008-03-07  3:38   ` Richard Stallman
2008-03-05 20:43 ` Chong Yidong
2008-03-05 23:30   ` Juri Linkov
2008-03-05 23:45     ` Bastien
2008-03-05 23:54       ` Juri Linkov
2008-03-06  0:00         ` Lennart Borgman (gmail)
2008-03-06  0:10         ` Bastien
2008-03-07  3:38       ` Richard Stallman
2008-03-05 23:46     ` Miles Bader
2008-03-06  0:21       ` Juri Linkov
2008-03-06 10:58       ` Kim F. Storm
2008-03-07 23:14         ` Richard Stallman
2008-03-07 23:27           ` Miles Bader
2008-03-08  0:40             ` Lennart Borgman (gmail)
2008-03-09  2:18               ` Richard Stallman
2008-03-08  1:24             ` deactivation in "shift-select" mode Miles Bader
2008-03-08  2:22               ` Chong Yidong
2008-03-08  3:11                 ` Miles Bader
2008-03-08  3:27                   ` Miles Bader
2008-03-08 17:26               ` Kim F. Storm
2008-03-09 20:53             ` position on changing defaults? Richard Stallman
2008-03-09 21:58               ` Miles Bader
2008-03-09 22:34               ` Shift-movement selection (was: position on changing defaults?) Stefan Monnier
2008-03-09 23:00                 ` Shift-movement selection Miles Bader
2008-03-09 23:57                   ` Kim F. Storm
2008-03-10  0:06                     ` Miles Bader
2008-03-10 16:26                       ` Stefan Monnier
2008-03-10 16:25                     ` Stefan Monnier
2008-03-10  3:37                   ` Stefan Monnier
2008-03-10  4:11                     ` Miles Bader
2008-03-10 14:38                       ` Stefan Monnier
2008-03-10 15:06                         ` Kim F. Storm
2008-03-10 16:23                           ` Stefan Monnier
2008-03-10 16:40                             ` Lennart Borgman (gmail)
2008-03-11  9:25                               ` Richard Stallman
2008-03-11 18:40                                 ` Stefan Monnier
2008-03-12  0:19                                   ` Richard Stallman
2008-03-12 10:06                                     ` Kim F. Storm
2008-03-12 17:51                                       ` Richard Stallman
2008-03-12 22:06                                         ` Kim F. Storm
2008-03-12 23:59                                           ` Thomas Lord
2008-03-13  0:07                                             ` Thomas Lord
2008-03-13  8:28                                               ` tomas
2008-03-11 22:42                           ` Alan Mackenzie
2008-03-11 22:38                             ` Lennart Borgman (gmail)
2008-03-11 23:31                               ` David Kastrup
2008-03-11 23:46                                 ` Lennart Borgman (gmail)
2008-03-12  1:35                                   ` Stefan Monnier
2008-03-12 15:11                                 ` Richard Stallman
2008-03-12 15:11                             ` Richard Stallman
2008-03-12 15:54                               ` Kim F. Storm
2008-03-12 17:39                                 ` Thomas Lord [this message]
2008-03-12 20:03                                   ` Richard Stallman
2008-03-12 22:00                                     ` Thomas Lord
2008-03-13  1:06                                       ` Richard Stallman
2008-03-13  2:00                                         ` Thomas Lord
2008-03-10 22:32                         ` Miles Bader
2008-03-11 18:38                           ` Stefan Monnier
2008-03-11  9:24                         ` Richard Stallman
2008-03-10 17:16                     ` Richard Stallman
2008-03-10 18:40                       ` Stefan Monnier
2008-03-11 20:25                         ` Richard Stallman
2008-03-11 20:41                           ` Lennart Borgman (gmail)
2008-03-12 15:11                             ` Richard Stallman
2008-03-11 22:33                     ` Alan Mackenzie
2008-03-06 16:46       ` position on changing defaults? Stefan Monnier
2008-03-07  2:08         ` Miles Bader
2008-03-08  6:28           ` Richard Stallman
2008-03-08 17:40         ` Richard Stallman
2008-03-08 19:08           ` Kim F. Storm
2008-03-08 18:07         ` Kim F. Storm
2008-03-08 20:09           ` Stefan Monnier
2008-03-09 16:40             ` Richard Stallman
2008-03-09 22:22               ` Stefan Monnier
2008-03-09 22:56               ` Kim F. Storm
2008-03-09 23:17                 ` Lennart Borgman (gmail)
2008-03-11  9:25                 ` Richard Stallman
2008-03-11 10:24                   ` Kim F. Storm
2008-03-11 16:02                     ` Lennart Borgman (gmail)
2008-03-09 20:53           ` Richard Stallman
2008-03-07  3:38     ` Richard Stallman
2008-03-05 23:52   ` Kim F. Storm
2008-03-06  0:34     ` Miles Bader
2008-03-06  1:00     ` Lennart Borgman (gmail)
2008-03-06  1:18       ` Bastien
2008-03-06 17:07     ` Stefan Monnier
2008-03-08 17:40       ` Richard Stallman
2008-03-08 19:12         ` Kim F. Storm
2008-03-09 16:40           ` Richard Stallman
2008-03-09 22:35             ` Kim F. Storm
2008-03-09 23:11               ` CUA mode's C-RET binding [was: position on changing defaults?] Drew Adams
2008-03-09 23:36                 ` Kim F. Storm
2008-03-09 23:46                   ` CUA mode's C-RET binding Miles Bader
2008-03-09 23:50                   ` CUA mode's C-RET binding [was: position on changing defaults?] Lennart Borgman (gmail)
2008-03-10  0:00                     ` CUA mode's C-RET binding Miles Bader
2008-03-10  0:18                       ` Lennart Borgman (gmail)
2008-03-10  0:02                   ` CUA mode's C-RET binding [was: position on changing defaults?] Drew Adams
2008-03-10 10:13                     ` Mathias Dahl
2008-03-10 13:47                       ` Lennart Borgman (gmail)
2008-03-10 14:32                         ` Johan Bockgård
2008-03-10 14:53                           ` Lennart Borgman (gmail)
2008-03-11  0:07                             ` Juri Linkov
2008-03-11 20:25                               ` Richard Stallman
2008-03-11 20:50                                 ` CUA mode's C-RET binding Manoj Srivastava
2008-03-12  0:37                                   ` Juri Linkov
2008-03-12 15:12                                   ` Richard Stallman
2008-03-12 17:30                                     ` Manoj Srivastava
2008-03-12 20:21                                       ` Dangerous shell commands? (was: CUA mode's C-RET binding) Reiner Steib
2008-03-12 21:23                                         ` Dangerous shell commands? David Kastrup
2008-03-13  0:14                                         ` Manoj Srivastava
2008-03-11 14:44                         ` CUA mode's C-RET binding [was: position on changing defaults?] Mathias Dahl
2008-03-11 15:09                           ` Drew Adams
2008-03-13 11:20                             ` Mathias Dahl
2008-03-13 17:26                               ` Drew Adams
2008-03-11  9:25               ` position on changing defaults? Richard Stallman
2008-03-08 19:25       ` Kim F. Storm
2008-03-08 20:38         ` Stefan Monnier
2008-03-08 23:38           ` Kim F. Storm
2008-03-08 23:51             ` Miles Bader
2008-03-09  2:32             ` Stefan Monnier
2008-03-09 16:39             ` Richard Stallman
2008-03-10 16:11             ` Chong Yidong
2008-03-11 10:28               ` Kim F. Storm
2008-03-08 20:56       ` Kim F. Storm
2008-03-09  8:38         ` Making the command loop mode-dependent [was: position on changing defaults?] Alan Mackenzie
2008-03-07  3:38     ` position on changing defaults? Richard Stallman
2008-03-07 10:50       ` Kim F. Storm
2008-03-09  2:18         ` Richard Stallman
2008-03-09  2:40           ` Miles Bader
2008-03-09 22:06             ` Kim F. Storm
2008-03-09 22:13               ` Miles Bader
2008-03-09 22:15               ` Stefan Monnier
2008-03-09 23:44                 ` Kim F. Storm
2008-03-09 23:57                   ` Miles Bader
2008-03-10  1:00                   ` Johan Bockgård
2008-03-10 17:16                   ` Richard Stallman
2008-03-11 10:35                     ` Kim F. Storm
2008-03-11 18:31                       ` Stefan Monnier
2008-03-12  0:19                         ` Richard Stallman
2008-03-12  9:56                         ` Kim F. Storm
2008-03-12 14:03                           ` Stefan Monnier
2008-03-12 23:56                             ` Lennart Borgman (gmail)
2008-03-13  1:52                               ` Stefan Monnier
2008-03-13  2:01                                 ` Lennart Borgman (gmail)
2008-03-13  2:31                                   ` Stefan Monnier
2008-03-13 16:57                                     ` Lennart Borgman (gmail)
2008-03-14  2:55                                       ` Richard Stallman
2008-03-14  9:51                                         ` David Kastrup
2008-03-13  7:45                                 ` David Kastrup
2008-03-13 12:45                                   ` Kim F. Storm
2008-03-13 13:28                                     ` David Kastrup
2008-03-13 20:39                                       ` Stephen J. Turnbull
2008-03-13 21:55                                         ` David Kastrup
2008-03-13 23:56                                           ` Stephen J. Turnbull
2008-03-13 22:24                               ` Richard Stallman
2008-03-13 22:47                                 ` Kim F. Storm
2008-03-13 22:49                                   ` David Kastrup
2008-03-14 16:44                                   ` Richard Stallman
2008-03-13 23:30                                 ` Lennart Borgman (gmail)
2008-03-13 15:41                             ` Chong Yidong

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47D81544.9050408@emf.net \
    --to=lord@emf.net \
    --cc=acm@muc.de \
    --cc=cyd@stupidchicken.com \
    --cc=emacs-devel@gnu.org \
    --cc=juri@jurta.org \
    --cc=miles@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=rms@gnu.org \
    --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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).