summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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))