Subject: FR: It would be useful to have a repeat-exit-function for a repeat-map

From: Ramesh Nedunchezian <[email-masked]>
Date: Sat, 21 Jan 2023 14:07:31 +0530

FR: It would be useful to have a repeat-exit-function for a repeat-map

Overview of `thing.el`

==============

The attached file `thing.el`

- allows navigation by "thing"

- highlights the thing that is being navigated

- you can switch to a "parent thing" while navigating a "thing"

Video Demo of `thing.el`

===============

See the video https://github.com/rnchzn/scratch/issues/1 as I test drive `thing.el`. 

The right window shows the `*lossage*` buffer, and it updates as I run commands.

What happens in the Video

=================

In the context of the above video, I start navigating the `symbol` thing, and switch to  the `sexp / list` thing (`sexp / list` is the parent of `symbol` thing)

Additional details on `thing.el`

===================

I am using s-i, s-j, s-k and s-l as <up>, <left>, <down> and <right> keys using `input-decode-map`.

There are four keymaps.

- s-l and s-j are prefix keys that invoke `forward-thing-map` and `backward-thing-map`.

- The `thing-symbol-map` has `symbol` commands.

- The `thing-sexp-map` has `sexp` commands.

When `thing-symbol-map` is active you can press <up> or s-i to move to `thing-sexp-map`.

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)

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