[armedbear-devel] Embedding ABCL into IntelliJ IDEA and writing plugins

Alessio Stalla alessiostalla at gmail.com
Thu Aug 20 09:45:44 UTC 2009


On Wed, Aug 19, 2009 at 11:24 PM, Anton Vodonosov<avodonosov at yandex.ru> wrote:
> Hello,
>
> I created IntelliJ IDEA plugin that embeds ABCL, allows to connect
> from SLIME and extend IDEA using Common Lisp.
>
> I haven't contrived any useful functionality (that is easy
> to implement), therefore, for the sake of example, the plugin
> ads to IDEA commands yank and yank-pop, like in Emacs.

Very nice! I happen to have a copy of IDEA available, so I'll do some
experiments :)

> Source may be found here: http://github.com/avodonosov/abcl-idea/tree/master
> Binary distro: http://cloud.github.com/downloads/avodonosov/abcl-idea/abcl-idea.zip
>
> There is a readme, check it for more details.
>
> Some conclusions from my experience:
>
> - it is absolutely possible to create IDEA plugins using ABCL.
> - Jfli interface to java is currently more convenient than
>  native ABCL's

The native ABCL interface to Java is indeed very verbose; I consider
it to be a low-level api on which more user-friendly FFIs can be
implemented.

> - ABCL's performance of slime fuzzy-completion is still
>  unsatisfying (it is the only little unsatisfying thing
>  for me)
> - ABCL is more suited to be embedded into J editor, than
>  into something else. For example Interpreter.kill method
>  stops ABCL like:
>
>     if (jlisp) {
>        ... close input output streams
>     }
>     else
>         System.exit(status);
>
>  I.e. if we call Interpretter.kill() in IDEA plugin, it will
>  exit whose IDEA process

Keep in mind that, in general, the ABCL interpreter is a singleton,
and "killing" it is not that easy: besides open streams, other data is
kept around so reverting the interpreter to a clean state is quite
complicated. Why are you trying to kill it in the first place?

>  This is not a big problem, because with having Interpreter
>  source code we may But having source code we can copy/past
>  desirable kill behavior - closing streams. But it would
>  make sense to reactor it a little to be more embedding friendly.
>
> If somebody is interested to write IDEA plugins in Lisp,
> my plugin may be used as a basis for further extension.
>
> Best regards,
> - Anton
>
>
> _______________________________________________
> armedbear-devel mailing list
> armedbear-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/armedbear-devel
>




More information about the armedbear-devel mailing list