          (save-excursion (insert " \"")))
         ((or (paredit-in-comment-p)
              (paredit-in-char-p))
-         (error "Invalid context for `paredit-split-sexp'"))
+         (error "Invalid context for splitting S-expression."))
         (t (let ((open  (save-excursion (backward-up-list)
                                         (char-after)))
                  (close (save-excursion (up-list)

    (catch 'return
      (while t
        (paredit-handle-sexp-errors
            (progn (backward-sexp)
                   (throw 'return nil))
          (backward-up-list))))
    (insert open))
  ;; Reindent the line at the beginning of wherever we inserted the
  ;; opening parenthesis, and then indent the whole S-expression.
  (backward-up-list)
  (lisp-indent-line)
  (indent-sexp))

                   (error "Mismatched S-expressions to join.")))))))))

;;;; Variations on the Lurid Theme

;;; I haven't the imagination to concoct clever names for these.

(defun paredit-add-to-previous-list ()
  "Add the S-expression following point to the list preceding point."
  (interactive)
  (paredit-lose-if-not-in-sexp 'paredit-add-to-previous-list)
  (save-excursion
    (backward-down-list)
    (paredit-forward-slurp-sexp)))

(defun paredit-add-to-next-list ()
  "Add the S-expression preceding point to the list following point.
If no S-expression precedes point, move up the tree until one does."
  (interactive)
  (paredit-lose-if-not-in-sexp 'paredit-add-to-next-list)
  (save-excursion
    (down-list)
    (paredit-backward-slurp-sexp)))

(defun paredit-join-with-previous-list ()
  "Join the list the point is on with the previous list in the buffer."
  (interactive)
  (paredit-lose-if-not-in-sexp 'paredit-join-with-previous-list)
  (save-excursion
    (while (paredit-handle-sexp-errors (save-excursion (backward-sexp) nil)
             (backward-up-list)
             t))
    (paredit-join-sexps)))

(defun paredit-join-with-next-list ()
  "Join the list the point is on with the next list in the buffer."
  (interactive)
  (paredit-lose-if-not-in-sexp 'paredit-join-with-next-list)
  (save-excursion
    (while (paredit-handle-sexp-errors (save-excursion (forward-sexp) nil)
             (up-list)
             t))
    (paredit-join-sexps)))

;;;; Utilities

(defun paredit-in-string-escape-p ()
