Thanks for the feature request.What I need from repeat.el ================ When I exit the repeat map---for example when I press <return> 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 functionsIndeed, 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.