* bug#15234: 24.3.50; Make C-x u repeatable
@ 2013-09-01 12:21 Jambunathan K
2013-09-01 15:23 ` Drew Adams
2013-09-03 1:46 ` Stefan Monnier
0 siblings, 2 replies; 15+ messages in thread
From: Jambunathan K @ 2013-09-01 12:21 UTC (permalink / raw)
To: 15234
Make C-x u repeatable. This will make editing (and completion)
experience quite awesome. If something is preventing, atleast make it a
customizable option.
| Keyseq 1 => | C-x u | C-x u | C-x u | C-x u | u | |
|-------------+-------+-------+-------+-------+-----+---|
| Keyseq 2 => | C-x u | C-x z | z | z | C-g | u |
|-------------+-------+-------+-------+-------+-----+---|
| keyseq 3 => | C-x | u | u | u | C-g | u |
----------------------------------------------------------------
When I do, M-/ (runs the stock `dabbrev-expand') - this I use very
frequently - I often overshoot the completion that I expect by miles and
use (C-x u)+ to backtrack.
----------------------------------------------------------------
In GNU Emacs 24.3.50.3 (i686-pc-linux-gnu, GTK+ Version 2.20.1)
of 2013-08-31 on porunai
Bzr revision: 114077 rgm@gnu.org-20130830174039-3aiddsbwhbn5tf9x
Windowing system distributor `The X.Org Foundation', version 11.0.10707000
Important settings:
value of $LANG: en_IN
locale-coding-system: iso-latin-1-unix
default enable-multibyte-characters: t
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-01 12:21 bug#15234: 24.3.50; Make C-x u repeatable Jambunathan K
@ 2013-09-01 15:23 ` Drew Adams
2013-09-01 16:11 ` Jambunathan K
2013-09-01 16:27 ` Juri Linkov
2013-09-03 1:46 ` Stefan Monnier
1 sibling, 2 replies; 15+ messages in thread
From: Drew Adams @ 2013-09-01 15:23 UTC (permalink / raw)
To: Jambunathan K, 15234
> Make C-x u repeatable.
FWIW, this is what I use:
(defun undo-repeat (arg)
"Same as `undo', but repeatable even on a prefix key.
E.g., if bound to `C-x u' then you can use `C-x u u u...' to repeat."
(interactive "*P")
(undo arg)
(set-temporary-overlay-map (let ((map (make-sparse-keymap)))
(define-key map "u" 'undo-repeat)
map)))
(global-set-key [remap undo] 'undo-repeat)
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-01 15:23 ` Drew Adams
@ 2013-09-01 16:11 ` Jambunathan K
2013-09-01 16:27 ` Juri Linkov
1 sibling, 0 replies; 15+ messages in thread
From: Jambunathan K @ 2013-09-01 16:11 UTC (permalink / raw)
To: Drew Adams; +Cc: 15234
Drew Adams <drew.adams@oracle.com> writes:
>> Make C-x u repeatable.
>
> FWIW, this is what I use:
>
> (defun undo-repeat (arg)
> "Same as `undo', but repeatable even on a prefix key.
> E.g., if bound to `C-x u' then you can use `C-x u u u...' to repeat."
> (interactive "*P")
> (undo arg)
> (set-temporary-overlay-map (let ((map (make-sparse-keymap)))
> (define-key map "u" 'undo-repeat)
> map)))
>
> (global-set-key [remap undo] 'undo-repeat)
I want it right within stock Emacs. Not in my .emacs, not in a package
floating in wikis.
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-01 15:23 ` Drew Adams
2013-09-01 16:11 ` Jambunathan K
@ 2013-09-01 16:27 ` Juri Linkov
2013-09-01 16:45 ` Jambunathan K
1 sibling, 1 reply; 15+ messages in thread
From: Juri Linkov @ 2013-09-01 16:27 UTC (permalink / raw)
To: Drew Adams; +Cc: 15234, Jambunathan K
>> Make C-x u repeatable.
>
> FWIW, this is what I use:
>
> (defun undo-repeat (arg)
You can make any command repeatable more easily with:
(advice-add 'undo :after
(lambda (delta)
(set-temporary-overlay-map
(let ((map (make-sparse-keymap)))
(define-key map (vector last-command-event) this-command)
map))))
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-01 16:27 ` Juri Linkov
@ 2013-09-01 16:45 ` Jambunathan K
0 siblings, 0 replies; 15+ messages in thread
From: Jambunathan K @ 2013-09-01 16:45 UTC (permalink / raw)
To: Juri Linkov; +Cc: 15234
Juri Linkov <juri@jurta.org> writes:
> You can make any command repeatable more easily with:
>
> (advice-add 'undo :after
Thanks. I need to catch up with new advice functions.
----------------------------------------------------------------
Emacs Lisp is quite scary. I don't mind customizing my Emacs but I want
an interface that is simple.
(mapc
(put 'undo 'repeat t)
(list 'undo 'command-1 'command-2 'command-3))
May be a post-command hook that checks the 'repeat property and does
it's temporary overlay magic.
To top it all have a defcustom where I can add the list of commands.
----------------------------------------------------------------
So the point really not that it be doable but that it be readily (made)
available (in a way that the user can relate) with no second thought.
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-01 12:21 bug#15234: 24.3.50; Make C-x u repeatable Jambunathan K
2013-09-01 15:23 ` Drew Adams
@ 2013-09-03 1:46 ` Stefan Monnier
2013-09-03 2:15 ` Drew Adams
2013-09-03 2:23 ` Jambunathan K
1 sibling, 2 replies; 15+ messages in thread
From: Stefan Monnier @ 2013-09-03 1:46 UTC (permalink / raw)
To: Jambunathan K; +Cc: 15234
> Make C-x u repeatable.
IIRC from last time this came up, the reason it's not is that you can
use C-_, or C-/ instead, which are both trivially repeatable.
Stefan
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-03 1:46 ` Stefan Monnier
@ 2013-09-03 2:15 ` Drew Adams
2013-09-03 2:23 ` Jambunathan K
1 sibling, 0 replies; 15+ messages in thread
From: Drew Adams @ 2013-09-03 2:15 UTC (permalink / raw)
To: Stefan Monnier, Jambunathan K; +Cc: 15234
> > Make C-x u repeatable.
>
> IIRC from last time this came up, the reason it's not is that you can
> use C-_, or C-/ instead, which are both trivially repeatable.
So it is not necessary to do it. But is it advantageous not to do it?
What are some downsides to doing it?
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-03 1:46 ` Stefan Monnier
2013-09-03 2:15 ` Drew Adams
@ 2013-09-03 2:23 ` Jambunathan K
2013-09-03 2:27 ` Drew Adams
1 sibling, 1 reply; 15+ messages in thread
From: Jambunathan K @ 2013-09-03 2:23 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 15234
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> Make C-x u repeatable.
>
> IIRC from last time this came up, the reason it's not is that you can
> use C-_, or C-/ instead, which are both trivially repeatable.
C-/ works good for me. My needs are met, this bug can be closed.
I think I sided with C-x u because `u' served as a good mnemonic.
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-03 2:23 ` Jambunathan K
@ 2013-09-03 2:27 ` Drew Adams
2013-09-03 6:32 ` Dani Moncayo
0 siblings, 1 reply; 15+ messages in thread
From: Drew Adams @ 2013-09-03 2:27 UTC (permalink / raw)
To: Jambunathan K, Stefan Monnier; +Cc: 15234
> >> Make C-x u repeatable.
> >
> > IIRC from last time this came up, the reason it's not is that you can
> > use C-_, or C-/ instead, which are both trivially repeatable.
>
> C-/ works good for me. My needs are met, this bug can be closed.
> I think I sided with C-x u because `u' served as a good mnemonic.
FWIW, I've always used `C-_' or `C-/'. But I still think it makes sense
to make `C-x u' repeatable. I haven't seen an argument to the contrary
(but if I do I might change my mind).
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-03 2:27 ` Drew Adams
@ 2013-09-03 6:32 ` Dani Moncayo
2013-09-03 14:49 ` Drew Adams
0 siblings, 1 reply; 15+ messages in thread
From: Dani Moncayo @ 2013-09-03 6:32 UTC (permalink / raw)
To: Drew Adams; +Cc: 15234, Jambunathan K
>> > IIRC from last time this came up, the reason it's not is that you can
>> > use C-_, or C-/ instead, which are both trivially repeatable.
>>
>> C-/ works good for me. My needs are met, this bug can be closed.
>> I think I sided with C-x u because `u' served as a good mnemonic.
>
> FWIW, I've always used `C-_' or `C-/'. But I still think it makes sense
> to make `C-x u' repeatable. I haven't seen an argument to the contrary
> (but if I do I might change my mind).
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12572#8
--
Dani Moncayo
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-03 6:32 ` Dani Moncayo
@ 2013-09-03 14:49 ` Drew Adams
2013-09-03 15:31 ` Dani Moncayo
0 siblings, 1 reply; 15+ messages in thread
From: Drew Adams @ 2013-09-03 14:49 UTC (permalink / raw)
To: Dani Moncayo; +Cc: 15234, Jambunathan K
> > FWIW, I've always used `C-_' or `C-/'. But I still think it makes sense
> > to make `C-x u' repeatable. I haven't seen an argument to the contrary
> > (but if I do I might change my mind).
>
> http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12572#8
[The argument there is that if `C-x u u u...' repeats `undo' then typing
`u' directly after that will not insert a `u' character.]
Fair enough. And thank you - it's always good to see real arguments for
and against a proposal.
It's a good argument. Not a particularly strong one, IMO, but reasonable.
It's not strong because there are other, simple ways of exiting `undo' so
`u' will then insert (`<left> <right>', `x DEL', whatever).
This is similar to arguments against binding keys in `isearch-mode-map'
to do things in Isearch because it stops them from ending Isearch.
Yes, some people might want to use `C-x u' for `undo' AND want `C-x u u'
to insert `u'. My vote would still be for making `C-x u u' repeatable.
You can't please everyone, unless you add an option or you have two
different commands (or you abuse some prefix-arg combination, and that's
already pretty overloaded).
To accommodate that argument, I would also vote for binding `C-x u' to a
new command, `undo-repeat', as mentioned earlier. (Or perhaps just reuse
the previously used name for `C-x u': `advertised-undo'.)
Anyone wanting to have `u' to insert directly after `C-x u' could easily
opt out in that case, by changing the key binding to the original,
non-repeatable `undo'.
Or if you want to be conservative here, make binding `C-x u' to
`undo-repeat'/`advertised-undo' opt-in instead of opt-out. I'd vote for
that too.
Bottom line: we should provide a repeatable undo command for `C-x u',
whether bound by default (preferable) or not (ok).
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-03 14:49 ` Drew Adams
@ 2013-09-03 15:31 ` Dani Moncayo
2013-09-03 16:19 ` Drew Adams
0 siblings, 1 reply; 15+ messages in thread
From: Dani Moncayo @ 2013-09-03 15:31 UTC (permalink / raw)
To: Drew Adams; +Cc: 15234, Jambunathan K
>> http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12572#8
>
> [The argument there is that if `C-x u u u...' repeats `undo' then typing
> `u' directly after that will not insert a `u' character.]
>
> Fair enough. And thank you - it's always good to see real arguments for
> and against a proposal.
>
> It's a good argument. Not a particularly strong one, IMO, but reasonable.
>
> It's not strong because there are other, simple ways of exiting `undo' so
> `u' will then insert (`<left> <right>', `x DEL', whatever).
Yes, there would be other ways of exiting undo, but I definitely
prefer not having to "exit" `undo'.
In general, I think that modal operations should be avoided as much as
possible, because IMO, they make the user interface more complex
(uglier, worse...).
--
Dani Moncayo
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-03 15:31 ` Dani Moncayo
@ 2013-09-03 16:19 ` Drew Adams
2013-09-03 16:41 ` Dani Moncayo
0 siblings, 1 reply; 15+ messages in thread
From: Drew Adams @ 2013-09-03 16:19 UTC (permalink / raw)
To: Dani Moncayo; +Cc: 15234, Jambunathan K
> > there are other, simple ways of exiting `undo' so
> > `u' will then insert (`<left> <right>', `x DEL', whatever).
>
> Yes, there would be other ways of exiting undo, but I definitely
> prefer not having to "exit" `undo'.
>
> In general, I think that modal operations should be avoided as much as
> possible, because IMO, they make the user interface more complex
> (uglier, worse...).
Yes and no. Isearch has been greatly *improved* by binding keys in
`isearch-mode-map' to do particular things. Some, especially RMS, have
argued against this, saying that it makes Isearch too modal - exactly
your argument.
But you have to "exit" Isearch anyway - it *is* modal, in a sense. It's
just that there were originally a zillion ways to exit and now there are
a zillion minus a few.
Wrt `undo': When you repeat `undo' and you go past where you wanted,
what do you do? You "exit" `undo' repeating by hitting some key, e.g.
`x', and then you start it again so it undoes that key and then undoes
its previous undoing. IOW, you already "exit" undo repetition, whether
you think of it that way or not.
No, of course it's not really a mode. One is not locked into repetition.
It's only modal in the sense that hitting an undo key again continues
undoing. And the only thing new here is that `u' becomes an undo key
(when it follows `C-x u'), just like `C-/'.
You could argue that any function that takes control over input (what
you type next) is modal to some extent. `y-or-n-p' is modal in this
sense. Likewise `query-replace' and lots of other useful commands.
And yes, as you point out, they can make the UI more complex. It's a
tradeoff.
Different users will feel differently about this feature, just as some
feel differently about the keys that have been added to Isearch. Some
will welcome the change as an improvement. Some will dislike it, e.g.,
because it changes their habits.
Out of curiosity, do you actually use `C-x u' today? Not that you need
to, to have an opinion about this. (I don't use it.)
How do you feel about having a separate command for this repeatable undo?
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-03 16:19 ` Drew Adams
@ 2013-09-03 16:41 ` Dani Moncayo
2013-09-03 20:58 ` Jambunathan K
0 siblings, 1 reply; 15+ messages in thread
From: Dani Moncayo @ 2013-09-03 16:41 UTC (permalink / raw)
To: Drew Adams; +Cc: 15234, Jambunathan K
> Out of curiosity, do you actually use `C-x u' today?
Yes I use it most of the times I need to undo something, because to
me, it is easier to type (in my spanish keyboard) than the other
(default) keys, "C-/" and "C-_", which both require to press 3 keys
simultaneously.
I only use "C-/" when I have to undo many operations.
(I've also bound "C-z" to "undo", but I hardly ever remember that)
> How do you feel about having a separate command for this repeatable undo?
Well, if there are people (like you or Jambunathan) who want it....
why not? But IMO the current "undo" command should remain bound to
"C-x u".
--
Dani Moncayo
^ permalink raw reply [flat|nested] 15+ messages in thread
* bug#15234: 24.3.50; Make C-x u repeatable
2013-09-03 16:41 ` Dani Moncayo
@ 2013-09-03 20:58 ` Jambunathan K
0 siblings, 0 replies; 15+ messages in thread
From: Jambunathan K @ 2013-09-03 20:58 UTC (permalink / raw)
To: Dani Moncayo; +Cc: 15234
C-x u u u u u C-g u
^^^
This should insert `u' right?
How do you move from Undo to Redo? Use the same thing to stop the undo
streak and get in to insert mode. (I generally use a mouse click)
When I started, C-x u served as a useful mnemonic to remember undo. Now
I find that C-/ is more easier to type because I don't have to leave the
home row.
If someone started with C-x u and IF undo is NOT repeatable, then there
is considerable amount of C-x-es that are wasted.
If I were you (i.e, using spanish keyboards), I would insist that C-x u
be repeatable. For me, C-/ is a superior choice than C-x u in
everyway. So I am more than happy with status quo.
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2013-09-03 20:58 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-01 12:21 bug#15234: 24.3.50; Make C-x u repeatable Jambunathan K
2013-09-01 15:23 ` Drew Adams
2013-09-01 16:11 ` Jambunathan K
2013-09-01 16:27 ` Juri Linkov
2013-09-01 16:45 ` Jambunathan K
2013-09-03 1:46 ` Stefan Monnier
2013-09-03 2:15 ` Drew Adams
2013-09-03 2:23 ` Jambunathan K
2013-09-03 2:27 ` Drew Adams
2013-09-03 6:32 ` Dani Moncayo
2013-09-03 14:49 ` Drew Adams
2013-09-03 15:31 ` Dani Moncayo
2013-09-03 16:19 ` Drew Adams
2013-09-03 16:41 ` Dani Moncayo
2013-09-03 20:58 ` Jambunathan K
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).