Sometimes you want to repeat an Emacs function, even when calling it originally took a few keystrokes. Here's how to make it easily repeatable. Say we have a simple function that inserts "here":

(defun insert-here () (interactive) (insert "here"))

And bind it to C-c h h :

(global-set-key (kbd "C-c h h") #'insert-here)

This works; every time we type C-c h h , we insert "here" into the buffer. But often we want to repeat the command. Although we could use C-x z to repeat the last command, that's still two keypresses, and isn't the easiest thing to press once you've typed C-c h h . So instead, we can make a sparse keymap and in it, set "h" to this command.

(setq insert-here-keymap (let ((map (make-sparse-keymap))) (define-key map (kbd "h") #'insert-here) map))

Now we just need to use this keymap inside #'insert-here . We can't use #'use-local-map , because that will mean we can never insert h again: we'd always call #'use-local-map . Instead, we can use #'set-transient-map , which still uses the local keymap, but deactivates the keymap after a single key is pressed.

(defun insert-here () (interactive) (insert "here") (set-transient-map insert-here-keymap))