[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/speedrect 06771a6d96 05/12: delete-ws: space-preserving
From: |
ELPA Syncer |
Subject: |
[elpa] externals/speedrect 06771a6d96 05/12: delete-ws: space-preserving left and right WS-deletion |
Date: |
Mon, 16 Dec 2024 12:59:28 -0500 (EST) |
branch: externals/speedrect
commit 06771a6d9615879728debb5cd860dfc04a43f223
Author: JD Smith <93749+jdtsmith@users.noreply.github.com>
Commit: JD Smith <93749+jdtsmith@users.noreply.github.com>
delete-ws: space-preserving left and right WS-deletion
---
speedrect.el | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
diff --git a/speedrect.el b/speedrect.el
index c177cfaca7..5af56232f5 100644
--- a/speedrect.el
+++ b/speedrect.el
@@ -201,6 +201,31 @@ RECT (a list of strings)."
minimize (- (length s) (match-beginning 2)) into right
finally return (cons left right)))
+(defun speedrect--delete-ws-line (start end right)
+ "Delete left whitespace on line between columns START and END, preserving
width.
+If RIGHT is non-nil, delete from right."
+ (let* ((delete-from (if right end start))
+ (pad-at (if right start end))
+ (guard (if right (line-beginning-position) (line-end-position)))
+ (skip-fn (if right 'skip-syntax-backward 'skip-syntax-forward)))
+ (when (and (= (move-to-column delete-from t) delete-from) (/= (point)
guard))
+ (let* ((beg (point))
+ (end (progn (funcall skip-fn " " guard) (point)))
+ (trim-len (abs (- beg end)))
+ (pad-col (if right pad-at (- pad-at trim-len))))
+ (message "Trimming from %d:%d %d->%d [%d]"
+ delete-from pad-at beg end trim-len)
+ (delete-region beg end)
+ (when (and (> trim-len 0) (= (move-to-column pad-col t) pad-col))
+ (insert (make-string trim-len ?\s)))))))
+
+(defun speedrect--delete-ws (start end &optional right)
+ "Delete left whitespace within rectangle with corners START and END.
+With prefix or non-nil RIGHT, delete whitespace from right-hand
+side instead."
+ (interactive "*r\nP")
+ (apply-on-rectangle #'speedrect--delete-ws-line start end right))
+
;;;; Numerical/calc integration
(defun speedrect--increment-first-number (startcol endcol increment)
"Increment the first number in the rectangle line by INCREMENT.
@@ -355,7 +380,7 @@ Insertion:
Killing:\n
[k] kill kill and save rectangle for yanking
[d] delete kill rectangle without saving
- [SPC] del-ws delete all whitespace, starting from left column
+ [SPC] del-ws delete all whitespace from left (right, with prefix)
[c] clear clear rectangle area by overwriting with spaces
[r] rest delete the rest of the columns, keeping the marked rectangle\n
Copy/Yank:\n
@@ -432,7 +457,7 @@ rectangle after the command runs, otherwise, stash it
before."
("d" delete-rectangle after)
("N" rectangle-number-lines t)
("r" speedrect-delete-rest after)
- ("SPC" delete-whitespace-rectangle t)
+ ("SPC" speedrect--delete-ws after)
("x" rectangle-exchange-point-and-mark)
;; Shift rect
("S-<right>" speedrect-shift-right)
- [elpa] externals/speedrect updated (0a97e82913 -> 8cda38a010), ELPA Syncer, 2024/12/16
- [elpa] externals/speedrect a3ac64cee9 02/12: docstring: remove outdated advice mention, ELPA Syncer, 2024/12/16
- [elpa] externals/speedrect 2d9bdd37f1 04/12: speedrect-undo: restarting, using no region, ELPA Syncer, 2024/12/16
- [elpa] externals/speedrect 1935a0266a 06/12: kill-rectangle: new option to preserve space on kill with prefix, ELPA Syncer, 2024/12/16
- [elpa] externals/speedrect cd7e2e71fe 09/12: help tweaks, ELPA Syncer, 2024/12/16
- [elpa] externals/speedrect 14fa816ebb 10/12: Updated NEWS, ELPA Syncer, 2024/12/16
- [elpa] externals/speedrect 06771a6d96 05/12: delete-ws: space-preserving left and right WS-deletion,
ELPA Syncer <=
- [elpa] externals/speedrect 896f577d06 08/12: replace-with-rect: move to column first to properly add spaces, ELPA Syncer, 2024/12/16
- [elpa] externals/speedrect 94a9462ccf 03/12: increment: preserve space padding when possible, ELPA Syncer, 2024/12/16
- [elpa] externals/speedrect 61d828134a 01/12: add increment/decrement on +/-, ELPA Syncer, 2024/12/16
- [elpa] externals/speedrect 67bd27132c 07/12: fill: use last killed rectangle if selected rect is fully blank, ELPA Syncer, 2024/12/16
- [elpa] externals/speedrect 8cda38a010 12/12: Update README.md, ELPA Syncer, 2024/12/16
- [elpa] externals/speedrect 50d793aaa1 11/12: README: added help info, ELPA Syncer, 2024/12/16