summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2022-05-23 08:50:27 -0700
committerSean Whitton <spwhitton@spwhitton.name>2022-05-23 13:36:13 -0700
commitd98b9c59dcaca13fad270f61ab95b21b12cc17ef (patch)
tree7d41bc14c72f64d6fa4b542751fffec646452744
parent5eaaa08a8a6847cfb29de9fcd664f122713377a7 (diff)
downloaddotfiles-d98b9c59dcaca13fad270f61ab95b21b12cc17ef.tar.gz
fix M-a, M-e, M-k and C-x DEL in Lisp string literals
-rw-r--r--.emacs.d/init.el11
1 files changed, 11 insertions, 0 deletions
diff --git a/.emacs.d/init.el b/.emacs.d/init.el
index 7a633ac7..a86f700f 100644
--- a/.emacs.d/init.el
+++ b/.emacs.d/init.el
@@ -3202,6 +3202,17 @@ scroll through them."
(t (backward-kill-sexp (abs arg)))))
(define-key paredit-mode-map "\C-w" #'spw/paredit-unix-word-rubout)
+;; Fix M-a, M-e, M-k and C-x DEL in Lisp string literals.
+(defun spw/paredit-narrow-to-string (orig-fun &rest args)
+ (save-restriction
+ (when (and paredit-mode (paredit-in-string-p))
+ (cl-destructuring-bind (beg . end) (paredit-string-start+end-points)
+ (narrow-to-region (1+ beg) end)))
+ (apply orig-fun args)))
+(dolist (cmd '(backward-sentence forward-sentence
+ backward-kill-sentence kill-sentence))
+ (advice-add cmd :around #'spw/paredit-narrow-to-string))
+
(spw/reclaim-keys-from paredit paredit-mode-map "\M-r" "\M-s" "\M-?")
(define-key paredit-mode-map "\M-R" #'paredit-raise-sexp)
(define-key paredit-mode-map "\M-U" #'paredit-splice-sexp)