From d98b9c59dcaca13fad270f61ab95b21b12cc17ef Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Mon, 23 May 2022 08:50:27 -0700 Subject: fix M-a, M-e, M-k and C-x DEL in Lisp string literals --- .emacs.d/init.el | 11 +++++++++++ 1 file changed, 11 insertions(+) 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) -- cgit v1.2.3