1mod buf_helpers;
23mod buffer_impl;
24mod editor;
25mod input;
26pub mod keymap_motion;
27pub mod motions;
28mod registers;
29pub mod search;
30pub mod substitute;
31pub mod types;
32mod viewport_math;
33mod vim;
34
35#[cfg(feature = "crossterm")]
36pub use crossterm::event::KeyEvent;
37#[cfg(feature = "crossterm")]
38pub use editor::crossterm_to_input;
39pub use editor::{Editor, LspIntent, StepBookkeeping};
40pub use input::{Input, Key, decode_macro, from_planned as decode_planned_input};
41pub use registers::{Registers, Slot};
42
43pub use buffer_impl::{BufferFoldProvider, BufferFoldProviderMut};
44pub use keymap_motion::MotionKind;
45pub use substitute::{
46 SubstError, SubstFlags, SubstituteCmd, SubstituteOutcome, apply_substitute, parse_substitute,
47};
48pub use types::{
49 Attrs, Buffer, BufferEdit, BufferId, Color, ContentEdit, Cursor, CursorShape, DefaultHost,
50 Edit, EditorSnapshot, EngineError, FoldOp, FoldProvider, Highlight, HighlightKind, Host,
51 Input as PlannedInput, Mode, Modifiers, MouseEvent, MouseKind, NoopFoldProvider, OptionValue,
52 Options, Pos, Query, RenderFrame, Search, Selection, SelectionKind, SelectionSet, SnapshotMode,
53 SpecialKey, Style, Viewport, WrapMode,
54};
55pub use vim::{
56 InsertDir, InsertEntry, InsertReason, InsertSession, LastChange, LastVisual, Motion, Operator,
57 Pending, RangeKind, ScrollDir, SearchPrompt, op_is_change, parse_motion,
58};
59
60pub use vim::Mode as FsmMode;
67
68#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
77pub enum KeybindingMode {
78 #[default]
79 Vim,
80}
81
82#[cfg(feature = "serde")]
83impl serde::Serialize for KeybindingMode {
84 fn serialize<S: serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
85 s.serialize_str("vim")
86 }
87}
88
89#[cfg(feature = "serde")]
90impl<'de> serde::Deserialize<'de> for KeybindingMode {
91 fn deserialize<D: serde::Deserializer<'de>>(d: D) -> Result<Self, D::Error> {
92 let _ = String::deserialize(d)?;
93 Ok(KeybindingMode::Vim)
94 }
95}
96
97#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
99pub enum VimMode {
100 #[default]
101 Normal,
102 Insert,
103 Visual,
104 VisualLine,
105 VisualBlock,
106}