50 |
(let ((print-escape-newlines pp-escape-newlines) |
(let ((print-escape-newlines pp-escape-newlines) |
51 |
(print-quoted t)) |
(print-quoted t)) |
52 |
(prin1 object (current-buffer))) |
(prin1 object (current-buffer))) |
53 |
(goto-char (point-min)) |
(pp-buffer) |
|
(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) |
|
54 |
(buffer-string)) |
(buffer-string)) |
55 |
(kill-buffer (current-buffer))))) |
(kill-buffer (current-buffer))))) |
56 |
|
|
57 |
|
(defun pp-buffer () |
58 |
|
"Prettify the current buffer with printed representation of a Lisp object." |
59 |
|
(goto-char (point-min)) |
60 |
|
(while (not (eobp)) |
61 |
|
;; (message "%06d" (- (point-max) (point))) |
62 |
|
(cond |
63 |
|
((condition-case err-var |
64 |
|
(prog1 t (down-list 1)) |
65 |
|
(error nil)) |
66 |
|
(save-excursion |
67 |
|
(backward-char 1) |
68 |
|
(skip-chars-backward "'`#^") |
69 |
|
(when (and (not (bobp)) (memq (char-before) '(?\ ?\t ?\n))) |
70 |
|
(delete-region |
71 |
|
(point) |
72 |
|
(progn (skip-chars-backward " \t\n") (point))) |
73 |
|
(insert "\n")))) |
74 |
|
((condition-case err-var |
75 |
|
(prog1 t (up-list 1)) |
76 |
|
(error nil)) |
77 |
|
(while (looking-at "\\s)") |
78 |
|
(forward-char 1)) |
79 |
|
(delete-region |
80 |
|
(point) |
81 |
|
(progn (skip-chars-forward " \t\n") (point))) |
82 |
|
(insert ?\n)) |
83 |
|
(t (goto-char (point-max))))) |
84 |
|
(goto-char (point-min)) |
85 |
|
(indent-sexp)) |
86 |
|
|
87 |
;;;###autoload |
;;;###autoload |
88 |
(defun pp (object &optional stream) |
(defun pp (object &optional stream) |
89 |
"Output the pretty-printed representation of OBJECT, any Lisp object. |
"Output the pretty-printed representation of OBJECT, any Lisp object. |