+ Helmut Eller heller@common-lisp.net:
| (slime-eval-async `(cl:lisp-implementation-type) | (lambda (x) (message "%S" x))) | | Note that slime-eval-async is intended to write SLIME commands and is | a bit picky what you put in the expression.
Indeed, but I can live with that. It's just a question of packing it up into an elisp function that enforces the constraints.
| > And, while we're at it, how about the backend lisp asking emacs to run | > some elisp code? | | swank::eval-in-emacs does that, but we use it rarely and the whole | Lisp->Emacs communication isn't very mature. E.g. | | (swank::eval-in-emacs '(emacs-version))
That works, but (swank::eval-in-emacs '(find-file "/tmp/foo")) killed the slime connection. (But it did run open a buffer on /tmp/foo first.) It also produced quite a lot of information in the *inferior-lisp* buffer. I have saved it in a file, so if anybody would like to see it, drop me a note. But I bet y'all can reproduce this yourselves.
Wait, I think I see what is happening: The find-file returns the value #<buffer foo>, which is probably too hard to handle. But this works fine:
(swank::eval-in-emacs '(progn (find-file "/tmp/foo") t))
Thanks for the help.
- Harald