]> git.eshelyaron.com Git - emacs.git/commitdiff
Make uncomment-region remove obtrusive spaces before tabs.
authorAlan Mackenzie <acm@muc.de>
Fri, 10 May 2019 07:28:54 +0000 (07:28 +0000)
committerAlan Mackenzie <acm@muc.de>
Fri, 10 May 2019 07:28:54 +0000 (07:28 +0000)
These spaces were typically inserted earlier by comment-region.  This patch
makes these two complementary functions closer to inverses.

* lisp/newcomment.el (uncomment-region-default-1): Remove spaces before a tab
where the comment opener has just been removed.

lisp/newcomment.el

index 9d919ccbbea26e01c5fb7a6dbe09ae3911367a0c..ab2be080a33bd037c0a92acded47551ca70b2da0 100644 (file)
@@ -1001,7 +1001,15 @@ This function is the default value of `uncomment-region-function'."
                       (re-search-forward sre (line-end-position) t))
                (replace-match "" t t nil (if (match-end 2) 2 1)))))
          ;; Go to the end for the next comment.
-         (goto-char (point-max))))))
+         (goto-char (point-max)))
+        ;; Remove any obtrusive spaces left preceding a tab at `spt'.
+        (when (and (eq (char-after spt) ?\t) (eq (char-before spt) ? )
+                   (> tab-width 0))
+          (save-excursion
+            (goto-char spt)
+            (let* ((fcol (current-column))
+                   (slim (- (point) (mod fcol tab-width))))
+              (delete-char (- (skip-chars-backward " " slim)))))))))
   (set-marker end nil))
 
 (defun uncomment-region-default (beg end &optional arg)