]> git.eshelyaron.com Git - emacs.git/commitdiff
(pp-buffer): New fun created from the code in
authorJuri Linkov <juri@jurta.org>
Fri, 28 May 2004 21:05:17 +0000 (21:05 +0000)
committerJuri Linkov <juri@jurta.org>
Fri, 28 May 2004 21:05:17 +0000 (21:05 +0000)
`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'.

lisp/emacs-lisp/pp.el

index c93868859f097afcc09fa0e16b7cf092cf0972c5..61d31921e57b8bbba6d17efaf85e47dc2e918f21 100644 (file)
@@ -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.