I was just testing out the inspector, and was able to reliably cause
it to blow up.
CL-USER(168): (clouseau:inspector *taems-model* :new-process t)
#<MULTIPROCESSING:PROCESS
Inspector Clouseau: #<TAEMS-MODEL @ #x72023142> @ #x72f7cd42>
...crashes with the followign error:
Error: Attempt to access the plist field of
#<TAEMS-MODEL @ #x72023142> which is not a symbol.
[condition type: SIMPLE-ERROR]
Restart actions (select using :continue):
0: Return to application command loop
1: Abort entirely from this process.
[Current process: Inspector Clouseau: *TAEMS-MODEL*]
[1] CL-USER(1):
CL-USER(169): (clouseau:inspector '*taems-model* :new-process t)
#<MULTIPROCESSING:PROCESS Inspector Clouseau: *TAEMS-MODEL* @
#x728a4da2>
This works ok (presumably because it's a symbol it has a property
list?), but when I click on the value cell of the *taems-model*
variable, Clouseau blows up with the same error.
The proximate cause seems to be PRINT-DOCUMENTATION, which pulls the
documentation and then tries to print it, as can be seen in this
error:
CL-USER(171): (documentation *taems-model* t)
Error: Attempt to access the plist field of
#<TAEMS-MODEL @ #x72023142> which is not a symbol.
[condition type: SIMPLE-ERROR]
Restart actions (select using :continue):
0: Return to Top Level (an "abort" restart).
1: Abort entirely from this process.
Does this mean that ACL is not doing the Right Thing with the
documentation function? Or is CLOUSEAU wrong to assume that
everything will have documentation? Seems like documentation might not
be defined on objects, if I read the CLHS correctly.
The following change to PRINT-DOCUMENTATION seems to fix my problem.
Not sure how right it is, though.
(defun print-documentation (object pane)
"Print OBJECT's documentation, if any, to PANE"
(when (catch 'no-docs
(handler-bind ((warning #'muffle-warning)
(error #'(lambda (c) (declare (ignore c)) (throw 'no-docs nil))))
(documentation object t)))
(with-heading-style (pane)
(format pane "~&Documentation: "))
(princ (documentation object t) pane)))