I have a read macro assigned to $ that takes two arguments separated by a dot (it binds the dot character to be whitspace while the expression is read). I can evaluate an expression like
$argA.argB
by placing the cursor after the expression and running slime-eval-last-expression (usually C-xC-e). However, I can't do it when expressions are nested thusly:
$(first $argA.argB).argC
because SLIME will send the Lisp process everything but the first $.
Now, I understand that the reason slime doesn't do this is because if you try to evaluate things like
(funA(funB argA argB) argC)
by placing your cursor after the call to funB and evaluating that you don't want it to send the lisp process "funA(funB argA argB)". And, in CL, the $ character is in the alphabetic syntax category. So is there nothing that can be done? Shall I forever be placing "progn"s around my read macros so I can evaluate them?
If there's not a way to solve this in the general case, I suppose I can work with a hacked copy of SLIME.
Oh, the joys of syntactic extension.
Chris Capel
Chris Capel pdf23ds@gmail.com writes:
by placing your cursor after the call to funB and evaluating that you don't want it to send the lisp process "funA(funB argA argB)". And, in CL, the $ character is in the alphabetic syntax category. So is there nothing that can be done? Shall I forever be placing "progn"s around my read macros so I can evaluate them?
(modify-syntax-entry ?$ "'" lisp-mode-syntax-table)
Should help.
Helmut.