package ecaml
All checked builds passInstall
dune-project
Dependency
Authors
Maintainers
Sources
sha256=87e76473915e12d718096100a5c4d15d98aba6f99ecbf21814b7389e8c28bb25
Description
Ecaml is a library for writing Emacs plugins in OCaml. It uses Emacs 25 support for plugins to load native OCaml compiled code.
Added to opam-repository:
README
Emacs packages in OCaml
Ecaml is a library for writing Emacs packages in OCaml. It uses Emacs 25 support for dynamic modules to load native OCaml code into Emacs.
Building a plugin
Using Dune
Compile your plugin using (modes (native shared_object)) in the executable stanza of your dune file. See example/dune.example for an example.
Using Jane Street jenga rules
Simply add (only_shared_object true) to the executables stanza in your jbuild. For instance:
(executables
((names (my_plugin))
(libraries (ecaml))
(only_shared_object true)))Then build my_plugin.so with jenga. This has been tested in opam using jane-build.
Using other build systems
You need to use the -output-complete-obj option of ocamlopt to produce a self-contained shared object file. For instance to build the plugin in the example/ directory:
$ ocamlfind ocamlopt -linkpkg -package ecaml -thread -output-complete-obj \
-runtime-variant _pic -pp ppx-jane example_plugin.ml -o example_plugin.soLinks
As of Emacs version 25, Emacs supports plugins. Here is the API:
http://git.savannah.gnu.org/cgit/emacs.git/tree/src/emacs-module.h?id=e18ee60b02d08b2f075903005798d3d6064dc013
Here's a tutorial:
http://diobla.info/blog-archive/modules-tut.html
Here's an example plugin:
http://git.savannah.gnu.org/cgit/emacs.git/tree/modules/mod-test/mod-test.c?id=e18ee60b02d08b2f075903005798d3d6064dc013
Licensing
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.
Dependencies (11)
-
uutf
>= "1.0.2" -
dune
>= "3.11.0" -
ppx_jane
>= "v0.17" & < "v0.18~" -
expect_test_helpers_core
>= "v0.17" & < "v0.18~" -
core_unix
>= "v0.17" & < "v0.18~" -
core_kernel
>= "v0.17" & < "v0.18~" -
core
>= "v0.17" & < "v0.18~" -
async_unix
>= "v0.17" & < "v0.18~" -
async_kernel
>= "v0.17" & < "v0.18~" -
async
>= "v0.17" & < "v0.18~" -
ocaml
>= "5.1.0"
Dev Dependencies
None
Optional Dependencies
None
Used by (2)
- gopcaml-mode
-
gopcaml-mode-merlin
< "0.0.6"
Conflicts
None
Build status
Results of building ecaml with each compiler on check.ci.ocaml.org, run of against opam-repository 8a77e58. All results for this package.
Each result links to its build log. To keep crawlers from overloading the site, build logs require a GitHub sign-in (see ocurrent/opam-health-check). On your first log, GitHub asks you to “Authorize opam-health-check”, the OCurrent app that runs these checks; it sees only your public profile, not your repositories. The sign-in lasts 30 days.
| Version | OCaml 4.11 | OCaml 4.14 | OCaml 5.2 | OCaml 5.4 | OCaml 5.5 |
|---|---|---|---|---|---|
| v0.17.0 (this version) | n/a | n/a | good | good | good |
| v0.16.0 | n/a | good | good | n/a | n/a |
| v0.15.0 | good | good | n/a | n/a | n/a |
- good Package successfully built
- partial One of the dependencies failed to build
- bad Package failed to build
- n/a Package is not available in this environment
- internal Internal failure