On Sat, 5 Mar 2005, Luke Gorrie wrote:
NB: I want buffer-local syntax as much as the next guy but I think this clsql #.(hack-read-syntax) ... #.(unhack-read-syntax) trick is a bit fragile -- I don't think that tools like SLIME or the CMUCL debugger can really do the right thing with it.
In the direction of decrasing fragility:
1. Instead of #.(HACK) one should do
(EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE) (HACK))
...which would be the macroexpansion of an (IN-SYNTAX :FOO) form.
2. Doing (SETF *READTABLE* (FIND-READTABLE :FOO)) instead of hacking the current one is safer: LOAD and COMPILE-FILE bind *READTABLE*, but by identity it's still the same one.
3. Perhaps most importantly, in the absence of a semi-standard IN-SYNTAX/FIND-READTABLE extension the only thing that can allow environments like Slime to do the even approximately the right thing is using #-style custom read-syntax instead of plain brackets or whatever, as that will signal a read-error which the environment can try to handle.
Just my 0.02EUR
Cheers,
-- Nikodemus Schemer: "Buddha is small, clean, and serious." Lispnik: "Buddha is big, has hairy armpits, and laughs."