1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-17 03:10:58 -08:00

* lisp/simple.el (open-line): Integrate with electric-indent-mode

Also run `post-self-insert-hook' when called interactively.
This commit is contained in:
Artur Malabarba 2015-10-24 22:26:27 +01:00
parent 6939896e2f
commit bd4f04f86c

View file

@ -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)