summaryrefslogtreecommitdiff
path: root/lisp/indent.el
diff options
context:
space:
mode:
authorNoam Postavsky <npostavs@gmail.com>2018-07-18 19:11:23 -0400
committerNoam Postavsky <npostavs@gmail.com>2018-07-22 10:52:48 -0400
commit8217998b0d59ec491116250c6a10f46052a21ef8 (patch)
tree6e99d7df2a31136d9139f1a76139ebec10437b08 /lisp/indent.el
parent6e697bced0971c369c297964eac35e2ddb59feb4 (diff)
downloademacs-8217998b0d59ec491116250c6a10f46052a21ef8.tar.gz
Preserve nonblank whitespace when indenting (Bug#32200)
* lisp/indent.el (indent-line-to): Remove only spaces and tabs, not any whitespace syntax characters.
Diffstat (limited to 'lisp/indent.el')
-rw-r--r--lisp/indent.el9
1 files changed, 6 insertions, 3 deletions
diff --git a/lisp/indent.el b/lisp/indent.el
index 450632174fc..73a7d0ef4eb 100644
--- a/lisp/indent.el
+++ b/lisp/indent.el
@@ -292,7 +292,8 @@ indentation by specifying a large negative ARG."
"Indent current line to COLUMN.
This function removes or adds spaces and tabs at beginning of line
only if necessary. It leaves point at end of indentation."
- (back-to-indentation)
+ (beginning-of-line 1)
+ (skip-chars-forward " \t")
(let ((cur-col (current-column)))
(cond ((< cur-col column)
(if (>= (- column (* (/ cur-col tab-width) tab-width)) tab-width)
@@ -303,8 +304,10 @@ only if necessary. It leaves point at end of indentation."
(delete-region (progn (move-to-column column t) (point))
;; The `move-to-column' call may replace
;; tabs with spaces, so we can't reuse the
- ;; previous `back-to-indentation' point.
- (progn (back-to-indentation) (point)))))))
+ ;; previous start point.
+ (progn (beginning-of-line 1)
+ (skip-chars-forward " \t")
+ (point)))))))
(defun current-left-margin ()
"Return the left margin to use for this line.