emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 5fbf93d918: * lisp/outline.el: More improvements for buttons/marg


From: Juri Linkov
Subject: master 5fbf93d918: * lisp/outline.el: More improvements for buttons/margins (bug#57813)
Date: Wed, 21 Sep 2022 02:43:26 -0400 (EDT)

branch: master
commit 5fbf93d918ba85afa8506569328dfc9c510cee42
Author: Juri Linkov <juri@linkov.net>
Commit: Juri Linkov <juri@linkov.net>

    * lisp/outline.el: More improvements for buttons/margins (bug#57813)
    
    (outline-minor-mode-use-margins): Don't use for modes derived from help-mode
    that are handled by 'outline-minor-mode-use-buttons'.
    (outline-open, outline-close, outline-close-rtl): Use image height
    proportional to font height of 0.8em.
    (outline-minor-mode): Remove overlays 'outline-button' and 'outline-margin',
    and move such overlay removal after the call of 'outline-show-all'
    that might trigger overlay addition.
---
 lisp/outline.el | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/lisp/outline.el b/lisp/outline.el
index 3503ba2265..93a9247f61 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -298,7 +298,8 @@ buffers (yet) -- that will be amended in a future version."
 (defvar-local outline--use-rtl nil
   "Non-nil when direction of clickable buttons is right-to-left.")
 
-(defcustom outline-minor-mode-use-margins '(derived-mode . special-mode)
+(defcustom outline-minor-mode-use-margins '(and (derived-mode . special-mode)
+                                                (not (derived-mode . 
help-mode)))
   "Whether to display clickable buttons in the margins.
 The value should be a `buffer-match-p' condition.
 
@@ -312,7 +313,7 @@ Note that this feature is meant to be used in editing 
buffers."
   "Non-nil when buffer displays clickable buttons in the margins.")
 
 (define-icon outline-open nil
-  '((image "outline-open.svg" "outline-open.pbm" :height 15)
+  '((image "outline-open.svg" "outline-open.pbm" :height (0.8 . em))
     (emoji "🔽")
     (symbol " ▼ ")
     (text " open "))
@@ -321,7 +322,7 @@ Note that this feature is meant to be used in editing 
buffers."
   :help-echo "Close this section")
 
 (define-icon outline-close nil
-  '((image "outline-close.svg" "outline-close.pbm" :height 15)
+  '((image "outline-close.svg" "outline-close.pbm" :height (0.8 . em))
     (emoji "▶️")
     (symbol " ▶ ")
     (text " close "))
@@ -330,7 +331,8 @@ Note that this feature is meant to be used in editing 
buffers."
   :help-echo "Open this section")
 
 (define-icon outline-close-rtl outline-close
-  '((image "outline-close.svg" "outline-close.pbm" :height 15 :rotation 180)
+  '((image "outline-close.svg" "outline-close.pbm" :height (0.8 . em)
+           :rotation 180)
     (emoji "◀️")
     (symbol " ◀ "))
   "Right-to-left icon used for buttons in closed outline sections."
@@ -536,23 +538,26 @@ See the command `outline-mode' for more information on 
this mode."
        ;; Cause use of ellipses for invisible text.
        (add-to-invisibility-spec '(outline . t))
        (outline-apply-default-state))
+    (setq line-move-ignore-invisible nil)
+    ;; Cause use of ellipses for invisible text.
+    (remove-from-invisibility-spec '(outline . t))
+    ;; When turning off outline mode, get rid of any outline hiding.
+    (outline-show-all)
     (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)
-      (font-lock-flush))
+      (font-lock-flush)
+      (remove-overlays nil nil 'outline-overlay t))
+    (when outline--use-buttons
+      (remove-overlays nil nil 'outline-button t))
     (when outline--use-margins
+      (remove-overlays nil nil 'outline-margin t)
       (if outline--use-rtl
           (setq-local right-margin-width (1- right-margin-width))
         (setq-local left-margin-width (1- left-margin-width)))
       (setq-local fringes-outside-margins nil)
       ;; Force removal of margins
-      (set-window-buffer nil (window-buffer)))
-    (setq line-move-ignore-invisible nil)
-    ;; Cause use of ellipses for invisible text.
-    (remove-from-invisibility-spec '(outline . t))
-    ;; When turning off outline mode, get rid of any outline hiding.
-    (outline-show-all)))
+      (set-window-buffer nil (window-buffer)))))
 
 (defvar-local outline-heading-alist ()
   "Alist associating a heading for every possible level.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]