Lars Ingebrigtsen writes: > miha@kamnitnik.top writes: > >> - 'keymap outline-minor-mode-cycle-map) >> + 'outline-cycle-keymap >> + outline-minor-mode-cycle-map) > > I'm not very enthusiastic about messing with char-property-alias-alist > for something like this, but perhaps this is the best solution here? I > guess we don't have a mechanism to make a text property keymap "go away" > when a minor mode is deactivated? We have, it's called 'font-lock-extra-managed-props'. Using it, we can do this in a simpler way: diff --git a/lisp/outline.el b/lisp/outline.el index a4d2a3b7d7..7f78c04866 100644 --- a/lisp/outline.el +++ b/lisp/outline.el @@ -427,6 +427,9 @@ outline-minor-mode (when (or outline-minor-mode-cycle outline-minor-mode-highlight) (if (and global-font-lock-mode (font-lock-specified-p major-mode)) (progn + (when outline-minor-mode-cycle + (add-to-list 'font-lock-extra-managed-props 'keymap + nil #'eq)) (font-lock-add-keywords nil outline-font-lock-keywords t) (font-lock-flush)) (outline-minor-mode-highlight-buffer))) This has a small disadvantage: deactivating outline-minor-mode will remove all 'keymap' text properties from the whole buffer, even if they are added by other minor or major modes or whatever. With 'char-property-alias-alist', we can create a sort of namespacing to ensure that outline-minor-mode messes only with its own text properties. 'font-lock-mode' minor mode modifies 'char-property-alias-alist' in a similar way for a similar reason.