[slime-devel] hook around eval-for-emacs

Anton Vodonosov avodonosov at yandex.ru
Tue Jan 15 16:34:07 UTC 2013


Could you add a hook around eval-for-emacs, as show in the attached patch?
It would allow maintain custom context for all the slime requests.

My use case is that I have this tool: https://github.com/avodonosov/local-package-aliases.
It allows me to say that in my package $a:plist-alist means alexandria:plist-alist

It is portable and in my opinion convenient, but as the aliases are handled by reader macro,
slime does not understand tokens like $a:plist-alist, because it can't find package $a.
In result slime completion, function arguments hints, go-to-definition doesn't work.

The solution I found is that during evaluation of any slime request, 
if the package designated by swank::*buffer-package* has alias mapping,
I temporary add all these aliases as nicknames to the corresponding packages.

That's why I need a hook around evaluation
of every expression received by swank::eval-for-emacs.

With the swank patch applied, I add this hook:

  (defun swank-eval-for-emacs-hook (next-fn)
    (local-package-aliases::call-with-nicknames (local-package-aliases::alias-table-for swank::*buffer-package*)

  (push 'swank-eval-for-emacs-hook swank::*around-eval-for-emacs-hook*)

and slime completion, go-to-definition, function parameters hints all start working.

Best regards,
- Anton

-------------- next part --------------
A non-text attachment was scrubbed...
Name: around-eval-for-emacs-hook.diff
Type: application/octet-stream
Size: 3490 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/slime-devel/attachments/20130115/cd29c5ae/attachment.obj>

More information about the slime-devel mailing list