diff options
author | Artur Malabarba <bruce.connor.am@gmail.com> | 2015-10-24 22:26:27 +0100 |
---|---|---|
committer | Artur Malabarba <bruce.connor.am@gmail.com> | 2015-10-26 00:27:10 +0000 |
commit | bd4f04f86cea893e3369decdda074a4898491518 (patch) | |
tree | feb833f3b1cde1c2d030f9e36687cb54816fbcc1 /lisp | |
parent | 6939896e2ffe2e742954c14bba6129af456f0857 (diff) | |
download | emacs-bd4f04f86cea893e3369decdda074a4898491518.tar.gz |
* lisp/simple.el (open-line): Integrate with electric-indent-mode
Also run `post-self-insert-hook' when called interactively.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/simple.el | 16 |
1 files changed, 13 insertions, 3 deletions
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) |