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

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

[nongnu] elpa/paredit 6918d89 108/224: Don't indent while the buffer is


From: ELPA Syncer
Subject: [nongnu] elpa/paredit 6918d89 108/224: Don't indent while the buffer is in intermediate broken states.
Date: Sat, 7 Aug 2021 09:22:29 -0400 (EDT)

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

    Don't indent while the buffer is in intermediate broken states.
    
    Ignore-this: eb090de24ae6a8502605aefee51420a4
    
    Emacs may have indentation methods that rely on the buffer's being
    balanced.
    
    The change to `paredit-forward-barf-sexp' is OK because when
    `paredit-forward-and-indent' calls `indent-region', the point will be
    on the same line as the closing delimiter, so it will get indented
    correctly.
    
    Add regression tests.
    
    darcs-hash:20110409182523-00fcc-5ed49a704f12afa1fb9353eb8dcd5d97e963964c
---
 paredit.el | 25 +++++++++++++------------
 test.el    | 17 +++++++++++++++++
 2 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/paredit.el b/paredit.el
index f9654be..5fef46d 100644
--- a/paredit.el
+++ b/paredit.el
@@ -2206,17 +2206,18 @@ If in a string, move the opening double-quote forward 
by one
   (up-list)                             ; Up to the end of the list to
   (let ((close (char-before)))          ;   save and delete the closing
     (backward-delete-char 1)            ;   delimiter.
-    (catch 'return                      ; Go to the end of the desired
-      (while t                          ;   S-expression, going up a
-        (paredit-handle-sexp-errors     ;   list if it's not in this,
-            (progn (paredit-forward-and-indent)
-                   (throw 'return nil))
-          (up-list)
-          (setq close                   ; adjusting for mixed
-                (prog1 (char-before)    ;   delimiters as necessary,
-                  (backward-delete-char 1)
-                  (insert close))))))
-    (insert close)))                    ; to insert that delimiter.
+    (let ((start (point)))
+      (catch 'return                    ; Go to the end of the desired
+        (while t                        ;   S-expression, going up a
+          (paredit-handle-sexp-errors   ;   list if it's not in this,
+              (progn (forward-sexp) (throw 'return nil))
+            (up-list)
+            (setq close                 ; adjusting for mixed
+                  (prog1 (char-before)  ;   delimiters as necessary,
+                    (backward-delete-char 1)
+                    (insert close))))))
+      (insert close)                    ; to insert that delimiter.
+      (indent-region start (point) nil))))
 
 (defun paredit-forward-slurp-into-string ()
   (goto-char (1+ (cdr (paredit-string-start+end-points))))
@@ -2245,7 +2246,7 @@ Automatically reindent the newly barfed S-expression with 
respect to
       (cond ((bobp)
              (error "Barfing all subexpressions with no open-paren?"))
             ((paredit-in-comment-p)     ; Don't put the close-paren in
-             (newline-and-indent)))     ;   a comment.
+             (newline)))                ;   a comment.
       (insert close))
     ;; Reindent all of the newly barfed S-expressions.
     (paredit-forward-and-indent)))
diff --git a/test.el b/test.el
index 987048a..ddb61c8 100644
--- a/test.el
+++ b/test.el
@@ -183,4 +183,21 @@ Four arguments: the paredit command, the text of the buffer
     ;; (";;|foo(" ";|foo(" error)
     ))
 
+(defun paredit-canary-indent-method (state indent-point normal-indent)
+  (check-parens)
+  nil)
+
+(put 'paredit-canary 'scheme-indent-function 'paredit-canary-indent-method)
+
+;;; Check for regressions the indentation behaviour of forward slurping
+;;; and barfing.
+
+(paredit-test 'paredit-forward-slurp-sexp
+  '(("(paredit-canary|)\n(lose)"
+     "(paredit-canary|\n (lose))")))
+
+(paredit-test 'paredit-forward-barf-sexp
+  '(("(paredit-canary|  ;\n (lose))")
+    ("(paredit-canary|  ;\n)\n(lose)")))
+
 ;++ Killing commands...ugh...



reply via email to

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