# HG changeset patch # User Juri Linkov # Date 1085778317 0 # Node ID 7bb617df33dbb4304e056322dc3aa75d2ea9cadf # Parent 6fe3d9ff80b9e3964fdc505101930e16c1ad753a (pp-buffer): New fun created from the code in `pp-to-string' modified to be able to format text with newlines. (pp-to-string): Move the buffer-formatting part of the code to `pp-buffer'. Call `pp-buffer'. diff -r 6fe3d9ff80b9 -r 7bb617df33db lisp/emacs-lisp/pp.el --- a/lisp/emacs-lisp/pp.el Fri May 28 21:04:52 2004 +0000 +++ b/lisp/emacs-lisp/pp.el Fri May 28 21:05:17 2004 +0000 @@ -50,34 +50,40 @@ (let ((print-escape-newlines pp-escape-newlines) (print-quoted t)) (prin1 object (current-buffer))) - (goto-char (point-min)) - (while (not (eobp)) - ;; (message "%06d" (- (point-max) (point))) - (cond - ((condition-case err-var - (prog1 t (down-list 1)) - (error nil)) - (save-excursion - (backward-char 1) - (skip-chars-backward "'`#^") - (when (and (not (bobp)) (= ?\ (char-before))) - (delete-char -1) - (insert "\n")))) - ((condition-case err-var - (prog1 t (up-list 1)) - (error nil)) - (while (looking-at "\\s)") - (forward-char 1)) - (delete-region - (point) - (progn (skip-chars-forward " \t") (point))) - (insert ?\n)) - (t (goto-char (point-max))))) - (goto-char (point-min)) - (indent-sexp) + (pp-buffer) (buffer-string)) (kill-buffer (current-buffer))))) +(defun pp-buffer () + "Prettify the current buffer with printed representation of a Lisp object." + (goto-char (point-min)) + (while (not (eobp)) + ;; (message "%06d" (- (point-max) (point))) + (cond + ((condition-case err-var + (prog1 t (down-list 1)) + (error nil)) + (save-excursion + (backward-char 1) + (skip-chars-backward "'`#^") + (when (and (not (bobp)) (memq (char-before) '(?\ ?\t ?\n))) + (delete-region + (point) + (progn (skip-chars-backward " \t\n") (point))) + (insert "\n")))) + ((condition-case err-var + (prog1 t (up-list 1)) + (error nil)) + (while (looking-at "\\s)") + (forward-char 1)) + (delete-region + (point) + (progn (skip-chars-forward " \t\n") (point))) + (insert ?\n)) + (t (goto-char (point-max))))) + (goto-char (point-min)) + (indent-sexp)) + ;;;###autoload (defun pp (object &optional stream) "Output the pretty-printed representation of OBJECT, any Lisp object.