emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/paredit c0a9160 041/224: Make `paredit-newline' keep inval


From: ELPA Syncer
Subject: [nongnu] elpa/paredit c0a9160 041/224: Make `paredit-newline' keep invalid structure inside comments.
Date: Sat, 7 Aug 2021 09:22:15 -0400 (EDT)

branch: elpa/paredit
commit c0a916070586689a4b29fe0537b2af59a581e2b4
Author: Taylor R Campbell <campbell@mumble.net>
Commit: Taylor R Campbell <campbell@mumble.net>

    Make `paredit-newline' keep invalid structure inside comments.
    
    Ignore-this: 914cf744a9baefd2fe545a4dcedcb6e6
    
    darcs-hash:20100917202803-00fcc-ccf81a80dc2bcb44576e674bea314d5c6cfcf3de
---
 paredit.el | 39 +++++++++++++++++++++++++++------------
 1 file changed, 27 insertions(+), 12 deletions(-)

diff --git a/paredit.el b/paredit.el
index ce8ea88..848312d 100644
--- a/paredit.el
+++ b/paredit.el
@@ -962,25 +962,40 @@ If not in a string, act as `paredit-doublequote'; if no 
prefix argument
     (insert char)                       ; (Is there a better way to
     nil))                               ; express the rubout char?
                                         ; ?\^? works, but ugh...)
-
-;;; The placement of these functions in this file is totally random.
-
+
 (defun paredit-newline ()
   "Insert a newline and indent it.
 This is like `newline-and-indent', but it not only indents the line
   that the point is on but also the S-expression following the point,
   if there is one.
 Move forward one character first if on an escaped character.
-If in a string, just insert a literal newline."
+If in a string, just insert a literal newline.
+If in a comment and if followed by invalid structure, call
+  `indent-new-comment-line' to keep the invalid structure in a
+  comment."
   (interactive)
-  (if (paredit-in-string-p)
-      (newline)
-    (if (and (not (paredit-in-comment-p)) (paredit-in-char-p))
-        (forward-char))
-    (newline-and-indent)
-    ;; Indent the following S-expression, but don't signal an error if
-    ;; there's only a closing delimiter after the point.
-    (paredit-ignore-sexp-errors (indent-sexp))))
+  (cond ((paredit-in-string-p)
+         (newline))
+        ((paredit-in-comment-p)
+         (if (paredit-handle-sexp-errors
+                 ;; Check for anything that would break structure in
+                 ;; the comment.
+                 (save-restriction
+                   (narrow-to-region (point) (point-at-eol))
+                   (save-excursion
+                     (while (< (point) (point-max))
+                       (forward-sexp)))
+                   t)
+               nil)
+             (progn (newline-and-indent) (indent-sexp))
+             (indent-new-comment-line)))
+        (t
+         (if (paredit-in-char-p)
+             (forward-char))
+         (newline-and-indent)
+         ;; Indent the following S-expression, but don't signal an
+         ;; error if there's only a closing delimiter after the point.
+         (paredit-ignore-sexp-errors (indent-sexp)))))
 
 (defun paredit-reindent-defun (&optional argument)
   "Reindent the definition that the point is on.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]