From: Alan Mackenzie <acm@muc.de>
Date: Fri, 15 Jan 2016 12:32:32 +0000 (+0000)
Subject: In comment-dwim with style `extra-line', respect indent-tabs-mode.
X-Git-Tag: emacs-26.0.90~2314
X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5a78876770255ee5e4f2dd0e9b5de30389b195da;p=emacs.git

In comment-dwim with style `extra-line', respect indent-tabs-mode.

This fixes bug #22369.

* lisp/newcomment.el (comment-make-bol-ws): New function.
(comment-make-extra-lines): Use new function instead of a crude `make-string'.

[This reapplies commit 016b3d5894b8c424eab262aeefc646c6cd03a70a,
which was inadvertently lost by merge commit
7823745acbe9b87eea2db4ef434e379fc903ec35.]
---

diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index 88ed08d4429..80b52ed9561 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -990,6 +990,14 @@ comment markers."
 	  (goto-char (point-max))))))
   (set-marker end nil))
 
+(defun comment-make-bol-ws (len)
+  "Make a white-space string of width LEN for use at BOL.
+When `indent-tabs-mode' is non-nil, tab characters will be used."
+  (if (and indent-tabs-mode (> tab-width 0))
+      (concat (make-string (/ len tab-width) ?\t)
+	      (make-string (% len tab-width) ? ))
+    (make-string len ? )))
+
 (defun comment-make-extra-lines (cs ce ccs cce min-indent max-indent &optional block)
   "Make the leading and trailing extra lines.
 This is used for `extra-line' style (or `box' style if BLOCK is specified)."
@@ -1025,8 +1033,8 @@ This is used for `extra-line' style (or `box' style if BLOCK is specified)."
 	  (setq cs (replace-match fill t t s)))
 	(string-match re e)
 	(setq ce (replace-match fill t t e))))
-    (cons (concat cs "\n" (make-string min-indent ? ) ccs)
-	  (concat cce "\n" (make-string (+ min-indent eindent) ? ) ce))))
+    (cons (concat cs "\n" (comment-make-bol-ws min-indent) ccs)
+	  (concat cce "\n" (comment-make-bol-ws (+ min-indent eindent)) ce))))
 
 (defmacro comment-with-narrowing (beg end &rest body)
   "Execute BODY with BEG..END narrowing.