emacs-diffs
[Top][All Lists]
Advanced

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

master c63d2ef: Remove outline-cycle-minor-mode and outline-cycle-highli


From: Juri Linkov
Subject: master c63d2ef: Remove outline-cycle-minor-mode and outline-cycle-highlight-minor-mode
Date: Sun, 7 Mar 2021 13:52:53 -0500 (EST)

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

    Remove outline-cycle-minor-mode and outline-cycle-highlight-minor-mode
    
    * lisp/outline.el (outline-font-lock-keywords): Use OVERRIDE or
    LAXMATCH depending on outline-minor-mode-highlight in outline-minor-mode.
    (outline-minor-mode-cycle, outline-minor-mode-highlight): Promote
    defvar to defcustom.
    (outline-minor-mode-highlight-buffer): Don't override existing faces.
    (outline-cycle-minor-mode, outline-cycle-highlight-minor-mode):
    Remove minor modes.
    
    * etc/compilation.txt:
    * etc/grep.txt: Enable outline-minor-mode-cycle and
    outline-minor-mode-highlight with outline-minor-mode.
    https://lists.gnu.org/archive/html/emacs-devel/2021-03/msg00144.html
---
 etc/NEWS            | 13 +++++-----
 etc/compilation.txt |  4 ++-
 etc/grep.txt        |  4 ++-
 lisp/outline.el     | 71 ++++++++++++++++++++++-------------------------------
 4 files changed, 42 insertions(+), 50 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index c4feabb..cf21a7b 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -369,19 +369,18 @@ Typing 'TAB' on a heading line cycles the current section 
between
 anywhere in the buffer cycles the whole buffer between "only top-level
 headings", "all headings and subheadings", and "show all" states.
 
-*** New minor mode 'outline-cycle-minor-mode'.
-This mode is a variant of 'outline-minor-mode', with the difference
+*** New option 'outline-minor-mode-cycle'.
+This option customizes 'outline-minor-mode', with the difference
 that 'TAB' and 'S-TAB' on heading lines cycle heading visibility.
 Typing 'TAB' on a heading line cycles the current section between
 "hide all", "subheadings", and "show all" states.  Typing 'S-TAB' on a
 heading line cycles the whole buffer between "only top-level
 headings", "all headings and subheadings", and "show all" states.
 
-*** New minor mode 'outline-cycle-highlight-minor-mode'.
-This mode is a variant of 'outline-cycle-minor-mode'.  It puts
-highlighting on heading lines using standard outline faces.  This
-works well only when there are no conflicts with faces used by the
-major mode.
+*** New option 'outline-minor-mode-highlight'.
+This option customizes 'outline-minor-mode'.  It puts highlighting
+on heading lines using standard outline faces.  This works well only
+when there are no conflicts with faces used by the major mode.
 
 
 * Changes in Specialized Modes and Packages in Emacs 28.1
diff --git a/etc/compilation.txt b/etc/compilation.txt
index 05c0464..01d4df1b0 100644
--- a/etc/compilation.txt
+++ b/etc/compilation.txt
@@ -696,5 +696,7 @@ COPYING PERMISSIONS:
 
 ;;; Local Variables:
 ;;; outline-regexp: "\\*\\_>"
-;;; eval: (outline-cycle-highlight-minor-mode)
+;;; outline-minor-mode-cycle: t
+;;; outline-minor-mode-highlight: t
+;;; eval: (outline-minor-mode 1)
 ;;; End:
diff --git a/etc/grep.txt b/etc/grep.txt
index a54ebf8..0370ae4 100644
--- a/etc/grep.txt
+++ b/etc/grep.txt
@@ -125,5 +125,7 @@ COPYING PERMISSIONS:
 ;;; Local Variables:
 ;;; eval: (let ((inhibit-read-only t) (compilation-filter-start (point-min))) 
(save-excursion (goto-char (point-max)) (grep-filter) (set-buffer-modified-p 
nil)))
 ;;; buffer-read-only: t
-;;; eval: (outline-cycle-highlight-minor-mode)
+;;; outline-minor-mode-cycle: t
+;;; outline-minor-mode-highlight: t
+;;; eval: (outline-minor-mode 1)
 ;;; End:
diff --git a/lisp/outline.el b/lisp/outline.el
index 640c0e0..a859f9a 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -186,7 +186,7 @@ in the file it applies to.")
       (define-key map (kbd "TAB") tab-binding)
       (define-key map (kbd "<backtab>") #'outline-cycle-buffer))
     map)
-  "Keymap used by `outline-mode-map' and `outline-cycle-minor-mode'.")
+  "Keymap used by `outline-mode-map' and `outline-minor-mode-cycle'.")
 
 (defvar outline-mode-map
   (let ((map (make-sparse-keymap)))
@@ -199,16 +199,19 @@ in the file it applies to.")
   '(
     ;; Highlight headings according to the level.
     (eval . (list (concat "^\\(?:" outline-regexp "\\).+")
-                  0 '(if outline-minor-mode-cycle
-                         (if outline-minor-mode-highlight
-                             (list 'face (outline-font-lock-face)
-                                   'keymap outline-mode-cycle-map)
-                           (list 'face nil
-                                 'keymap outline-mode-cycle-map))
+                  0 '(if outline-minor-mode
+                         (if outline-minor-mode-cycle
+                             (if outline-minor-mode-highlight
+                                 (list 'face (outline-font-lock-face)
+                                       'keymap outline-mode-cycle-map)
+                               (list 'face nil
+                                     'keymap outline-mode-cycle-map)))
                        (outline-font-lock-face))
-                  nil
-                  (if (or outline-minor-mode-cycle
-                          outline-minor-mode-highlight)
+                  (when (and outline-minor-mode
+                             (eq outline-minor-mode-highlight 'override))
+                    'append)
+                  (if (and outline-minor-mode
+                           (eq outline-minor-mode-highlight t))
                       'append
                     t))))
   "Additional expressions to highlight in Outline mode.")
@@ -324,18 +327,28 @@ After that, changing the prefix key requires manipulating 
keymaps."
          (define-key outline-minor-mode-map val outline-mode-prefix-map)
          (set-default sym val)))
 
-(defvar outline-minor-mode-cycle nil
+(defcustom outline-minor-mode-cycle nil
   "Enable cycling of headings in `outline-minor-mode'.
+When enabled, it puts a keymap with cycling keys on heading lines.
 When point is on a heading line, then typing `TAB' cycles between `hide all',
 `headings only' and `show all' (`outline-cycle').  Typing `S-TAB' on
 a heading line cycles the whole buffer (`outline-cycle-buffer').
-Typing these keys anywhere outside heading lines uses their default bindings.")
+Typing these keys anywhere outside heading lines uses their default bindings."
+  :type 'boolean
+  :version "28.1")
 ;;;###autoload(put 'outline-minor-mode-cycle 'safe-local-variable 'booleanp)
 
-(defvar outline-minor-mode-highlight nil
+(defcustom outline-minor-mode-highlight nil
   "Highlight headings in `outline-minor-mode' using font-lock keywords.
 Non-nil value works well only when outline font-lock keywords
-don't conflict with the major mode's font-lock keywords.")
+don't conflict with the major mode's font-lock keywords.
+When t, it puts outline faces only if there are no major mode's faces
+on headings.  When `override', it tries to append outline faces
+to major mode's faces."
+  :type '(choice (const :tag "No highlighting" nil)
+                 (const :tag "Append to major mode faces" override)
+                 (const :tag "Highlight separately from major mode faces" t))
+  :version "28.1")
 ;;;###autoload(put 'outline-minor-mode-highlight 'safe-local-variable 
'booleanp)
 
 (defun outline-minor-mode-highlight-buffer ()
@@ -347,7 +360,9 @@ don't conflict with the major mode's font-lock keywords.")
         (let ((overlay (make-overlay (match-beginning 0)
                                      (match-end 0))))
           (overlay-put overlay 'outline-overlay t)
-          (when outline-minor-mode-highlight
+          (when (or (eq outline-minor-mode-highlight 'override)
+                    (and (eq outline-minor-mode-highlight t)
+                         (not (get-text-property (point) 'face))))
             (overlay-put overlay 'face (outline-font-lock-face)))
           (when outline-minor-mode-cycle
             (overlay-put overlay 'keymap outline-mode-cycle-map)))
@@ -386,32 +401,6 @@ See the command `outline-mode' for more information on 
this mode."
     ;; When turning off outline mode, get rid of any outline hiding.
     (outline-show-all)))
 
-;;;###autoload
-(define-minor-mode outline-cycle-minor-mode
-  "Toggle Outline-Cycle minor mode.
-Set the buffer-local variable `outline-minor-mode-cycle' to t
-and enable `outline-minor-mode'."
-  nil nil nil
-  (if outline-cycle-minor-mode
-      (progn
-        (setq-local outline-minor-mode-cycle t)
-        (outline-minor-mode +1))
-    (outline-minor-mode -1)
-    (kill-local-variable 'outline-minor-mode-cycle)))
-
-;;;###autoload
-(define-minor-mode outline-cycle-highlight-minor-mode
-  "Toggle Outline-Cycle-Highlight minor mode.
-Set the buffer-local variable `outline-minor-mode-highlight' to t
-and enable `outline-cycle-minor-mode'."
-  nil nil nil
-  (if outline-cycle-highlight-minor-mode
-      (progn
-        (setq-local outline-minor-mode-highlight t)
-        (outline-cycle-minor-mode +1))
-    (outline-cycle-minor-mode -1)
-    (kill-local-variable 'outline-minor-mode-highlight)))
-
 (defvar-local outline-heading-alist ()
   "Alist associating a heading for every possible level.
 Each entry is of the form (HEADING . LEVEL).



reply via email to

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