* Repeat undo-only is not working [not found] <20210823131240.rxfepbz4q2buo733.ref@Ergus> @ 2021-08-23 13:12 ` Ergus 2021-08-23 13:52 ` Fu Yuan 2021-08-23 16:06 ` Juri Linkov 0 siblings, 2 replies; 7+ messages in thread From: Ergus @ 2021-08-23 13:12 UTC (permalink / raw) To: Juri Linkov; +Cc: emacs-devel Hi Juri: I have this config: ``` (global-set-key (kbd "C-/") #'undo-only) (global-set-key (kbd "C-M-/") #'undo-redo) (with-eval-after-load 'repeat (defvar undo-redo-repeat-map (let ((map (make-sparse-keymap))) (define-key map "/" #'undo-only) (define-key map "M-/" #'undo-redo) (define-key map "U" #'undo) map) "Keymap to repeat undo-redo key sequences. Used in `repeat-mode'.") (put 'undo-only 'repeat-map 'undo-redo-repeat-map) (put 'undo-redo 'repeat-map 'undo-redo-repeat-map) (put 'undo 'repeat-map 'undo-redo-repeat-map)) ``` And for some reason the repeat map does not activates with "undo-only" (it doesn't even shows the message in the minibuffer) but with "undo" and "undo-redo" it works as expected. Is there anything special in "undo-only" that disables repeat-mode? ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Repeat undo-only is not working 2021-08-23 13:12 ` Repeat undo-only is not working Ergus @ 2021-08-23 13:52 ` Fu Yuan 2021-08-23 16:06 ` Juri Linkov 1 sibling, 0 replies; 7+ messages in thread From: Fu Yuan @ 2021-08-23 13:52 UTC (permalink / raw) To: Ergus; +Cc: emacs-devel, Juri Linkov > 在 2021年8月23日,上午6:17,Ergus <spacibba@aol.com> 写道: > > Hi Juri: > > I have this config: > > ``` > (global-set-key (kbd "C-/") #'undo-only) > (global-set-key (kbd "C-M-/") #'undo-redo) > > (with-eval-after-load 'repeat > (defvar undo-redo-repeat-map > (let ((map (make-sparse-keymap))) > (define-key map "/" #'undo-only) > (define-key map "M-/" #'undo-redo) > (define-key map "U" #'undo) > map) > "Keymap to repeat undo-redo key sequences. Used in `repeat-mode'.") > (put 'undo-only 'repeat-map 'undo-redo-repeat-map) > (put 'undo-redo 'repeat-map 'undo-redo-repeat-map) > (put 'undo 'repeat-map 'undo-redo-repeat-map)) > ``` > > And for some reason the repeat map does not activates with "undo-only" > (it doesn't even shows the message in the minibuffer) but with "undo" > and "undo-redo" it works as expected. Is there anything special in > "undo-only" that disables repeat-mode? > Maybe because undo-only sets this-command to undo? Yuan ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Repeat undo-only is not working 2021-08-23 13:12 ` Repeat undo-only is not working Ergus 2021-08-23 13:52 ` Fu Yuan @ 2021-08-23 16:06 ` Juri Linkov 2021-08-23 20:30 ` Ergus 2021-08-23 20:50 ` Jim Porter 1 sibling, 2 replies; 7+ messages in thread From: Juri Linkov @ 2021-08-23 16:06 UTC (permalink / raw) To: Ergus; +Cc: emacs-devel > ``` > (global-set-key (kbd "C-/") #'undo-only) > (global-set-key (kbd "C-M-/") #'undo-redo) > > (with-eval-after-load 'repeat > (defvar undo-redo-repeat-map > (let ((map (make-sparse-keymap))) > (define-key map "/" #'undo-only) > (define-key map "M-/" #'undo-redo) BTW, a typo here: (kbd "M-/") is missing. > (define-key map "U" #'undo) > map) > "Keymap to repeat undo-redo key sequences. Used in `repeat-mode'.") > (put 'undo-only 'repeat-map 'undo-redo-repeat-map) > (put 'undo-redo 'repeat-map 'undo-redo-repeat-map) > (put 'undo 'repeat-map 'undo-redo-repeat-map)) > ``` > > And for some reason the repeat map does not activates with "undo-only" > (it doesn't even shows the message in the minibuffer) but with "undo" > and "undo-redo" it works as expected. Is there anything special in > "undo-only" that disables repeat-mode? Sorry, this part of the feature is still unpolished. The intention was to disallow repeating of undo with the key sequence `C-/ u', but allow only with `C-x u u'. Maybe this was a wrong idea? Do you think it should be possible to type `C-/' to initiate the repeating sequence `C-/ u u u'? ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Repeat undo-only is not working 2021-08-23 16:06 ` Juri Linkov @ 2021-08-23 20:30 ` Ergus 2021-08-23 20:50 ` Jim Porter 1 sibling, 0 replies; 7+ messages in thread From: Ergus @ 2021-08-23 20:30 UTC (permalink / raw) To: Juri Linkov; +Cc: emacs-devel On Mon, Aug 23, 2021 at 07:06:01PM +0300, Juri Linkov wrote: > >Sorry, this part of the feature is still unpolished. >The intention was to disallow repeating of undo with >the key sequence `C-/ u', but allow only with `C-x u u'. >Maybe this was a wrong idea? Do you think it should be >possible to type `C-/' to initiate the repeating sequence >`C-/ u u u'? > The point is that in this case it is useful for doing things like: C-/ u u u r r So not only to start the sequence, but to call other commands in the map that maybe don't need a binding in the global map (undo-redo, winner-redo, avy-prev and some other tricks) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Repeat undo-only is not working 2021-08-23 16:06 ` Juri Linkov 2021-08-23 20:30 ` Ergus @ 2021-08-23 20:50 ` Jim Porter 2021-08-24 6:40 ` Juri Linkov 1 sibling, 1 reply; 7+ messages in thread From: Jim Porter @ 2021-08-23 20:50 UTC (permalink / raw) To: Juri Linkov, Ergus; +Cc: emacs-devel On 8/23/2021 9:06 AM, Juri Linkov wrote: > Sorry, this part of the feature is still unpolished. > The intention was to disallow repeating of undo with > the key sequence `C-/ u', but allow only with `C-x u u'. > Maybe this was a wrong idea? Do you think it should be > possible to type `C-/' to initiate the repeating sequence > `C-/ u u u'? For what it's worth, the intention matches my personal expectation. I'd be pretty surprised if a key sequence with a single input event (e.g. `C-/') activated a repeat-mode map. My mental model is that repeat-mode "saves" all but the last input event of a key sequence and then uses it as a prefix to the subsequently-pressed keys. Perhaps it should be possible to support the behavior in the original post, but I'm happy with how things are now. - Jim ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Repeat undo-only is not working 2021-08-23 20:50 ` Jim Porter @ 2021-08-24 6:40 ` Juri Linkov 2021-08-24 16:36 ` Jim Porter 0 siblings, 1 reply; 7+ messages in thread From: Juri Linkov @ 2021-08-24 6:40 UTC (permalink / raw) To: Jim Porter; +Cc: Ergus, emacs-devel >> Sorry, this part of the feature is still unpolished. >> The intention was to disallow repeating of undo with >> the key sequence `C-/ u', but allow only with `C-x u u'. >> Maybe this was a wrong idea? Do you think it should be >> possible to type `C-/' to initiate the repeating sequence >> `C-/ u u u'? > > For what it's worth, the intention matches my personal expectation. I'd be > pretty surprised if a key sequence with a single input event (e.g. `C-/') > activated a repeat-mode map. My mental model is that repeat-mode "saves" > all but the last input event of a key sequence and then uses it as a prefix > to the subsequently-pressed keys. > > Perhaps it should be possible to support the behavior in the original post, > but I'm happy with how things are now. So there is a need to distinguish between these cases C-/ --- u u u C-x u --- u u ("---" visually separates the initial and repeating sequence) and allow their customization. Maybe a new variable is sufficient that will inhibit checking that the last character exists in repeat-map. But what to do if the user wants to disable C-/ --- u u u, but still wants to use for gdb-step such sequence C-x C-a C-n --- n n n n where repeat-map has no C-n? ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Repeat undo-only is not working 2021-08-24 6:40 ` Juri Linkov @ 2021-08-24 16:36 ` Jim Porter 0 siblings, 0 replies; 7+ messages in thread From: Jim Porter @ 2021-08-24 16:36 UTC (permalink / raw) To: Juri Linkov; +Cc: Ergus, emacs-devel On 8/23/2021 11:40 PM, Juri Linkov wrote: >>> Sorry, this part of the feature is still unpolished. >>> The intention was to disallow repeating of undo with >>> the key sequence `C-/ u', but allow only with `C-x u u'. >>> Maybe this was a wrong idea? Do you think it should be >>> possible to type `C-/' to initiate the repeating sequence >>> `C-/ u u u'? >> >> For what it's worth, the intention matches my personal expectation. [snip] >> >> Perhaps it should be possible to support the behavior in the original post, >> but I'm happy with how things are now. > > So there is a need to distinguish between these cases > > C-/ --- u u u > C-x u --- u u > > ("---" visually separates the initial and repeating sequence) > and allow their customization. Maybe a new variable is sufficient > that will inhibit checking that the last character exists in repeat-map. > > But what to do if the user wants to disable C-/ --- u u u, > but still wants to use for gdb-step such sequence > C-x C-a C-n --- n n n n where repeat-map has no C-n? If there were a flag like `repeat-enable-aggressively' to enable things like C-/ --- u u u, then would it be possible to let a user who doesn't want C-/ --- u u u but *does* want C-x C-a C-n --- n n n to set that flag to nil and then call some function in their .emacs for each "extra" sequence in the repeat-map they want to enable? Another option would be to set `repeat-enable-aggressively' to t and then *remove* any repeat mappings the user doesn't like. I haven't looked at the implementation, so I'm not sure if either of those options are feasible, but they'd give users plenty of flexibility if they really wanted it. That said, I'd probably be happy with setting `repeat-enable-aggressively' to nil in my config and not worrying about overriding any specific cases. - Jim ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-08-24 16:36 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <20210823131240.rxfepbz4q2buo733.ref@Ergus> 2021-08-23 13:12 ` Repeat undo-only is not working Ergus 2021-08-23 13:52 ` Fu Yuan 2021-08-23 16:06 ` Juri Linkov 2021-08-23 20:30 ` Ergus 2021-08-23 20:50 ` Jim Porter 2021-08-24 6:40 ` Juri Linkov 2021-08-24 16:36 ` Jim Porter
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).