emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/ws-butler e5fc878904 54/64: disable changing leading white


From: Stefan Kangas
Subject: [nongnu] elpa/ws-butler e5fc878904 54/64: disable changing leading whitespace by default
Date: Fri, 31 Dec 2021 11:09:34 -0500 (EST)

branch: elpa/ws-butler
commit e5fc878904b7b898bb7087ca3aa25ca0428893cf
Author: Ian Kelling <ian@iankelling.org>
Commit: Ian Kelling <ian@iankelling.org>

    disable changing leading whitespace by default
---
 ws-butler.el | 39 +++++++++++++++++++++++++++------------
 1 file changed, 27 insertions(+), 12 deletions(-)

diff --git a/ws-butler.el b/ws-butler.el
index 1fb76c362c..b0a161c4d9 100644
--- a/ws-butler.el
+++ b/ws-butler.el
@@ -78,6 +78,19 @@ i.e. only the \"virtual\" space is preserved in the buffer."
   :type 'boolean
   :group 'ws-butler)
 
+(defcustom ws-butler-convert-leading-tabs-or-spaces
+  nil
+  "Make leading whitespace be tabs or spaces
+
+If `indent-tabs-mode' is non-nil, call `tabify', else call
+`untabify'. Do neither if `smart-tabs-mode' is enabled for this
+buffer. This is off by default because it's unwanted if you
+occasionally edit files where leading whitespace should not be
+changed in this specific way."
+
+  :type 'boolean
+  :group 'ws-butler)
+
 (defcustom ws-butler-global-exempt-modes
   '(markdown-mode)
   "Don't enable ws-butler in modes that inherit from these.
@@ -167,18 +180,20 @@ replaced by spaces, and vice versa if t."
    ;;  _much slower would be:       (replace-regexp "[ \t]+$" "")
    (goto-char (point-min))
    (while (not (eobp))
-     ;; convert leading tabs to spaces or v.v.
-     (let ((eol (point-at-eol)))
-       (if indent-tabs-mode
-           (progn
-             (skip-chars-forward "\t" eol)
-             (when (eq (char-after) ?\ )
-               (tabify (point) (progn (skip-chars-forward " \t" eol)
-                                      (point)))))
-         (skip-chars-forward " " eol)
-         (when (eq (char-after) ?\t )
-           (untabify (point) (progn (skip-chars-forward " \t" eol)
-                                    (point))))))
+     (when (and ws-butler-convert-leading-tabs-or-spaces
+                (not (bound-and-true-p smart-tabs-mode)))
+       ;; convert leading tabs to spaces or v.v.
+       (let ((eol (point-at-eol)))
+         (if indent-tabs-mode
+             (progn
+               (skip-chars-forward "\t" eol)
+               (when (eq (char-after) ?\ )
+                 (tabify (point) (progn (skip-chars-forward " \t" eol)
+                                        (point)))))
+           (skip-chars-forward " " eol)
+           (when (eq (char-after) ?\t )
+             (untabify (point) (progn (skip-chars-forward " \t" eol)
+                                      (point)))))))
      (end-of-line)
      (delete-horizontal-space)
      (forward-line 1)))



reply via email to

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