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

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

[nongnu] elpa/paredit 2f3db5f 021/224: Broaden `paredit-raise-sexp' to a


From: ELPA Syncer
Subject: [nongnu] elpa/paredit 2f3db5f 021/224: Broaden `paredit-raise-sexp' to act sensibly on strings and characters.
Date: Sat, 7 Aug 2021 09:22:10 -0400 (EDT)

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

    Broaden `paredit-raise-sexp' to act sensibly on strings and characters.
    
    darcs-hash:20080928142541-00fcc-90dd4da3c4fd9e689c7d1558f384f21766f07e86
---
 paredit.el | 44 ++++++++++++++++++++++++++------------------
 1 file changed, 26 insertions(+), 18 deletions(-)

diff --git a/paredit.el b/paredit.el
index 284d8fe..63a19d3 100644
--- a/paredit.el
+++ b/paredit.el
@@ -1678,25 +1678,33 @@ With a prefix argument N, kill only the following N 
S-expressions."
 (defun paredit-raise-sexp (&optional n)
   "Raise the following S-expression in a tree, deleting its siblings.
 With a prefix argument N, raise the following N S-expressions.  If N
-  is negative, raise the preceding N S-expressions."
+  is negative, raise the preceding N S-expressions.
+If the point is on an S-expression, such as a string or a symbol, not
+  between them, that S-expression is considered to follow the point."
   (interactive "p")
-  (paredit-lose-if-not-in-sexp 'paredit-raise-sexp)
-  ;; Select the S-expressions we want to raise in a buffer substring.
-  (let* ((bound (save-excursion (forward-sexp n) (point)))
-         (sexps (if (and n (< n 0))
-                    (buffer-substring bound
-                                      (paredit-point-at-sexp-end))
-                    (buffer-substring (paredit-point-at-sexp-start)
-                                      bound))))
-    ;; Move up to the list we're raising those S-expressions out of and
-    ;; delete it.
-    (backward-up-list)
-    (delete-region (point) (save-excursion (forward-sexp) (point)))
-    (save-excursion (insert sexps))     ; Insert & reindent the sexps.
-    (save-excursion (let ((n (abs (or n 1))))
-                      (while (> n 0)
-                        (paredit-forward-and-indent)
-                        (setq n (1- n)))))))
+  (save-excursion
+    (cond ((paredit-in-string-p)
+           (goto-char (car (paredit-string-start+end-points))))
+          ((paredit-in-char-p)
+           (backward-sexp))
+          ((paredit-in-comment-p)
+           (error "No S-expression to raise in comment.")))
+    ;; Select the S-expressions we want to raise in a buffer substring.
+    (let* ((bound (save-excursion (forward-sexp n) (point)))
+           (sexps (if (and n (< n 0))
+                      (buffer-substring bound
+                                        (paredit-point-at-sexp-end))
+                      (buffer-substring (paredit-point-at-sexp-start)
+                                        bound))))
+      ;; Move up to the list we're raising those S-expressions out of and
+      ;; delete it.
+      (backward-up-list)
+      (delete-region (point) (save-excursion (forward-sexp) (point)))
+      (save-excursion (insert sexps))   ; Insert & reindent the sexps.
+      (save-excursion (let ((n (abs (or n 1))))
+                        (while (> n 0)
+                          (paredit-forward-and-indent)
+                          (setq n (1- n))))))))
 
 (defun paredit-convolute-sexp (&optional n)
   "Convolute S-expressions.



reply via email to

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