On 30/01/23 13:59, Juri Linkov wrote: > Thanks for the feature request. > >> What I need from repeat.el >> ================ >> When I exit the repeat map---for example when I press in the video, >> and leave the "navigation mode" to "edit mode"---I want to unhighight the thing. >> That is I propose that there be a provision in `repeat.el` to associate >> an `exit-function` with a repeatable map >> (put 'thing-sexp-map 'repeat-exit-function 'thing-unhighlight) > The problem with the symbol property name `repeat-exit-function` is that > the existing variable `repeat-exit-function` has another purpose. > > For example, for `repeat-exit-timeout` there is the global variable > and the symbol property with the same names because they are doing > the same thing. > > But the variable `repeat-exit-function` is different. It's not > customizable by the user. So another name would be preferable. > >> Additional Note >> ========== >> If you squint a bit, `repeat-echo-function` is an `exit-function` >> ... but the problem is it doesn't provide what map is being exited. >> See bug#60353: 30.0.50; Make `repeat-echo-function` as a LIST of functions > Indeed, before adding a new symbol property could you please try to use > the existing `repeat-echo-function`. It's called with the nil argument > on exit. Do you need a symbol property `repeat-echo-function`, or can use > the global variable, e.g. by checking some buffer-local variable in it? I don't need exit function per-map. I can use the "global" `repeat-echo-function' to clean up after the `repeat-map`'s exit, like this: (add-function :after repeat-echo-function (defun thing-exit-function (keymap) (cond (keymap (ignore)) (t (thing-unhighlight))))) You have addressed my main concern. You may close the bug. Some remarks. 1. You may consider introducing a `repeat-enter/leave-function`---globally, AND per-map--- and plugin the existing `repeat-echo-function` in to that. IOW, the "existing" `repeat-echo-function` is a generic enter/leave dispatcher for all `repeat-maps`. 2. (I believe) introducing an "enter"/"leave" function per-repeat map is a much cleaner approach, and could be put to good use by users. FWIW, the video I linked https://github.com/rnchzn/scratch/issues/1 is my own take on what `objed` (https://github.com/clemera/objed) does.