Smarter `describe*`
aartaka opened this issue · comments
On SBCL, describing a bound symbol generates a HUGE wall of text with all the slots of the bound class, all the methods of the bound function etc. For nyxt:buffer
, it's:
NYXT:BUFFER
[symbol]
BUFFER names a generic function:
Lambda-list: (OBJECT)
Derived type: (FUNCTION (T) *)
Documentation:
Auto-generated accessor function for slot BUFFER.
Method-combination: STANDARD
Methods:
(BUFFER (PASSWORD-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (PROMPT-BUFFER-COMMAND-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (HISTORY-ALL-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (HISTORY-ALL-OWNER-NODES-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (ALL-HISTORY-FORWARDS-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (HISTORY-FORWARDS-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (DIRECT-HISTORY-FORWARDS-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (HISTORY-BACKWARDS-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (SEARCH-BUFFER-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (SEARCH-MATCH))
Documentation:
The buffer where the match is found.
(BUFFER (FRAME-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (HEADING-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (HEADING))
Documentation:
The buffer to which this heading belongs.
(BUFFER (DEBUG-WRAPPER))
Documentation:
The buffer debugger is open in for this condition.
(BUFFER (EXTENDED-COMMAND-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (COMMAND-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (REQUEST-DATA))
Documentation:
Buffer targeted by the request.
(BUFFER (HISTORY-DISOWNED-SOURCE))
Documentation:
automatically generated reader method
(BUFFER (MODE))
Documentation:
automatically generated reader method
(BUFFER (KEYWORD-SOURCE))
Documentation:
automatically generated reader method
(SETF BUFFER) names a generic function:
Lambda-list: (NEW-VALUE OBJECT)
Argument precedence order: (NEW-VALUE OBJECT)
Derived type: (FUNCTION (T T) *)
Documentation:
Auto-generated accessor function for slot BUFFER.
Method-combination: STANDARD
Methods:
((SETF BUFFER) (T PASSWORD-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T PROMPT-BUFFER-COMMAND-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T HISTORY-ALL-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T HISTORY-ALL-OWNER-NODES-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T ALL-HISTORY-FORWARDS-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T HISTORY-FORWARDS-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T DIRECT-HISTORY-FORWARDS-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T HISTORY-BACKWARDS-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T SEARCH-BUFFER-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T SEARCH-MATCH))
Documentation:
The buffer where the match is found.
((SETF BUFFER) (T FRAME-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T HEADING-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T HEADING))
Documentation:
The buffer to which this heading belongs.
((SETF BUFFER) (T DEBUG-WRAPPER))
Documentation:
The buffer debugger is open in for this condition.
((SETF BUFFER) (T EXTENDED-COMMAND-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T COMMAND-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T REQUEST-DATA))
Documentation:
Buffer targeted by the request.
((SETF BUFFER) (T HISTORY-DISOWNED-SOURCE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T MODE))
Documentation:
automatically generated writer method
((SETF BUFFER) (T KEYWORD-SOURCE))
Documentation:
automatically generated writer method
BUFFER names the user-class #<NYXT:USER-CLASS NYXT:BUFFER>:
Documentation:
A buffer is the fundamental unit of displayed content.
Buffers result from the computations of a web renderer, which generates a visual
representation of HTML documents.
Rendered URLs or the Nyxt's manual qualify as examples. Buffers are fully
separated from one another, so that each has its own behavior and settings.
Class precedence-list: NYXT:BUFFER, NYXT:RENDERER-BUFFER, NYXT/RENDERER/GTK:GTK-BUFFER, STANDARD-OBJECT, SB-PCL::SLOT-OBJECT, T
Direct superclasses: NYXT:RENDERER-BUFFER
Direct subclasses: NYXT:NETWORK-BUFFER, NYXT:CONTEXT-BUFFER, NYXT:DOCUMENT-BUFFER, NYXT:INPUT-BUFFER, NYXT:MODABLE-BUFFER
Direct slots:
NYXT:DEFAULT-MODES
Type: (NYXT/TYPES:LIST-OF SYMBOL)
Initargs: :DEFAULT-MODES
Initform: NYXT::%DEFAULT-MODES
Documentation:
The symbols of the modes to instantiate on buffer creation.
The mode instances are stored in the `modes' BUFFER slot.
The default modes returned by this method are appended to the default modes
inherited from the superclasses.
NYXT:ID
Type: UNSIGNED-BYTE
Initargs: :ID
Initform: (NYXT/UTILITIES:NEW-ID)
Readers: NYXT:ID
Writers: (SETF NYXT:ID)
Documentation:
Unique identifier for a buffer.
NYXT:PROFILE
Type: NYXT:NYXT-PROFILE
Initargs: :PROFILE
Initform: (NYXT:GLOBAL-PROFILE)
Readers: NYXT:PROFILE
Writers: (SETF NYXT:PROFILE)
Documentation:
Buffer profiles are used to specialize the behavior of
various parts, such as the path of all data files.
See also the `profile' slot in the `browser' class.
NYXT:URL
Initargs: :URL
Initform: (QURI.URI:URI "")
Readers: NYXT:URL
Writers: (SETF NYXT:URL)
NYXT:URL-AT-POINT
Initargs: :URL-AT-POINT
Initform: (QURI.URI:URI "")
Readers: NYXT:URL-AT-POINT
Writers: (SETF NYXT:URL-AT-POINT)
NYXT:TITLE
Type: STRING
Initargs: :TITLE
Initform: ""
Readers: NYXT:TITLE
Writers: (SETF NYXT:TITLE)
NYXT:STYLE
Initargs: :STYLE
Initform: (THEME:THEMED-CSS (NYXT:THEME NYXT:*BROWSER*)
`(:FONT-FACE :FONT-FAMILY #1="public sans" :FONT-STYLE #2="normal" :FONT-WEIGHT #3="400" :SRC
,(FORMAT NIL #4="url('nyxt-resource:~a')" "PublicSans-Regular.woff") #5="format('woff')")
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #6="italic" :FONT-WEIGHT #3# :SRC
,(FORMAT NIL #4# "PublicSans-Italic.woff") #5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #2# :FONT-WEIGHT #7="100" :SRC ,(FORMAT NIL #4# "PublicSans-Thin.woff") #5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #6# :FONT-WEIGHT #7# :SRC ,(FORMAT NIL #4# "PublicSans-ThinItalic.woff")
#5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #2# :FONT-WEIGHT #8="200" :SRC
,(FORMAT NIL #4# "PublicSans-ExtraLight.woff") #5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #6# :FONT-WEIGHT #8# :SRC
,(FORMAT NIL #4# "PublicSans-ExtraLightItalic.woff") #5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #2# :FONT-WEIGHT #9="300" :SRC ,(FORMAT NIL #4# "PublicSans-Light.woff")
#5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #6# :FONT-WEIGHT #9# :SRC ,(FORMAT NIL #4# "PublicSans-LightItalic.woff")
#5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #2# :FONT-WEIGHT #10="500" :SRC ,(FORMAT NIL #4# "PublicSans-Medium.woff")
#5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #6# :FONT-WEIGHT #10# :SRC ,(FORMAT NIL #4# "PublicSans-MediumItalic.woff")
#5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #2# :FONT-WEIGHT #11="600" :SRC
,(FORMAT NIL #4# "PublicSans-SemiBold.woff") #5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #6# :FONT-WEIGHT #11# :SRC
,(FORMAT NIL #4# "PublicSans-SemiBoldItalic.woff") #5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #2# :FONT-WEIGHT #12="700" :SRC ,(FORMAT NIL #4# "PublicSans-Bold.woff")
#5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #6# :FONT-WEIGHT #12# :SRC ,(FORMAT NIL #4# "PublicSans-BoldItalic.woff")
#5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #2# :FONT-WEIGHT #13="800" :SRC
,(FORMAT NIL #4# "PublicSans-ExtraBold.woff") #5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #6# :FONT-WEIGHT #13# :SRC
,(FORMAT NIL #4# "PublicSans-ExtraBoldItalic.woff") #5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #2# :FONT-WEIGHT #14="900" :SRC ,(FORMAT NIL #4# "PublicSans-Black.woff")
#5#)
`(:FONT-FACE :FONT-FAMILY #1# :FONT-STYLE #6# :FONT-WEIGHT #14# :SRC ,(FORMAT NIL #4# "PublicSans-BlackItalic.woff")
#5#)
`(* :FONT-FAMILY ,THEME:FONT-FAMILY :BOX-SIZING NYXT::BORDER-BOX)
`(NYXT::BODY :BACKGROUND-COLOR ,THEME:BACKGROUND :COLOR ,THEME:ON-BACKGROUND :MARGIN-LEFT #15="20px" :MARGIN-TOP #15#)
`(NYXT::UL :MARGIN-TOP #16="0" :MARGIN-BOTTOM #16#)
`("details > *" :MARGIN-LEFT "18px")
`("details > ul" :MARGIN-LEFT #17="inherit")
`("details summary" :MARGIN-LEFT #17# :MARGIN-BOTTOM "8px" :CURSOR #18="pointer")
`("summary::-webkit-details-marker" :PADDING-BOTTOM "4px")
`(NYXT::.SECTION :MARGIN-TOP #19="2em")
`("h1" :FONT-SIZE "44px")
`("h2" :FONT-SIZE "36px")
`("h3" :FONT-SIZE "32px")
`("h4" :FONT-SIZE "28px")
`("h5" :FONT-SIZE "24px")
`("h6" :FONT-SIZE #15#)
`("p" :FONT-SIZE "16px")
`("h1,h2,h3,h4,h5,h6" :COLOR ,THEME:PRIMARY :FONT-FAMILY ,THEME:FONT-FAMILY)
`(NYXT::HR :BACKGROUND-COLOR ,THEME:SECONDARY :COLOR ,THEME:ON-SECONDARY :HEIGHT #20="3px" :BORDER-RADIUS "2px"
:BORDER-WIDTH #16#)
`(NYXT::BUTTON :BACKGROUND "transparent" :COLOR #17# :BORDER #21="none" :PADDING 0 :FONT #17# :OUTLINE #17#)
`(NYXT::.BUTTON :APPEARANCE "menulist-button" :BACKGROUND-COLOR ,THEME:PRIMARY :COLOR ,THEME:ON-PRIMARY :DISPLAY
#22="inline-block" :TEXT-DECORATION #21# :BORDER-RADIUS #23="0.1em" :BORDER-COLOR ,THEME:PRIMARY :BORDER-STYLE
#24="solid" :BORDER-WIDTH #25="0.2em" :PADDING #25# :MARGIN #25# :MIN-HEIGHT #26="2rem")
`(NYXT::SELECT.BUTTON :APPEARANCE NYXT::AUTO :BACKGROUND-COLOR ,THEME:PRIMARY NYXT::!IMPORTANT :COLOR
,(THEME:CONTRASTING-TEXT-COLOR THEME:THEME #27="white") NYXT::!IMPORTANT :MIN-HEIGHT #26#)
`((:AND NYXT::.BUTTON :HOVER) :CURSOR #18# :OPACITY 0.8)
`((:AND NYXT::.BUTTON (:OR :VISITED :ACTIVE)) :COLOR ,THEME:BACKGROUND)
`(NYXT::.LINK :APPEARANCE NYXT::NONE :TEXT-DECORATION "underline" :DISPLAY "inline" :COLOR ,THEME:PRIMARY)
`(".link:hover" :OPACITY 0.8)
`(NYXT::.ACTION :COLOR ,THEME:ACTION
(NYXT::.BUTTON :BACKGROUND-COLOR ,THEME:ACTION :COLOR ,THEME:ON-ACTION :BORDER-COLOR ,THEME:ACTION+))
`(NYXT::.WARNING :COLOR ,THEME:WARNING
(NYXT::.BUTTON :BACKGROUND-COLOR ,THEME:WARNING :COLOR ,THEME:ON-WARNING :BORDER-COLOR ,THEME:WARNING+))
`(NYXT::.SUCCESS :COLOR ,THEME:SUCCESS
(NYXT::.BUTTON :BACKGROUND-COLOR ,THEME:SUCCESS :COLOR ,THEME:ON-SUCCESS :BORDER-COLOR ,THEME:SUCCESS+))
`(NYXT::.HIGHLIGHT :COLOR ,THEME:HIGHLIGHT
(NYXT::.BUTTON :BACKGROUND-COLOR ,THEME:HIGHLIGHT :COLOR ,THEME:ON-HIGHLIGHT :BORDER-COLOR ,THEME:HIGHLIGHT+))
`(NYXT::.HIGHLIGHT :COLOR ,THEME:HIGHLIGHT)
`(NYXT::.BUTTON.HIGHLIGHT :BACKGROUND-COLOR ,THEME:HIGHLIGHT :COLOR ,THEME:ON-HIGHLIGHT :BORDER-COLOR
,THEME:HIGHLIGHT+)
`(NYXT::.PLAIN :COLOR ,THEME:ON-BACKGROUND :BACKGROUND-COLOR ,THEME:BACKGROUND)
`(NYXT::.INPUT :APPEARANCE "textfield" :DISPLAY #22# :COLOR "black" :BACKGROUND-COLOR #27# :BORDER #25# NYXT::SOLID
,THEME:SECONDARY :BORDER-RADIUS #23# :OUTLINE #21# :PADDING #25# :MARGIN #25#)
`(NYXT::A :COLOR ,THEME:PRIMARY)
`("a:hover" :OPACITY 0.8)
`(NYXT::PRE :BORDER-RADIUS #20# :OVERFLOW "auto" :PADDING "5px")
`("table" :BORDER-RADIUS #20# :BORDER-SPACING #16# :WIDTH "100%")
`("pre, p code" :COLOR ,THEME:ON-CODEBLOCK :BACKGROUND-COLOR ,THEME:CODEBLOCK)
`("a code" :TEXT-DECORATION NYXT::UNDERLINE)
`("table, th, td" :BORDER-COLOR ,THEME:SECONDARY :BORDER-WIDTH "1px" :BORDER-STYLE #24# :BACKGROUND-COLOR
,THEME:BACKGROUND :COLOR ,THEME:ON-BACKGROUND)
`("td, th" :PADDING "6px")
`(NYXT::TH :BACKGROUND-COLOR ,THEME:PRIMARY :COLOR ,THEME:ON-PRIMARY :TEXT-ALIGN "left")
`(NYXT::DT :FONT-WEIGHT "bold" :MARGIN-TOP #19#)
`("::selection" :COLOR ,THEME:ON-ACTION :BACKGROUND-COLOR ,THEME:ACTION))
Readers: NYXT:STYLE
Writers: (SETF NYXT:STYLE)
NYXT:BUFFER-DELETE-HOOK
Type: NYXT::HOOK-BUFFER
Initargs: :BUFFER-DELETE-HOOK
Initform: (MAKE-INSTANCE 'NYXT::HOOK-BUFFER)
Readers: NYXT:BUFFER-DELETE-HOOK
Writers: (SETF NYXT:BUFFER-DELETE-HOOK)
Documentation:
Hook run before `buffer-delete' takes effect.
The handlers take the buffer as argument.
Forget it, actually. We're in REPL, we can invoke a succinct describe*
, find what we need to find, and describe this part as a separate call to describe*
. Something like:
(describe* 'nyxt:buffer)
;; Symbol BUFFER (EXTERNAL to NYXT) [fbound] [class]
;; SELF = NYXT:BUFFER
;; ID = 68770683471
;; CLASS = #<BUILT-IN-CLASS COMMON-LISP:SYMBOL>
;; TYPE = SYMBOL
;; NAME = "BUFFER"
;; PACKAGE = #<PACKAGE "NYXT">
;; VISIBILITY = :EXTERNAL
;; FUNCTION-BINDING = #<STANDARD-GENERIC-FUNCTION NYXT:BUFFER (20)>
;; CLASS-BINDING = #<NYXT:USER-CLASS NYXT:BUFFER>
;; PLIST = NIL
(describe* (find-class 'nyxt:buffer))
;; User-class #<NYXT:USER-CLASS NYXT:BUFFER>
;; User-configurable value class.
;; Can be configured using `customize-instance' and `customize-hook'.
;; SELF = #<NYXT:USER-CLASS NYXT:BUFFER>
;; ID = 68777288547
;; CLASS = #<STANDARD-CLASS NYXT:USER-CLASS>
;; SLOT-DEFINITIONS = (#<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION NYXT::CUSTOMIZE-HOOK>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::%TYPE>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::SOURCE>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::PLIST>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::NAME>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::CLASS-EQ-SPECIALIZER>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::DIRECT-SUPERCLASSES>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::DIRECT-SUBCLASSES>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::DIRECT-METHODS>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::%DOCUMENTATION>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::SAFE-P>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::FINALIZED-P>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::%CLASS-PRECEDENCE-LIST>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::CPL-AVAILABLE-P>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::CAN-PRECEDE-LIST>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::INCOMPATIBLE-SUPERCLASS-LIST>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::WRAPPER>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::PROTOTYPE>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::DIRECT-SLOTS>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION SB-PCL::SLOTS>)
;; TYPE = NYXT:USER-CLASS
;; SLOTS = (#<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION NYXT:DEFAULT-MODES>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION NYXT:ID>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION NYXT:PROFILE>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION NYXT:URL>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION NYXT:URL-AT-POINT>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION NYXT:TITLE>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION NYXT:STYLE>
;; #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION NYXT:BUFFER-DELETE-HOOK>)
;; DIRECT-SLOTS = (#<SB-MOP:STANDARD-DIRECT-SLOT-DEFINITION NYXT:DEFAULT-MODES>
;; #<SB-MOP:STANDARD-DIRECT-SLOT-DEFINITION NYXT:ID>
;; #<SB-MOP:STANDARD-DIRECT-SLOT-DEFINITION NYXT:PROFILE>
;; #<SB-MOP:STANDARD-DIRECT-SLOT-DEFINITION NYXT:URL>
;; #<SB-MOP:STANDARD-DIRECT-SLOT-DEFINITION NYXT:URL-AT-POINT>
;; #<SB-MOP:STANDARD-DIRECT-SLOT-DEFINITION NYXT:TITLE>
;; #<SB-MOP:STANDARD-DIRECT-SLOT-DEFINITION NYXT:STYLE>
;; #<SB-MOP:STANDARD-DIRECT-SLOT-DEFINITION NYXT:BUFFER-DELETE-HOOK>)
;; PROTOTYPE = NIL
;; WRAPPER = #<SB-KERNEL:LAYOUT (ID=3671) for NYXT:BUFFER {50428803}>
;; INCOMPATIBLE-SUPERCLASS-LIST = NIL
;; CAN-PRECEDE-LIST = (#<STANDARD-CLASS PROMPTER:PROMPTER> #<SB-PCL:SYSTEM-CLASS COMMON-LISP:T>
;; #<SB-PCL::SLOT-CLASS SB-PCL::SLOT-OBJECT> #<STANDARD-CLASS COMMON-LISP:STANDARD-OBJECT>
;; #<NYXT:INTERFACE-CLASS NYXT:RENDERER-BUFFER>)
;; CPL-AVAILABLE-P = T
;; %CLASS-PRECEDENCE-LIST = (#<NYXT:USER-CLASS NYXT:BUFFER> #<NYXT:INTERFACE-CLASS NYXT:RENDERER-BUFFER>
;; #<STANDARD-CLASS COMMON-LISP:STANDARD-OBJECT> #<SB-PCL::SLOT-CLASS SB-PCL::SLOT-OBJECT>
;; #<SB-PCL:SYSTEM-CLASS COMMON-LISP:T>)
;; FINALIZED-P = T
;; ...
etc.
What would be good for this workflow, actually, is using the function that represents the field as the field name. E.g., use find-class
instead of class-binding
in
CLASS-BINDING = #<NYXT:USER-CLASS NYXT:BUFFER>