]> code.delx.au - gnu-emacs/commitdiff
Finish excising electric indent from `open-line'
authorKarl Fogel <kfogel@red-bean.com>
Sun, 22 Nov 2015 04:50:05 +0000 (22:50 -0600)
committerKarl Fogel <kfogel@red-bean.com>
Sun, 22 Nov 2015 04:50:14 +0000 (22:50 -0600)
* lisp/simple.el (open-line): Remove INTERACTIVE argument.

* test/automated/simple-test.el (open-line-indent, open-line-hook):
  Adjust accordingly.

This change finishes what my commit of Thu Nov 19 17:32:37 2015 -0600
(git commit c59353896) started.  It turns out that having INTERACTIVE
cause `post-self-insert-hook' to run (via `newline') meant `open-line'
still had the electric indent behavior, as `post-self-insert-hook'
normally contains `electric-indent-post-self-insert-function' ever
since `electric-indent-mode' has been on by default.  Tracing the code
change in `open-line' is mildly twisty, because Artur Malabarba's
earliest two commits of 24 Oct 2015 first removed the `interactive'
form entirely (git commit 6939896e2) and then restored it with the new
extra "p" already added (git commit bd4f04f86), such that there is no
single-commit diff in which one sees the second "p" appear.  Thus this
change is effectively a reversion of parts of each of those commits.

This could close bug#21884, at least until further discussion.

lisp/simple.el
test/automated/simple-test.el

index 8b57bf04bea9128a94785191c25eec016fd8bd5b..6a745c7cb25064f0d941af64ba1595fb596b88d3 100644 (file)
@@ -458,19 +458,18 @@ 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 &optional interactive)
+(defun open-line (n)
   "Insert a newline and leave point before it.
 If there is a fill prefix and/or a `left-margin', insert them on
 the new line if the line would have been blank.
-With arg N, insert N newlines.
-A non-nil INTERACTIVE argument means to run the `post-self-insert-hook'."
-  (interactive "*p\np")
+With arg N, insert N newlines."
+  (interactive "*p")
   (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.
         (abbrev-mode nil))
-    (newline n interactive)
+    (newline n)
     (goto-char loc)
     (while (> n 0)
       (cond ((bolp)
index 7e0dbb786a798959406da8e8830d24d5ba0918d1..a3931ef927719e5d704959c358aa03177dd6bb21 100644 (file)
                      (open-line 1)))
                  '("- - " . "\n(a b c d)"))))
 
-;; For a while, from 24 Oct - 19 Nov 2015, `open-line' in the Emacs
+;; For a while, from 24 Oct - 21 Nov 2015, `open-line' in the Emacs
 ;; development tree became sensitive to `electric-indent-mode', which
 ;; it had not been before.  This sensitivity was reverted for the
 ;; Emacs 25 release, so it could be discussed further (see thread
 ;; "Questioning the new behavior of `open-line'." on the Emacs Devel
-;; mailing list).  The only test case here that started failing after
-;; the reversion is the third one, the one that currently expects
-;; `("(a b" . "\n   \n   c d)")'.  If `open-line' were again sensitive
-;; to electric indent, then the three spaces between the two newlines
-;; would go away, leaving `("(a b" . "\n\n   c d)")'.
-;;
-;; If electric indent sensitivity were re-enabled, we might also want
-;; to make the test cases below a bit stricter, or add some more test
-;; cases that are specific to `electric-indent-mode', since right now
-;; all but one of the cases pass with or without electric indent.
+;; mailing list, and bug #21884).
 (ert-deftest open-line-indent ()
   (should (equal (simple-test--dummy-buffer
                    (electric-indent-local-mode 1)
                  '("(a b" . "\n c d)")))
   (should (equal (simple-test--dummy-buffer
                    (electric-indent-local-mode 1)
-                   (open-line 1 'interactive))
-                 '("(a b" . "\n   c d)")))
+                   (open-line 1))
+                 '("(a b" . "\n c d)")))
   (should (equal (simple-test--dummy-buffer
                    (electric-indent-local-mode 1)
                    (let ((current-prefix-arg nil))
                      (call-interactively #'open-line)
                      (call-interactively #'open-line)))
-                 '("(a b" . "\n   \n   c d)")))
+                 '("(a b" . "\n\n c d)")))
   (should (equal (simple-test--dummy-buffer
                    (electric-indent-local-mode 1)
-                   (open-line 5 'interactive))
-                 '("(a b" . "\n\n\n\n\n   c d)")))
+                   (open-line 5))
+                 '("(a b" . "\n\n\n\n\n c d)")))
   (should (equal (simple-test--dummy-buffer
                    (electric-indent-local-mode 1)
                    (let ((current-prefix-arg 5))
                      (call-interactively #'open-line)))
-                 '("(a b" . "\n\n\n\n\n   c d)")))
+                 '("(a b" . "\n\n\n\n\n c d)")))
   (should (equal (simple-test--dummy-buffer
                    (forward-char 1)
                    (electric-indent-local-mode 1)
-                   (open-line 1 'interactive))
-                 '("(a b" . "\n   c d)"))))
+                   (open-line 1))
+                 '("(a b " . "\nc d)"))))
 
+;; From 24 Oct - 21 Nov 2015, `open-line' took a second argument
+;; INTERACTIVE and ran `post-self-insert-hook' if the argument was
+;; true.  This test tested that.  Currently, however, `open-line'
+;; does not run run `post-self-insert-hook' at all, so for now
+;; this test just makes sure that it doesn't.
 (ert-deftest open-line-hook ()
   (let* ((x 0)
          (inc (lambda () (setq x (1+ x)))))
     (should (= x 0))
     (simple-test--dummy-buffer
       (add-hook 'post-self-insert-hook inc nil 'local)
-      (open-line 1 'interactive))
-    (should (= x 1))
+      (open-line 1))
+    (should (= x 0))
 
     (unwind-protect
         (progn
           (add-hook 'post-self-insert-hook inc)
           (simple-test--dummy-buffer
             (open-line 1))
-          (should (= x 1))
+          (should (= x 0))
           (simple-test--dummy-buffer
-            (open-line 10 'interactive))
-          (should (= x 2)))
+            (open-line 10))
+          (should (= x 0)))
       (remove-hook 'post-self-insert-hook inc))))
 
 \f