Expand description
Vim-mode editor engine built on top of hjkl_buffer.
Exposes an Editor you can drop into a ratatui layout, a command
grammar that 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, …).
Rendering goes through hjkl_buffer::BufferView; selection / gutter
highlights are painted in the same single-pass as text.
Imported wholesale from sqeel-vim with full git history. The trait
extraction (Selection / SelectionSet / Buffer + Host sub-traits per
SPEC.md) lands progressively under crate::types. Pre-1.0
churn — the public surface may change in patch bumps.
The legacy public surface is intentionally narrow:
Editor— the editor widget.KeybindingMode/VimMode— mode enums used by host apps.- [
ex::run] / [ex::ExEffect] — drive ex-mode commands.
Re-exports§
pub use types::Attrs;pub use types::Buffer;pub use types::BufferEdit;pub use types::BufferId;pub use types::Color;pub use types::Cursor;pub use types::CursorShape;pub use types::DefaultHost;pub use types::Edit;pub use types::EditorSnapshot;pub use types::EngineError;pub use types::FoldOp;pub use types::FoldProvider;pub use types::Highlight;pub use types::HighlightKind;pub use types::Host;pub use types::Input as PlannedInput;pub use types::Mode;pub use types::Modifiers;pub use types::MouseEvent;pub use types::MouseKind;pub use types::NoopFoldProvider;pub use types::OptionValue;pub use types::Options;pub use types::Pos;pub use types::Query;pub use types::RenderFrame;pub use types::Search;pub use types::Selection;pub use types::SelectionKind;pub use types::SelectionSet;pub use types::SnapshotMode;pub use types::SpecialKey;pub use types::Style;pub use types::WrapMode;
Modules§
- motions
- Vim-shaped cursor motions, computed over the SPEC trait surface.
- search
- Engine-owned search state + execution helpers.
- types
- Core types for the planned 0.1.0 trait surface (per
SPEC.md).
Structs§
- Buffer
Fold Provider FoldProvideradapter wrapping a&hjkl_buffer::Buffer. Lets engine call sites ask the buffer’s fold storage about visible rows without reaching intoBuffer::next_visible_row&c. directly.- Buffer
Fold Provider Mut - Mutable
FoldProvideradapter wrapping a&mut hjkl_buffer::Buffer. Engine call sites that need to dispatch aFoldOp(vim’sz…keystrokes, the:fold*Ex commands, edit-pipeline invalidation) construct this on the fly from&mut self.bufferand callFoldProvider::apply/FoldProvider::invalidate_rangeon it. - Editor
- Input
- A key press with modifier flags. The vim engine reads modifiers
directly off this struct (e.g.
input.ctrl && input.key == Key::Char('d')). - Registers
- Search
Prompt - Active
/or?search prompt. Text mutations drive the textarea’s live search pattern so matches highlight as the user types. - Slot
- Viewport
- Visible region of a buffer — the runtime viewport state the host owns and mutates per render frame.
Enums§
- Key
- A key code, mirroring the subset of
crossterm::event::KeyCodethe vim engine actually consumes.Nullis the conventional sentinel for “no input” (matching the previoustui_textarea::Keyshape) so call sites can early-return on unsupported keys. - Keybinding
Mode - Which keyboard discipline the editor uses. Currently vim-only, but kept as an enum so future emacs / plain bindings can slot in without touching the public signature.
- LspIntent
- Host-observable LSP requests triggered by editor bindings. The
hjkl-engine crate doesn’t talk to an LSP itself — it just raises an
intent that the TUI layer picks up and routes to
sqls. - VimMode
- Coarse vim-mode a host app can display in its status line.