Skip to content

kryptic-sh/hjkl-engine

hjkl-engine

Vim FSM, motion grammar, and editor traits — the no-I/O core of the hjkl stack.

CI crates.io docs.rs License: MIT Website

Vim-mode editor engine built on top of hjkl-buffer. Exposes an Editor you can drop into a ratatui layout — covers the bulk of vim's normal / insert / visual / visual-line / visual-block modes, text-object operators, dot-repeat, and ex-command handling (:s/foo/bar/g, :w, :q, :noh, ...). Imported from sqeel-vim with full git history.

Status

Editor<B, H> is generic over buffer backend + host; the Buffer trait splits into Cursor / Query / BufferEdit / Search subtraits. See docs.rs for the canonical API reference.

Features

Feature Default Notes
serde yes Serde derives for Editor snapshot types.

ratatui and crossterm are unconditional deps until the engine-native Style type and the Buffer/Host trait extraction land. After that they move behind feature flags so wasm/no_std consumers can opt out.

Usage

hjkl-engine = "0.3"
use hjkl_engine::{Editor, Input, Key};
use hjkl_engine::types::{DefaultHost, Options};
use hjkl_buffer::Buffer;

let mut editor = Editor::new(
    Buffer::new(),
    DefaultHost::new(),
    Options::default(),
);
editor.set_content("hello world");

// Drive the FSM with a keystroke
let input = Input { key: Key::Char('j'), ..Default::default() };
hjkl_engine::step(&mut editor, input);

License

MIT. See LICENSE.

About

Vim FSM, motion grammar, and ex commands. Pre-1.0 churn.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages