[slime-devel] Slime macroexpansion breaks on xemacs.

Raymond Toy toy.raymond at gmail.com
Fri Mar 4 18:39:32 UTC 2011

This issue is 100% reproducible.  In a file, put some form like:

(loop for k from 1 to 10 do (print i))

Make sure the file ends at the closing paren; no newline or anything.
Put the cursor after the closing paren, and press C-c C-m to have slime
macroexpand it.  This causes xemacs to crash (due to a bug in xemacs).
But the issue is this in slime-sexp-at-point-for-macroexpansion:

(let ((string (slime-sexp-at-point-or-error))
      (bounds (bounds-of-thing-at-point 'sexp))
      (char-at-point (substring-no-properties (thing-at-point 'char))))

In xemacs, (thing-at-point 'char) returns nil.  Then
(substring-no-properties nil) crashes xemacs.  But if the obvious fix is
applied to xemacs, slime would just signal an error about nil not being
a string.

My workaround for this is

(char-at-point (substring-no-properties (or (thing-at-point 'char) "\n")))

Not great, but solves the problem.  I'm not sure what the right solution
would be.


More information about the slime-devel mailing list