Slime (and elisp-slime-nav) uses
M-. to navigate to the symbol at point, and
M-, to pop back to previous marks. I like this.
. to repeat the previous editing command,
C-. to replace a just repeated command with a previously executed command, and
M-. to do the same in the reverse direction (useful if you overshoot with
C-.). I like this as well.
I'd like to use
M-. for slime-style navigation except when the previous command was
C-. (evil-repeat-pop), in which case I'd like
M-. to run evil-repeat-pop-next. I'm not sure how to go about implementing this.
I'm considering removing the evil
M-. binding and defining a hydra that's entered upon running evil-repeat-pop (
C-.) and which binds
M-. to evil-repeat-pop-next in a transient keymap.
I also considered binding
M-. to a wrapper function like,
(if (eql last-command 'evil-repeat-pop) (evil-repeat-pop-next) (elisp-slime-nav-find-elisp-thing-at-point))
but I want the "else" clause to do whatever
M-. would have done if evil wasn't enabled. This might be elisp-slime-nav-find-elisp-thing-at-point, xref-find-definitions, ggtags-find-tag-dwim, etc. depending on what modes and code-tagging approaches I'm using.