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