From 6cb5747b0973c36e0e21da4851f35a66c106a327 Mon Sep 17 00:00:00 2001 From: Taylor R Campbell Date: Sun, 7 Apr 2013 16:46:58 +0000 Subject: Change `paredit-meta-doublequote' to avoid breaking the line. This way, default M-" behaves more like default M-). New command `paredit-meta-doublequote-and-newline' (no default key) behaves like the old `paredit-meta-doublequote'. --- paredit.el | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'paredit.el') diff --git a/paredit.el b/paredit.el index 5389e8e..3e7cc5f 100644 --- a/paredit.el +++ b/paredit.el @@ -293,7 +293,7 @@ Paredit behaves badly if parentheses are unbalanced, so exercise "(frob grovel) ; full \"|lexical")) ("M-\"" paredit-meta-doublequote ("(foo \"bar |baz\" quux)" - "(foo \"bar baz\"\n |quux)") + "(foo \"bar baz\"| quux)") ("(foo |(bar #\\x \"baz \\\\ quux\") zot)" ,(concat "(foo \"|(bar #\\\\x \\\"baz \\\\" "\\\\ quux\\\")\" zot)"))) @@ -901,21 +901,27 @@ If in a character literal, do nothing. This prevents accidentally (paredit-insert-pair n ?\" ?\" 'paredit-forward-for-quote)))) (defun paredit-meta-doublequote (&optional n) + "Move to the end of the string. +If not in a string, act as `paredit-doublequote'; if not prefix argument + is specified and the region is not active or `transient-mark-mode' is + disabled, the default is to wrap one S-expression, however, not zero." + (interactive "P") + (if (not (paredit-in-string-p)) + (paredit-doublequote (or n (and (not (paredit-region-active-p)) 1))) + (goto-char (paredit-enclosing-string-end)))) + +(defun paredit-meta-doublequote-and-newline (&optional n) "Move to the end of the string, insert a newline, and indent. -If not in a string, act as `paredit-doublequote'; if no prefix argument - is specified and the region is not active or `transient-mark-mode' is - disabled, the default is to wrap one S-expression, however, not - zero." +If not in a string, act as `paredit-doublequote'; if not prefix argument + is specified and the region is not active or `transient-mark-mode' is + disabled, the default is to wrap one S-expression, however, not zero." (interactive "P") (if (not (paredit-in-string-p)) - (paredit-doublequote (or n - (and (not (paredit-region-active-p)) - 1))) - (let ((start+end (paredit-string-start+end-points))) - (goto-char (1+ (cdr start+end))) - (newline) - (lisp-indent-line) - (paredit-ignore-sexp-errors (indent-sexp))))) + (paredit-doublequote (or n (and (not (paredit-region-active-p)) 1))) + (progn (goto-char (paredit-enclosing-string-end)) + (newline) + (lisp-indent-line) + (paredit-ignore-sexp-errors (indent-sexp))))) (defun paredit-forward-for-quote (end) (let ((state (paredit-current-parse-state))) -- cgit v1.2.1