Restore comment/string check for 'electric-layout-mode'
authorMorgan Willcock <morgan@ice9.digital>
Tue, 24 Sep 2024 18:33:11 +0000 (19:33 +0100)
committerEli Zaretskii <eliz@gnu.org>
Sat, 5 Oct 2024 10:11:04 +0000 (13:11 +0300)
This reverts an accidental change which allowed
'electric-layout-mode' to insert newlines inside strings and
comments.  The new behavior can be obtained by setting the
new variable 'electric-layout-allow-in-comment-or-string' to a
non-nil value.
* lisp/electric.el (electric-layout-allow-in-comment-or-string):
New variable to determine whether inserting newlines is
permitted within comments or strings.
(electric-layout-post-self-insert-function-1): Restore the
previous default behavior of not inserting newlines within
comments or strings.

lisp/electric.el

index d02bcb4735be90b1203c4a52c49a5332bbaf0672..d84faf5433f303533dabde81a2243bba368625ba 100644 (file)
@@ -385,6 +385,9 @@ If multiple rules match, only first one is executed.")
 (defvar electric-layout-allow-duplicate-newlines nil
   "If non-nil, allow duplication of `before' newlines.")
 
+(defvar electric-layout-allow-in-comment-or-string nil
+  "If non-nil, allow inserting newlines inside a comment or string.")
+
 (defun electric-layout-post-self-insert-function ()
   (when electric-layout-mode
     (electric-layout-post-self-insert-function-1)))
@@ -409,7 +412,10 @@ If multiple rules match, only first one is executed.")
                                 (goto-char pos)
                                 (funcall probe last-command-event))))
                          (when res (throw 'done res))))))))))
-    (when rule
+    (when (and rule
+               (or electric-layout-allow-in-comment-or-string
+                   ;; Not in a comment or string.
+                   (not (nth 8 (save-excursion (syntax-ppss pos))))))
       (goto-char pos)
       (when (functionp rule) (setq rule (funcall rule)))
       (dolist (sym (if (symbolp rule) (list rule) rule))