From: Juri Linkov Date: Fri, 28 May 2004 21:05:17 +0000 (+0000) Subject: (pp-buffer): New fun created from the code in X-Git-Tag: ttn-vms-21-2-B4~6038 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=575c3bca4c340b8e6f23f11273e19c279bf8c022;p=emacs.git (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 --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el index c93868859f0..61d31921e57 100644 --- a/lisp/emacs-lisp/pp.el +++ b/lisp/emacs-lisp/pp.el @@ -50,34 +50,40 @@ to make output that `read' can handle, whenever this is possible." (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.