summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2015-10-24 22:26:27 +0100
committerArtur Malabarba <bruce.connor.am@gmail.com>2015-10-26 00:27:10 +0000
commitbd4f04f86cea893e3369decdda074a4898491518 (patch)
treefeb833f3b1cde1c2d030f9e36687cb54816fbcc1 /lisp
parent6939896e2ffe2e742954c14bba6129af456f0857 (diff)
downloademacs-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.el16
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)