pub(crate) mod bridges;
pub(crate) mod command;
pub(crate) mod comment;
pub(crate) mod dot_repeat;
pub(crate) mod entry;
pub(crate) mod insert_bridges;
pub(crate) mod insert_ops;
pub(crate) mod jumplist;
pub(crate) mod linewise;
pub(crate) mod motion;
pub(crate) mod op_motion;
pub(crate) mod operator;
pub(crate) mod range_ops;
pub(crate) mod sneak;
pub(crate) mod state;
pub(crate) mod text_object;
pub(crate) mod text_object_ops;
pub(crate) mod visual;
pub(crate) mod visual_ops;
pub use hjkl_engine::abbrev::{Abbrev, AbbrevKind, AbbrevTrigger};
pub use hjkl_engine::search::SearchPrompt;
pub use hjkl_engine::types::{
CHANGE_LIST_MAX, InsertDir, JUMPLIST_MAX, SEARCH_HISTORY_MAX, ScrollDir,
};
pub use hjkl_vim_types::{
InsertEntry, InsertReason, InsertSession, LastChange, LastHorizontalMotion, LastVisual, Mode,
Motion, Operator, Pending, RangeKind, TextObject,
};
pub(crate) use bridges::*;
pub(crate) use command::*;
pub(crate) use comment::*;
pub(crate) use dot_repeat::*;
pub(crate) use entry::*;
pub(crate) use insert_bridges::*;
pub(crate) use insert_ops::*;
pub(crate) use jumplist::*;
pub(crate) use linewise::*;
pub(crate) use motion::*;
pub(crate) use op_motion::*;
pub(crate) use operator::*;
pub(crate) use range_ops::*;
pub(crate) use sneak::*;
pub(crate) use state::*;
pub(crate) use text_object::*;
pub(crate) use text_object_ops::*;
pub(crate) use visual::*;
pub(crate) use visual_ops::*;
pub use motion::parse_motion;
pub use state::{MAX_COUNT, VimState};
pub use visual::{drop_blame_if_left_normal, op_is_change};
use hjkl_engine::Editor;
pub fn install<H: hjkl_engine::types::Host>(ed: &mut Editor<hjkl_buffer::View, H>) {
ed.set_discipline(Box::new(VimState::default()));
}
pub fn vim_editor<H: hjkl_engine::types::Host>(
buffer: hjkl_buffer::View,
host: H,
options: hjkl_engine::types::Options,
) -> Editor<hjkl_buffer::View, H> {
let mut ed = Editor::new(buffer, host, options);
install(&mut ed);
ed
}