From: Artur Malabarba Date: Sat, 24 Oct 2015 21:26:27 +0000 (+0100) Subject: * lisp/simple.el (open-line): Integrate with electric-indent-mode X-Git-Tag: emacs-25.0.90~1010 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=bd4f04f86;p=emacs.git * lisp/simple.el (open-line): Integrate with electric-indent-mode Also run `post-self-insert-hook' when called interactively. --- diff --git a/lisp/simple.el b/lisp/simple.el index 5b0503778bd..338a0600829 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -458,17 +458,27 @@ A non-nil INTERACTIVE argument means to run the `post-self-insert-hook'." (put-text-property from (point) 'rear-nonsticky (cons 'hard sticky))))) -(defun open-line (n) +(declare-function electric-indent-just-newline "electric") +(defun open-line (n &optional interactive) "Insert a newline and leave point before it. +If `electric-indent-mode' is enabled, indent the new line if it's +not empty. If there is a fill prefix and/or a `left-margin', insert them on the new line. If the old line would have been blank, insert them on the old line as well. + +With arg N, insert N newlines. +A non-nil INTERACTIVE argument means to run the `post-self-insert-hook'." + (interactive "*p\np") (let* ((do-fill-prefix (and fill-prefix (bolp))) (do-left-margin (and (bolp) (> (current-left-margin) 0))) (loc (point-marker)) - ;; Don't expand an abbrev before point. + ;; Don't expand an abbrev before point. (abbrev-mode nil)) - (newline n) + (if (and interactive + (looking-at-p "[[:space:]]*$")) + (electric-indent-just-newline n) + (newline n interactive)) (goto-char loc) (while (> n 0) (cond ((bolp)