Matthias Koeppe mkoeppe+slime@mail.math.uni-magdeburg.de writes:
You simply cannot control the interning behavior of READ. Look what happens when a reader error occurs somewhere. You have no control over what symbols it has already interned when the error is signalled.
That one's trivial to fix. Forgot an UNWIND-PROTECT at the right place.
And I personally use C-c C-s much more often than stumbling over one of those obscure occasions.
The problem is one cannot know when the obscure occasions occur.
One can. It's only possible in extended operator parsing. And there specifially just that which `slime-make-form-spec-from-string' lets through.
(I'm open for suggestions to improve the protocol. I just tried to keep it as simple and as flexible as possible.)
I designed the old protocol (which just gathers the required information for every supported operator in a safe way) specifically to avoid READ.
Yeah, that's because previously only straightforward information was required.
You either implement something like this again, or as an alternative you employ a safe restricted reader.
The problem with the own reader is that this one should probably also understand unicode if the lisp implementation underneath does so, too. I'm not sure how smoothly this can be done then.
So I'll probably cut some of the flexibility.
-T.