summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Pluim <rpluim@gmail.com>2023-01-24 20:37:56 +0200
committerJuri Linkov <juri@linkov.net>2023-01-24 20:37:56 +0200
commit695e9f71c3f13c1338de5bb653d71462a6e436b8 (patch)
treefb8aeef9307d887e20b638b9d21f34506a4126c8
parente31a56239654a74b60e51f20799c8b09522082e4 (diff)
downloademacs-695e9f71c3f.tar.gz
Use named keymaps for outline buttons
https://lists.gnu.org/archive/html/emacs-devel/2023-01/msg00334.html * lisp/outline.el (outline-button-icon-map) (outline-overlay-button-map, outline-inserted-button-map): Keymaps refactored from outline--create-button-icons and outline--insert-button. (outline--create-button-icons, outline--insert-button): Move keymaps to separate variables.
-rw-r--r--lisp/outline.el33
1 files changed, 18 insertions, 15 deletions
diff --git a/lisp/outline.el b/lisp/outline.el
index 0bfda8388ed..a89985d1990 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -1776,6 +1776,20 @@ With a prefix argument, show headings up to that LEVEL."
;;; Button/margin indicators
+(defvar-keymap outline-button-icon-map
+ "<mouse-2>" #'outline-cycle
+ ;; Need to override the global binding
+ ;; `mouse-appearance-menu' with <down->:
+ "S-<down-mouse-1>" #'ignore
+ "S-<mouse-1>" #'outline-cycle-buffer)
+
+(defvar-keymap outline-overlay-button-map
+ "RET" #'outline-cycle)
+
+(defvar-keymap outline-inserted-button-map
+ :parent (make-composed-keymap outline-button-icon-map
+ outline-overlay-button-map))
+
(defun outline--create-button-icons ()
(pcase outline-minor-mode-use-buttons
('in-margins
@@ -1808,12 +1822,7 @@ With a prefix argument, show headings up to that LEVEL."
(propertize (icon-string icon-name)
'mouse-face 'default
'follow-link 'mouse-face
- 'keymap (define-keymap
- "<mouse-2>" #'outline-cycle
- ;; Need to override the global binding
- ;; `mouse-appearance-menu' with <down->:
- "S-<down-mouse-1>" #'ignore
- "S-<mouse-1>" #'outline-cycle-buffer)))
+ 'keymap outline-button-icon-map))
(list 'outline-open
(if outline--use-rtl 'outline-close-rtl 'outline-close))))))
@@ -1839,19 +1848,13 @@ With a prefix argument, show headings up to that LEVEL."
(overlay-put o 'face (plist-get icon 'face))
(overlay-put o 'follow-link 'mouse-face)
(overlay-put o 'mouse-face 'highlight)
- (overlay-put o 'keymap (define-keymap
- "RET" #'outline-cycle
- "<mouse-2>" #'outline-cycle
- ;; Need to override the global binding
- ;; `mouse-appearance-menu' with <down->:
- "S-<down-mouse-1>" #'ignore
- "S-<mouse-1>" #'outline-cycle-buffer)))
+ (overlay-put o 'keymap outline-inserted-button-map))
('in-margins
(overlay-put o 'before-string icon)
- (overlay-put o 'keymap (define-keymap "RET" #'outline-cycle)))
+ (overlay-put o 'keymap outline-overlay-button-map))
(_
(overlay-put o 'before-string icon)
- (overlay-put o 'keymap (define-keymap "RET" #'outline-cycle))))))))
+ (overlay-put o 'keymap outline-overlay-button-map)))))))
(defun outline--fix-up-all-buttons (&optional from to)
(when outline-minor-mode-use-buttons