[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 2b7a486605 1/2: * lisp/outline.el: Don't set outline-minor font-l
From: |
Juri Linkov |
Subject: |
master 2b7a486605 1/2: * lisp/outline.el: Don't set outline-minor font-lock text property 'keymap'. |
Date: |
Mon, 10 Jan 2022 13:30:41 -0500 (EST) |
branch: master
commit 2b7a486605c01f7927de47ec2788f1eb2a4c0142
Author: Juri Linkov <juri@linkov.net>
Commit: Juri Linkov <juri@linkov.net>
* lisp/outline.el: Don't set outline-minor font-lock text property 'keymap'.
Instead of adding font-lock text property 'keymap' with
outline-minor-mode-cycle on headings in outline-minor-mode,
check for outline-minor-mode-cycle and outline-on-heading-p
in :filter on keys from the keymap of outline-minor-mode.
https://lists.gnu.org/archive/html/emacs-devel/2022-01/msg00180.html
(outline-minor-mode-cycle--bind): Add a condition on
outline-minor-mode-cycle
and outline-on-heading-p in :filter.
(outline-font-lock-keywords): Remove if-branches for
outline-minor-mode-cycle
that added keymap.
(outline-minor-mode-highlight-buffer): Don't put keymap on overlays.
(outline-minor-mode): Rewrite :keymap setting to rely on
easy-mmode-define-keymap, and add :inherit outline-minor-mode-cycle-map.
Don't check for outline-minor-mode-cycle to add font-lock keywords.
(outline--insert-open-button, outline--insert-close-button):
Remove :parent outline-minor-mode-cycle-map.
---
lisp/outline.el | 33 ++++++++++++++-------------------
1 file changed, 14 insertions(+), 19 deletions(-)
diff --git a/lisp/outline.el b/lisp/outline.el
index 0304d2334c..7a42cdc532 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -187,6 +187,7 @@ in the file it applies to.")
(function :tag "Custom filter"))
:version "28.1")
+(defvar outline-minor-mode-cycle)
(defun outline-minor-mode-cycle--bind (map key binding &optional filter)
(define-key map key
`(menu-item
@@ -195,8 +196,10 @@ in the file it applies to.")
:filter
,(or filter
(lambda (cmd)
- (when (or (not (functionp outline-minor-mode-cycle-filter))
- (funcall outline-minor-mode-cycle-filter))
+ (when (and outline-minor-mode-cycle
+ (outline-on-heading-p)
+ (or (not (functionp outline-minor-mode-cycle-filter))
+ (funcall outline-minor-mode-cycle-filter)))
cmd))))))
(defvar outline-minor-mode-cycle-map
@@ -223,14 +226,8 @@ in the file it applies to.")
;; Highlight headings according to the level.
(eval . (list (concat "^\\(?:" outline-regexp "\\).*")
0 '(if outline-minor-mode
- (if outline-minor-mode-cycle
- (if outline-minor-mode-highlight
- (list 'face (outline-font-lock-face)
- 'keymap outline-minor-mode-cycle-map)
- (list 'face nil
- 'keymap outline-minor-mode-cycle-map))
- (if outline-minor-mode-highlight
- (list 'face (outline-font-lock-face))))
+ (if outline-minor-mode-highlight
+ (list 'face (outline-font-lock-face)))
(outline-font-lock-face))
(when outline-minor-mode
(pcase outline-minor-mode-highlight
@@ -410,9 +407,7 @@ faces to major mode's faces."
(not (get-text-property (point) 'face))))
(overlay-put overlay 'face (outline-font-lock-face)))
(when outline-minor-mode-use-buttons
- (outline--insert-open-button))
- (when outline-minor-mode-cycle
- (overlay-put overlay 'keymap outline-minor-mode-cycle-map)))
+ (outline--insert-open-button)))
(goto-char (match-end 0))))))
;;;###autoload
@@ -421,11 +416,13 @@ faces to major mode's faces."
See the command `outline-mode' for more information on this mode."
:lighter " Outl"
- :keymap (list (cons [menu-bar] outline-minor-mode-menu-bar-map)
- (cons outline-minor-mode-prefix outline-mode-prefix-map))
+ :keymap (easy-mmode-define-keymap
+ `(([menu-bar] . ,outline-minor-mode-menu-bar-map)
+ (,outline-minor-mode-prefix . ,outline-mode-prefix-map))
+ :inherit outline-minor-mode-cycle-map)
(if outline-minor-mode
(progn
- (when (or outline-minor-mode-cycle outline-minor-mode-highlight)
+ (when outline-minor-mode-highlight
(if (and global-font-lock-mode (font-lock-specified-p major-mode))
(progn
(font-lock-add-keywords nil outline-font-lock-keywords t)
@@ -438,7 +435,7 @@ See the command `outline-mode' for more information on this
mode."
(setq-local line-move-ignore-invisible t)
;; Cause use of ellipses for invisible text.
(add-to-invisibility-spec '(outline . t)))
- (when (or outline-minor-mode-cycle outline-minor-mode-highlight)
+ (when outline-minor-mode-highlight
(if font-lock-fontified
(font-lock-remove-keywords nil outline-font-lock-keywords))
(remove-overlays nil nil 'outline-overlay t)
@@ -992,7 +989,6 @@ If non-nil, EVENT should be a mouse event."
(overlay-put o 'help-echo "Click to hide")
(overlay-put o 'keymap
(define-keymap
- :parent outline-minor-mode-cycle-map
"RET" #'outline-hide-subtree
"<mouse-2>" #'outline-hide-subtree)))))
@@ -1003,7 +999,6 @@ If non-nil, EVENT should be a mouse event."
(overlay-put o 'help-echo "Click to show")
(overlay-put o 'keymap
(define-keymap
- :parent outline-minor-mode-cycle-map
"RET" #'outline-show-subtree
"<mouse-2>" #'outline-show-subtree)))))