Subject: bug#47878: Mark outline commands as repeatable

From: Juri Linkov <[email-masked]>
Date: Mon, 19 Apr 2021 23:45:17 +0300

> This is a suggested extension for repeat-mode. outline-mode, especially
> outline-minor-mode commands are somewhat inconvenient to access ("C-x @
> C-<something>" requires me to change modifiers mid-input twice). When
> repeat-mode is enabled, this would allow me to access all outline keys
> in just one key-press.
>
> One might want to discuss if outline-mode-prefix-map should be directly
> marked as the repeat-map

Is it possible to get the name of the keymap whose keys were bound to
and invoked the current command?  If such function exists, then the
feature of marking the whole keymap as repeatable could be discussed.

> or if a subset should be used. My approach requires less effort
> but might be more confusing.

Indeed, a subset would be more preferable since it reduces the number
of keys that users might want to use outside of the repeating sequence,
e.g. to type C-l to recenter instead of outline-hide-leaves.

To solve this problem the whole set of keys could be split to groups
of repeatable keymaps:

1. navigation keymap:

C-c @ C-b       outline-backward-same-level
C-c @ C-f       outline-forward-same-level
C-c @ C-n       outline-next-visible-heading
C-c @ C-p       outline-previous-visible-heading
C-c @ C-u       outline-up-heading

This would be the most useful keymap to make navigation keys repeatable.

2. editing keymap:

C-c @ RET       outline-insert-heading
C-c @ C-v       outline-move-subtree-down
C-c @ C-^       outline-move-subtree-up
C-c @ @         outline-mark-subtree
C-c @ C-<       outline-promote
C-c @ C->       outline-demote

Only outline-promote/outline-demote and 
outline-move-subtree-down/outline-move-subtree-up
could be repeatable.

3. visibility keymap:

C-c @ C-a       outline-show-all
C-c @ C-e       outline-show-entry
C-c @ TAB       outline-show-children
C-c @ C-k       outline-show-branches
C-c @ C-s       outline-show-subtree
C-c @ C-c       outline-hide-entry
C-c @ C-d       outline-hide-subtree
C-c @ C-l       outline-hide-leaves
C-c @ C-o       outline-hide-other
C-c @ C-q       outline-hide-sublevels
C-c @ C-t       outline-hide-body

I doubt if these keys need to be repeatable.
We have new Org-like short keys TAB and S-TAB
that are more convenient to use in outline-mode
and in outline-minor-mode.