;ELC   
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



(byte-code "\300\301\302\303\304\305\306\307\306\310&	\210\311\312\313\314\315DD\316\317\320%\210\311\321\313\314\322DD\323\317\324%\210\311\325\313\314\326DD\327\317\324%\207" [custom-declare-group cust-print nil "Handles print-level and print-circle." :prefix "print-" :group lisp extensions custom-declare-variable print-level funcall function #[0 "\300\207" [nil] 1 #1=""] "Controls how many levels deep a nested data object will print.\n\nIf nil, printing proceeds recursively and may lead to\nmax-lisp-eval-depth being exceeded or an error may occur:\n`Apparently circular structure being printed.'\nAlso see `print-length' and `print-circle'.\n\nIf non-nil, components at levels equal to or greater than `print-level'\nare printed simply as `#'.  The object to be printed is at level 0,\nand if the object is a list or vector, its top-level components are at\nlevel 1." :type (choice (const nil) integer) print-circle #[0 "\300\207" [nil] 1 #1#] "Controls the printing of recursive structures.\n\nIf nil, printing proceeds recursively and may lead to\n`max-lisp-eval-depth' being exceeded or an error may occur:\n\"Apparently circular structure being printed.\"  Also see\n`print-length' and `print-level'.\n\nIf non-nil, shared substructures anywhere in the structure are printed\nwith `#N=' before the first occurrence (in the order of the print\nrepresentation) and `#N#' in place of each subsequent occurrence,\nwhere N is a positive decimal integer." boolean custom-print-vectors #[0 "\300\207" [nil] 1 #1#] "Non-nil if printing of vectors should obey `print-level' and `print-length'."] 10)
#@461 An alist for custom printing of any type.
Pairs are of the form (PREDICATE . PRINTER).  If PREDICATE is true
for an object, then PRINTER is called with the object.
PRINTER should print to `standard-output' using cust-print-original-princ
if the standard printer is sufficient, or cust-print-prin for complex things.
The PRINTER should return the object being printed.

Don't modify this variable directly.  Use `add-custom-printer' and
`delete-custom-printer'
(defvar custom-printers nil (#$ . 1689))
#@133 Add a pair of PREDICATE and PRINTER to `custom-printers'.
Any pair that has the same PREDICATE is first removed.

(fn PRED PRINTER)
(defalias 'add-custom-printer #[514 "B\301\236\"B\302 \207" [custom-printers delq cust-print-update-custom-printers] 6 (#$ . 2197)])
#@65 Delete the custom printer associated with PREDICATE.

(fn PRED)
(defalias 'delete-custom-printer #[257 "\301\236\"\302 \207" [custom-printers delq cust-print-update-custom-printers] 4 (#$ . 2474)])
#@15 

(fn OBJECT)
(defalias 'cust-print-use-custom-printer #[257 "\300\207" [nil] 2 (#$ . 2682)])
(defalias 'cust-print-update-custom-printers #[0 "\301\302\303\304\305\306\307\310\"\311\"BE\"\207" [custom-printers defalias cust-print-use-custom-printer lambda (object) cond append mapcar #[257 "\211@\300BA\301BD\207" [(object) (object)] 4 "\n\n(fn PAIR)"] ((t nil))] 9])
#@20 

(fn SYMBOL-PAIR)
(defalias 'cust-print-set-function-cell #[257 "\300@A@K\"\207" [defalias] 4 (#$ . 3059)])
#@32 

(fn OBJECT &optional STREAM)
(defalias 'cust-print-original-princ #[513 "\300\207" [nil] 3 (#$ . 3176)])
(byte-code "\300\301!\204 \302\303\304\"\210\300\207" [fboundp cust-print-original-prin1 mapc cust-print-set-function-cell ((cust-print-original-prin1 prin1) (cust-print-original-princ princ) (cust-print-original-print print) (cust-print-original-prin1-to-string prin1-to-string) (cust-print-original-format format) (cust-print-original-message message) (cust-print-original-error error))] 3)
#@170 Replace print functions with general, customizable, Lisp versions.
The Emacs subroutines are saved away, and you can reinstall them
by running `custom-print-uninstall'.
(defalias 'custom-print-install #[0 "\300\301\302\"\210\303\207" [mapc cust-print-set-function-cell ((prin1 custom-prin1) (princ custom-princ) (print custom-print) (prin1-to-string custom-prin1-to-string) (format custom-format) (message custom-message) (error custom-error)) t] 3 (#$ . 3684) nil])
#@51 Reset print functions to their Emacs subroutines.
(defalias 'custom-print-uninstall #[0 "\300\301\302\"\210\303\207" [mapc cust-print-set-function-cell ((prin1 cust-print-original-prin1) (princ cust-print-original-princ) (print cust-print-original-print) (prin1-to-string cust-print-original-prin1-to-string) (format cust-print-original-format) (message cust-print-original-message) (error cust-print-original-error)) t] 3 (#$ . 4157) nil])
(defalias 'custom-print-funcs-installed-p 'custom-print-installed-p)
#@65 Return t if custom-print is currently installed, nil otherwise.
(defalias 'custom-print-installed-p #[0 "\300K\301K=\207" [custom-prin1 prin1] 2 (#$ . 4673)])
#@85 Temporarily install the custom print package while executing BODY.

(fn &rest BODY)
(defalias 'with-custom-print '(macro . #[128 "\300\301\302BB\303BB\207" [unwind-protect progn (custom-print-install) ((custom-print-uninstall))] 5 (#$ . 4838)]))
(byte-code "\300\301\302\303#\210\304\305\301\"\207" [put with-custom-print edebug-form-spec t defalias with-custom-print-funcs] 4)
#@440 Output the printed representation of OBJECT, any Lisp object.
Quoting characters are printed when needed to make output that `read'
can handle, whenever this is possible.
Output stream is STREAM, or value of `standard-output' (which see).

This is the custom-print replacement for the standard `prin1'.  It
uses the appropriate printer depending on the values of `print-level'
and `print-circle' (which see).

(fn OBJECT &optional STREAM)
(defalias 'custom-prin1 #[513 "\300\301#\207" [cust-print-top-level cust-print-original-prin1] 6 (#$ . 5224)])
#@315 Output the printed representation of OBJECT, any Lisp object.
No quoting characters are used; no delimiters are printed around
the contents of strings.
Output stream is STREAM, or value of `standard-output' (which see).

This is the custom-print replacement for the standard `princ'.

(fn OBJECT &optional STREAM)
(defalias 'custom-princ #[513 "\300\301#\207" [cust-print-top-level cust-print-original-princ] 6 (#$ . 5783)])
#@353 Return a string containing the printed representation of OBJECT,
any Lisp object.  Quoting characters are used when needed to make output
that `read' can handle, whenever this is possible, unless the optional
second argument NOESCAPE is non-nil.

This is the custom-print replacement for the standard `prin1-to-string'.

(fn OBJECT &optional NOESCAPE)
(defalias 'custom-prin1-to-string #[513 "\300\301!r\211q\210\302 \210)\203 \303\"\210\202 \304\"\210r\211q\210\305 )\207" [get-buffer-create " *custom-print-temp*" erase-buffer custom-princ custom-prin1 buffer-string] 6 (#$ . 6217)])
#@342 Output the printed representation of OBJECT, with newlines around it.
Quoting characters are printed when needed to make output that `read'
can handle, whenever this is possible.
Output stream is STREAM, or value of `standard-output' (which see).

This is the custom-print replacement for the standard `print'.

(fn OBJECT &optional STREAM)
(defalias 'custom-print #[513 "\300\301\"\210\302\"\210\300\301\"\207" [cust-print-original-princ "\n" custom-prin1] 5 (#$ . 6817)])
#@869 Format a string out of a control-string and arguments.
The first argument is a control string.  It, and subsequent arguments
substituted into it, become the value, which is a string.
It may contain %s or %d or %c to substitute successive following arguments.
%s means print an argument as a string, %d means print as number in decimal,
%c means print a number as a single character.
The argument used by %s must be a string or a symbol;
the argument used by %d, %b, %o, %x or %c must be a number.

This is the custom-print replacement for the standard `format'.  It
calls the Emacs `format' after first making strings for list,
vector, or symbol args.  The format specification for such args should
be `%s' in any case, so a string argument will also work.  The string
is generated with `custom-prin1-to-string', which quotes quotable
characters.

(fn FMT &rest ARGS)
(defalias 'custom-format #[385 "\300\301\302\303\"#\207" [apply cust-print-original-format mapcar #[257 "\211<\204 \300!\204 \2119\203 \301!\207\207" [vectorp custom-prin1-to-string] 3 "\n\n(fn ARG)"]] 8 (#$ . 7302)])
#@516 Print a one-line message at the bottom of the screen.
The first argument is a control string.
It may contain %s or %d or %c to print successive following arguments.
%s means print an argument as a string, %d means print as number in decimal,
%c means print a number as a single character.
The argument used by %s must be a string or a symbol;
the argument used by %d or %c must be a number.

This is the custom-print replacement for the standard `message'.
See `custom-format' for the details.

(fn FMT &rest ARGS)
(defalias 'custom-message #[385 "\300\301\302\303\"#\207" [apply cust-print-original-message mapcar #[257 "\211<\204 \300!\204 \2119\203 \301!\207\207" [vectorp custom-prin1-to-string] 3 "\n\n(fn ARG)"]] 8 (#$ . 8402)])
#@194 Signal an error, making error message by passing all args to `format'.

This is the custom-print replacement for the standard `error'.
See `custom-format' for the details.

(fn FMT &rest ARGS)
(defalias 'custom-error #[385 "\300\301\302\303#C\"\207" [signal error apply custom-format] 8 (#$ . 9151)])
#@15 

(fn OBJECT)
(defalias 'cust-print-original-printer #[257 "\300\207" [nil] 2 (#$ . 9460)])
#@15 

(fn OBJECT)
(defalias 'cust-print-low-level-prin #[257 "\300\207" [nil] 2 (#$ . 9558)])
#@15 

(fn OBJECT)
(defalias 'cust-print-prin #[257 "\300\207" [nil] 2 (#$ . 9654)])
#@36 

(fn OBJECT STREAM EMACS-PRINTER)
(defalias 'cust-print-top-level #[771 "\206 	\205\f \306!\n\206 \307\310\311\"\210\310\312\2045 \f\2045 \n\2045 \2039 \n\2045 \2039 \313\202: \311\"\210\310\314\f\203F \315\202G \312\"\210\314!\210+\207" [standard-output print-circle print-level cust-print-current-level circle-table custom-printers cust-print-preprocess-circle-tree -1 defalias cust-print-original-printer cust-print-low-level-prin cust-print-print-object cust-print-prin cust-print-print-circular custom-print-vectors print-length] 6 (#$ . 9740)])
#@15 

(fn OBJECT)
(defalias 'cust-print-print-object #[257 "\211\204 \300!\207\301!\203 \207\211:\203 \302!\207\303!\203\" \304!\207\300!\207" [cust-print-original-printer cust-print-use-custom-printer cust-print-list vectorp cust-print-vector] 3 (#$ . 10314)])
#@15 

(fn OBJECT)
(defalias 'cust-print-print-circular #[257 "\211\236\211\2031 \211A\211\301V\203 \302\303!\210\302!\210\302\303!\207[\241\210\302\303!\210\302[!\210\302\304!\210\305!\207\305!\207" [circle-table 0 cust-print-original-princ "#" "=" cust-print-low-level-prin] 5 (#$ . 10587)])
#@13 

(fn LIST)
(defalias 'cust-print-list #[257 "\303U\203 \304\305!\210\207S\304\306!\210	\206 \303\307@!\210A\262\203( \304\310!\210\211S\262\203g \211\303U\204g <\203M \n\236\204M \307@!\210A\262\202X \304\311!\210\307!\210\312\262\211S\262\203, \304\310!\210\202, \203u \211\303U\203u \304\313!\210\304\314!\266)\207" [cust-print-current-level print-length circle-table 0 cust-print-original-princ "#" "(" cust-print-prin " " ". " nil "..." ")"] 4 (#$ . 10890)])
#@15 

(fn VECTOR)
(defalias 'cust-print-vector #[257 "\302U\203 \303\304!\210\207S\302G\303\305!\210	\203 	^\262W\203= \306H!\210T\262GW\203 \303\307!\210\202 GW\203H \303\310!\210\303\311!\210)\266\207" [cust-print-current-level print-length 0 cust-print-original-princ "#" "[" cust-print-prin " " "..." "]"] 7 (#$ . 11382)])
#@15 

(fn OBJECT)
(defalias 'cust-print-preprocess-circle-tree #[257 "\301C\302!\210\211A\237\241\210\303A\2036 A@\211A\203, \211\241\210S\262A\262\210\202 \211AA\241\266\202 \266A)\207" [circle-table nil cust-print-walk-circle-tree -1] 6 (#$ . 11733)])
#@15 

(fn OBJECT)
(defalias 'cust-print-walk-circle-tree #[257 "\301\211\205u \247\206 9\205 \302\303!!=\262?\205\" A\236\262\211\203/ \211\304\241\210\202; \204; CAB\241\210\211\203C \301\202p :\203R \305@!\210A\202p \306!\205p G\307\211W\205n \305H!\210\211T\262\202[ \266\202\262\202 \207" [circle-table nil intern-soft symbol-name t cust-print-walk-circle-tree vectorp 0] 8 (#$ . 12006)])
(provide 'cust-print)
