"Tobias C. Rittweiler" tcr@freebits.de writes:
Matthias Koeppe mkoeppe+slime@mail.math.uni-magdeburg.de writes:
As I explained before, we cannot use READ in the context of autodoc anyway because of interning.
I just committed my changes to remedy the interning. It does still fall back to READ. The benefit is that this also fixes interning for `slime-complete-form' at once --- which until now always interned everything.
The solution in the new version of READ-FORM-SPEC is not sufficient, because it does not handle symbols interned in nested forms.
I type:
(defmethod (tyy zzz) abcd ...
now (SWANK::READ-FORM-SPEC ("(tyy zzz)")) gets called, and returns values ((TYY ZZZ)) NIL.
Now:
(find-symbol "TYY") TYY :INTERNAL
In general the "destroy-and-repair" (here: "intern-and-unintern") method is not giving a clean implementation.
As I said, you simply cannot use READ in the context of autodoc.
What you need to do -- if you want to use your proposed protocol of sending forms to SWANK -- is implement a limited reader in READ-FORM-SPEC. It only needs to handle lists, numbers, strings, and symbols to be useful in this context. It should never intern symbols and gracefully handle what would be a reader error for READ. It should not be very hard to write; give it a try.
Matthias