From 5bfc873de956a47ace140ee52919f6d1a9bc5a0f Mon Sep 17 00:00:00 2001 From: Taylor R Campbell Date: Sat, 18 Sep 2010 18:16:20 +0000 Subject: Fix `paredit-copy-as-kill' within strings. Ignore-this: 231e8737beaee81622c52d580adad339 darcs-hash:20100918181620-00fcc-5774d34b56be2f3af88b6a75506da39927197baf --- paredit.el | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'paredit.el') diff --git a/paredit.el b/paredit.el index 59de8fc..58dbf0f 100644 --- a/paredit.el +++ b/paredit.el @@ -1551,6 +1551,28 @@ With a numeric prefix argument N, do `kill-line' that many times." (defun paredit-copy-as-kill () "Save in the kill ring the region that `paredit-kill' would kill." (interactive) + (cond ((paredit-in-string-p) + (paredit-copy-as-kill-in-string)) + ((paredit-in-comment-p) + (copy-region-as-kill (point) (point-at-eol))) + ((save-excursion (paredit-skip-whitespace t (point-at-eol)) + (or (eolp) (eq (char-after) ?\; ))) + ;** Be careful about trailing backslashes. + (save-excursion + (if (paredit-in-char-p) + (backward-char)) + (copy-region-as-kill (point) (point-at-eol)))) + (t (paredit-copy-sexps-as-kill)))) + +(defun paredit-copy-as-kill-in-string () + (save-excursion + (if (paredit-in-string-escape-p) + (backward-char)) + (copy-region-as-kill (point) + (min (point-at-eol) + (cdr (paredit-string-start+end-points)))))) + +(defun paredit-copy-sexps-as-kill () (save-excursion (if (paredit-in-char-p) (backward-char 2)) -- cgit v1.2.1