hjkl-buffer 0.3.1

Rope-backed text buffer with cursor and edits. Pre-1.0 churn.
Documentation

hjkl-buffer

Rope-backed text buffer with cursor, edits, motions, folds, viewport, and search.

CI crates.io docs.rs License: MIT Website

Core text storage layer for the hjkl workspace. Provides vim-shaped buffer semantics — charwise/linewise/blockwise selection, motions matching vim edge cases (h no-wrap, $ clamp, sticky col on j/k), folds, viewport, and search. Extracted from sqeel-buffer with full git history.

Status

0.3.0 — frozen public API; see IMPLEMENTERS.md for the 14-method sealed surface.

Features

  • ratatui (optional, default off): re-exports Style and styled-span helpers wired through ratatui. Pull this in only when consuming from a ratatui frontend; otherwise the buffer is UI-agnostic.

Usage

hjkl-buffer = "0.3"
use hjkl_buffer::{Buffer, Position};

let mut buf = Buffer::from_str("hello\nworld");
assert_eq!(buf.row_count(), 2);
assert_eq!(buf.line(0), Some("hello"));
assert_eq!(buf.cursor(), Position { row: 0, col: 0 });

// Move cursor to second row
buf.set_cursor(Position { row: 1, col: 0 });
assert_eq!(buf.cursor().row, 1);

// Replace all content
buf.replace_all("new content");
assert_eq!(buf.as_string(), "new content");

License

MIT. See LICENSE.