]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/simple.el (newline-and-indent): Disable `electric-indent-mode`
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 22 Jan 2021 21:56:57 +0000 (16:56 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 22 Jan 2021 21:56:57 +0000 (16:56 -0500)
With `electric-indent-mode` enabled, `newline-and-indent` ends up indenting
3 times: once for the original line and twice on the new line.
`reindent-then-newline-and-indent` is even worse, indenting twice
both lines.
None of those commands should be affected by `electric-indent-mode`
since they even explicitly say in their name when and how they do
indentation.

(reindent-then-newline-and-indent): Temporarily disable
`electric-indent-mode` as well.

lisp/simple.el

index 2c6e3916cd4606da99d5543e86e5f94edfd6862b..8d4e4a7a6bb17a64b13ad493d193c6fe0a919429 100644 (file)
@@ -820,9 +820,10 @@ With ARG, perform this action that many times."
   (delete-horizontal-space t)
   (unless arg
     (setq arg 1))
-  (dotimes (_ arg)
-    (newline nil t)
-    (indent-according-to-mode)))
+  (let ((electric-indent-mode nil))
+    (dotimes (_ arg)
+      (newline nil t)
+      (indent-according-to-mode))))
 
 (defun reindent-then-newline-and-indent ()
   "Reindent current line, insert newline, then indent the new line.
@@ -832,7 +833,8 @@ In programming language modes, this is the same as TAB.
 In some text modes, where TAB inserts a tab, this indents to the
 column specified by the function `current-left-margin'."
   (interactive "*")
-  (let ((pos (point)))
+  (let ((pos (point))
+        (electric-indent-mode nil))
     ;; Be careful to insert the newline before indenting the line.
     ;; Otherwise, the indentation might be wrong.
     (newline)