branch: elpa/ws-butler
commit 0d5fff6a3587fc86d6b8e4b1633f3fe6b456a797
Author: Sean Whitton <spwhit...@spwhitton.name>
Commit: Sean Whitton <spwhit...@spwhitton.name>

    ws-butler--global-mode-turn-on: Check for the `special' mode-class
---
 ws-butler.el | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/ws-butler.el b/ws-butler.el
index b33e4a383f..7e1801420f 100644
--- a/ws-butler.el
+++ b/ws-butler.el
@@ -6,7 +6,7 @@
 ;; Author: Le Wang <l26w...@gmail.com>
 ;; Maintainer: Sean Whitton <spwhit...@spwhitton.name>
 ;; Package-Requires: ((emacs "24.1"))
-;; Version: 1.1
+;; Version: 1.2pre
 ;; URL: https://elpa.nongnu.org/nongnu/ws-butler.html
 ;; Keywords: text
 
@@ -33,6 +33,13 @@
 
 ;;; News:
 
+;; Ver 1.2 YYYY/MM/DD Sean Whitton
+;;     When `special-mode' is in `ws-butler-global-exempt-modes', also check
+;;     whether a mode has a `mode-class' of `special', and don't activate
+;;     `ws-butler-mode' if it does.
+;;     Remove entries from `ws-butler-global-exempt-modes' that the preceding
+;;     changes renders redundant.
+;;
 ;; Ver 1.1 2025/02/21 Sean Whitton
 ;;     Exempt `compilation-mode' from `ws-butler-global-mode' by default.
 ;;     Clarify docstring of `ws-butler-global-exempt-modes'.
@@ -72,17 +79,13 @@ If `smart-tabs-mode' is enabled, these conversions are 
suppressed."
   '(special-mode
     minibuffer-mode
 
-    comint-mode
-    term-mode
-    eshell-mode
-    compilation-mode
-
-    diff-mode
     message-mode
     markdown-mode)
   "Trailing whitespace-significant major modes.
 `ws-butler-global-mode' will not activate `ws-butler-mode' in these modes,
-or in their derivatives."
+or in their derivatives.
+If this list contains `special-mode', then in addition, `ws-butler-mode' will
+not activate in all modes with a `mode-class' of `special'."
   :type '(repeat (symbol :tag "Major mode"))
   :group 'ws-butler)
 
@@ -308,9 +311,13 @@ only for lines modified by you."
 ;;
 ;; However, this would mean bumping our minimum required Emacs version to
 ;; 28.1.  For a package like this one, I think it is too soon for that.
+;;
+;; We would also want to retain the special handling of `special-mode'.
 (defun ws-butler--global-mode-turn-on ()
   "Enable `ws-butler-mode' unless current major mode is exempt."
-  (unless (apply #'derived-mode-p ws-butler-global-exempt-modes)
+  (unless (or (and (memq 'special-mode ws-butler-global-exempt-modes)
+                  (eq (get major-mode 'mode-class) 'special))
+             (apply #'derived-mode-p ws-butler-global-exempt-modes))
     (ws-butler-mode 1)))
 
 ;;;###autoload

Reply via email to