diff options
-rw-r--r-- | paredit.el | 38 |
1 files changed, 20 insertions, 18 deletions
@@ -966,25 +966,27 @@ If not in a string, act as `paredit-doublequote'; if no prefix argument (defun paredit-backslash () "Insert a backslash followed by a character to escape." (interactive) + (cond ((paredit-in-string-p) (paredit-backslash-interactive)) + ((paredit-in-comment-p) (insert ?\\)) + ((paredit-in-char-p) (forward-char) (paredit-backslash-interactive)) + (t (paredit-backslash-interactive)))) + +(defun paredit-backslash-interactive () (insert ?\\ ) - ;; Can't call `paredit-in-comment-p' unless `paredit-in-string-p' - ;; gives false. Read this as simply (not (paredit-in-comment-p)). - (if (or (paredit-in-string-p) - (not (paredit-in-comment-p))) - ;; Read a character to insert after the backslash. If anything - ;; goes wrong -- the user hits delete (entering the rubout - ;; `character'), aborts with C-g, or enters non-character input - ;; -- then delete the backslash to avoid a dangling escape. - (let ((delete-p t)) - (unwind-protect - (let ((char (read-char "Character to escape: "))) - (if (not (eq char ?\^?)) - (progn (message "Character to escape: %c" char) - (insert char) - (setq delete-p nil)))) - (if delete-p - (progn (message "Deleting escape.") - (backward-delete-char 1))))))) + ;; Read a character to insert after the backslash. If anything + ;; goes wrong -- the user hits delete (entering the rubout + ;; `character'), aborts with C-g, or enters non-character input + ;; -- then delete the backslash to avoid a dangling escape. + (let ((delete-p t)) + (unwind-protect + (let ((char (read-char "Character to escape: "))) + (if (not (eq char ?\^?)) + (progn (message "Character to escape: %c" char) + (insert char) + (setq delete-p nil)))) + (if delete-p + (progn (message "Deleting escape.") + (backward-delete-char 1)))))) (defun paredit-newline () "Insert a newline and indent it. |