31 releases (18 breaking)
0.19.0 | Mar 16, 2024 |
---|---|
0.18.0 | Sep 26, 2021 |
0.17.0 | Mar 9, 2021 |
0.15.0 | Dec 27, 2020 |
0.1.0 | May 23, 2016 |
#54 in FFI
850 downloads per month
Used in 3 crates
100KB
2K
SLoC
Emacs Module in Rust
User Guide | Change Log | Examples
This provides a high-level binding to emacs-module
, Emacs's support for dynamic modules.
Code for a minimal module looks like this:
use emacs::{defun, Env, Result, Value};
emacs::plugin_is_GPL_compatible!();
#[emacs::module(name = "greeting")]
fn init(_: &Env) -> Result<()> { Ok(()) }
#[defun]
fn say_hello(env: &Env, name: String) -> Result<Value<'_>> {
env.message(&format!("Hello, {}!", name))
}
(require 'greeting)
(greeting-say-hello "Emacs")
Example Modules
- emacs-tree-sitter: Binding for tree-sitter, an incremental parsing tool.
- pullover: Use Emacs to edit text for other macOS apps.
- test-module.
- emacs-rs-examples.
- magit-libgit2: Experimental attempt to speed up magit using libgit2.
Development
- Building:
bin/build
- Testing:
bin/test
- Continuous testing (requires
cargo-watch
):bin/test watch
On Windows, use PowerShell to run the corresponding .ps1
scripts.
Dependencies
~2MB
~50K SLoC