From: Stefan Monnier Date: Fri, 22 Jan 2021 21:56:57 +0000 (-0500) Subject: * lisp/simple.el (newline-and-indent): Disable `electric-indent-mode` X-Git-Tag: emacs-28.0.90~4148 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b9d0cdcacbd3da93b4ebfa10d778efb618881ccc;p=emacs.git * lisp/simple.el (newline-and-indent): Disable `electric-indent-mode` 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. --- diff --git a/lisp/simple.el b/lisp/simple.el index 2c6e3916cd4..8d4e4a7a6bb 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -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)