Function: pp

pp is an autoloaded and byte-compiled function defined in pp.el.gz.

Signature

(pp OBJECT &optional STREAM)

Documentation

Output the pretty-printed representation of OBJECT, any Lisp object.

Quoting characters are printed as needed to make output that read can handle, whenever this is possible.

Uses the pretty-printing code specified in pp-default-function.

Output stream is STREAM, or value of standard-output (which see).

View in manual

Probably introduced at or before Emacs version 19.20.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/pp.el.gz
;;;###autoload
(defun pp (object &optional stream)
  "Output the pretty-printed representation of OBJECT, any Lisp object.
Quoting characters are printed as needed to make output that `read'
can handle, whenever this is possible.

Uses the pretty-printing code specified in `pp-default-function'.

Output stream is STREAM, or value of `standard-output' (which see)."
  (cond
   ((and (eq (or stream standard-output) (current-buffer))
         ;; Make sure the current buffer is setup sanely.
         (eq (syntax-table) emacs-lisp-mode-syntax-table)
         (eq indent-line-function #'lisp-indent-line))
    ;; Skip the buffer->string->buffer middle man.
    (funcall pp-default-function object)
    ;; Preserve old behavior of (usually) finishing with a newline.
    (unless (bolp) (insert "\n")))
   (t
    (princ (pp-to-string object) (or stream standard-output)))))