The printer state stobj.
Our printer's state is a represented as the stobj
Definition:
(defstobj ps (rchars :type (satisfies str::printtree-p)) (col :initially 0 :type unsigned-byte) (autowrap-col :initially 80 :type unsigned-byte) (autowrap-ind :initially 5 :type unsigned-byte) (htmlp :type (satisfies booleanp) :initially nil) (tabsize :initially 8 :type (integer 1 *)) (pkg :initially a-symbol-that-is-not-imported :type symbol) (base :initially 10 :type (satisfies print-base-p)) (misc :initially nil :type (satisfies alistp)) (eviscconfig :type (satisfies str::eviscconfig-p) :initially (:eviscconfig (5 . 15) nil)) :inline t :renaming ((psp vl-ps-p) (rchars vl-ps->rchars-raw) (col vl-ps->col-raw) (autowrap-col vl-ps->autowrap-col-raw) (autowrap-ind vl-ps->autowrap-ind-raw) (htmlp vl-ps->htmlp-raw) (tabsize vl-ps->tabsize-raw) (pkg vl-ps->package-raw) (base vl-ps->base-raw) (misc vl-ps->misc-raw) (eviscconfig vl-ps->eviscconfig-raw) (update-rchars vl-ps-update-rchars-fn) (update-col vl-ps-update-col-fn) (update-autowrap-col vl-ps-update-autowrap-col-fn) (update-autowrap-ind vl-ps-update-autowrap-ind-fn) (update-htmlp vl-ps-update-htmlp-fn) (update-tabsize vl-ps-update-tabsize-fn) (update-pkg vl-ps-update-package-fn) (update-base vl-ps-update-base-fn) (update-misc vl-ps-update-misc-fn) (update-eviscconfig vl-ps-update-eviscconfig-fn)) :non-memoizable t)
The main fields are:
These fields are typically altered by every printing function.
The printer also includes some configuration fields which allow you to influence the behavior of certain printing functions. These fields are typically not changed by printing functions. They can also be easily loaded and saved into a vl-psconfig-p object.
Finally, the printer includes a
I once considered changing the way
We generally hide the existence of