alma 0.1.1

A Bevy-native modal text editor with Vim-style navigation.
Documentation
//! Vim-style editing primitives.
//!
//! The module mirrors Vim's compositional model: mode state owns intent, motions describe movement,
//! and higher-level commands can combine those pieces into actions such as visual selections.

pub mod action;
pub mod command;
pub mod config;
pub mod cursor;
pub mod error;
pub mod grammar;
pub mod insert;
pub mod key;
pub mod leader;
pub mod mode;
pub mod motion;
pub mod normal;
pub mod operation;
pub mod operator;
pub mod paste;
pub mod register;
pub mod repeat;
pub mod search;
pub mod selection;
pub mod text_object;
pub mod visual;

pub use action::{ActionContext, ActionDispatcher, VimAction};
pub use command::{
    CommandArgSchema, CommandAuthority, CommandCatalog, CommandName, CommandSpec, QuitPolicy,
    VimCommand, VimCommandState, VimCommandText, WriteQuitPolicy,
};
pub use config::{
    BuiltinAction, KeyAction, KeySequence, Keymap, KeymapSet, ModeSet, VimConfig, VimOptions,
};
pub use cursor::VimCursor;
pub use error::{VimError, VimStatusLine, VimStatusMessage};
pub use grammar::{
    Count, Counted, ModeSwitch, NormalCommand, NormalGrammar, NormalGrammarOutput,
    NormalOperatorTarget, Operator, ViewportPosition,
};
pub use insert::{
    DEFAULT_INSERT_TEXT_BYTES_PER_FRAME, INSERT_NEWLINE, InsertCommand, InsertEditPlanner,
    InsertEntry, InsertEntryCaret, InsertExitPolicy, InsertPlanEdit, InsertState,
    resolve_insert_entry_caret,
};
pub use key::KeyToken;
pub use leader::{LeaderBinding, LeaderConfig, LeaderState};
pub use mode::{VimMode, VisualMode};
pub use motion::{
    CharSearch, CharSearchDirection, CharSearchPlacement, ColumnMotion, LineAddress, Motion,
    PageDirection, ParagraphDirection, WordKind,
};
pub use normal::{NormalCommandContext, NormalState, apply_search_outcome};
pub use operation::{
    OperationEffect, OperationError, OperationOutcome, OperatorTargetSource, VimOperation,
};
pub use operator::{
    OperatorTarget, ResolvedTarget, TargetKind, TargetResolutionError, ValidatedOperatorRange,
};
pub use paste::{PastePlacement, PastePlan, PastePlanError, plan_paste};
pub use register::{
    RegisterBank, RegisterBankShape, RegisterKind, RegisterName, RegisterText, RegisterTextShape,
    RegisterWriteError,
};
pub use repeat::{RepeatState, RepeatStateShape, RepeatableOperation, RepeatableOperationShape};
pub use search::{
    SearchCaseSensitivity, SearchDirection, SearchOutcome, SearchQuery, SearchState,
    VimSearchState, literal_match_ranges_in_range,
};
pub use selection::{BlockSelection, ScreenColumnRange, VimSelection, VimSelectionState};
pub use text_object::{TextObject, TextObjectKind, TextObjectScope, resolve_text_object_range};
pub use visual::{VisualCommand, VisualCommandContext, VisualGrammarOutput, VisualState};