summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortdback <tyler@tdback.net>2025-02-12 19:43:00 -0500
committertdback <tyler@tdback.net>2025-02-12 19:43:00 -0500
commit1993d5f52be475b95c8e8843852bcbd679ecd6b2 (patch)
tree8ca505eb16a92e9b5f48648fe6af7163020006b6
parent4a3cf16aebc6080bdcae419c87e0a9aa09368017 (diff)
lisp/td-common: make puni-kill-line less greedy
-rw-r--r--lisp/td-common.el14
1 files changed, 13 insertions, 1 deletions
diff --git a/lisp/td-common.el b/lisp/td-common.el
index b3a84d2..4cea965 100644
--- a/lisp/td-common.el
+++ b/lisp/td-common.el
@@ -14,6 +14,16 @@
(message "Macro running. Can't quit.")))
(keyboard-quit)))
+(defun td/soft-kill-line ()
+ "Kill a line while keeping expressions balanced. When there's no complete
+sexp before the line end to delete, delete one sexp forward."
+ (interactive)
+ (puni-soft-delete-by-move (lambda ()
+ (if (eolp)
+ (forward-char)
+ (end-of-line)))
+ nil 'within 'kill 'delete-one))
+
;;; Packages
(use-package async
@@ -149,7 +159,9 @@
("C-M-t" . puni-transpose)
("C-M-?" . puni-convolute)
("C-M-z" . puni-squeeze)
- ("C-w" . kill-region))
+ ("C-w" . kill-region)
+ ;; Make puni-kill-line less greedy.
+ ([remap puni-kill-line] . td/soft-kill-line))
:config
(puni-global-mode t))