Writing Emacs plugin in OCaml
Ecamlis a library for writing Emacs packages in OCaml. It uses Emacs 25 support for dynamic modules to load native OCaml code into Emacs.
Compile your plugin using
(modes (native shared_object))in the executable stanza of your dune file. See
example/dunefor an example.
(only_shared_object true)to the
executablesstanza in your jbuild. For instance:
(executables ((names (my_plugin)) (libraries (ecaml)) (only_shared_object true)))
my_plugin.sowith jenga. This has been tested in opam using jane-build.
You need to use the
-output-complete-objoption of ocamlopt to produce a self-contained shared object file. For instance to build the plugin in the
$ ocamlfind ocamlopt -linkpkg -package ecaml -thread -output-complete-obj \ -runtime-variant _pic -pp ppx-jane example_plugin.ml -o example_plugin.so
As of Emacs version 25, Emacs supports plugins. Here is the API:
Here's a tutorial:
Here's an example plugin:
Note that Emacs modules must be GPL compatible, so you must make sure that your work based on Ecaml is released under a GPL compatible license.
Ecaml itself is released under the Apache 2.0 license which is GPL compatible.