pub enum ModalState {
Normal,
Insert,
Visual(VisualKind),
Select(VisualKind),
OperatorPending,
Command,
Search(SearchDirection),
Replace,
Prompt,
}Expand description
The vim modal state of a buffer — which grammar a keystroke is read in.
Buffer-level and orthogonal to major / minor modes (a rust buffer is
in exactly one of these at a time; the axes never collapse). Keymap
lookups are filtered by it, and Range::Selection
defaults from it while Visual is active. Serializable so it can cross
the core protocol and be recorded in snapshots.
Variants§
Normal
Vim Normal mode: keys are operators, motions and commands. The
initial state of every buffer and the target of <Esc>.
Insert
Vim Insert mode: printable keys insert text at the cursor.
Visual(VisualKind)
Vim Visual mode with the given selection shape; the selection is the active region and the default range for operators and ex-commands.
Select(VisualKind)
Vim Select mode (SN.3d). Same selection geometry as
Self::Visual (the VisualKind is reused verbatim), but
inverted typing semantics: a printable key replaces the whole
selection and drops into Insert. See
docs/dev/architecture/select-mode.md.
OperatorPending
An operator has been typed and a motion or text object is awaited
(d in dw). Repeating the operator key operates linewise on the
current line (dd, cc, yy).
Command
The : command line (the *command-line* minibuffer) is focused.
Search(SearchDirection)
The / or ? search line (the *search-line* minibuffer) is
focused, searching in the given direction.
Replace
Vim Replace mode (R): printable keys overtype existing characters
instead of inserting.
Prompt
A generic one-line minibuffer text prompt is focused (see
Effect::OpenPrompt) — distinct from Command/Search
because those are tied to the specific *command-line* /
*search-line* buffers and their own submit semantics; a
prompt’s buffer/label/submit-action varies per invocation.
Implementations§
Source§impl ModalState
impl ModalState
Sourcepub fn is_visual(self) -> bool
pub fn is_visual(self) -> bool
Whether this state is currently consuming a Visual-mode selection (in
any of charwise / linewise / blockwise). Used by callers that want to
supply Range::Selection as a default when no explicit range is given.
Sourcepub fn is_select(self) -> bool
pub fn is_select(self) -> bool
Whether this state is Select mode (SN.3d), in any of charwise /
linewise / blockwise. Select shares Visual’s selection geometry
but overtypes on a printable key. Kept distinct from
Self::is_visual because the dispatch differs; callers that
care only about “is a selection live” should gain an explicit
selection_is_active helper when one is first needed (no
production caller exists yet — see select-mode.md §2).
Sourcepub fn is_operator_pending(self) -> bool
pub fn is_operator_pending(self) -> bool
Whether this state expects more input to complete a pending operator.
In Op-Pending, a motion or text object is awaited; pressing an operator
key here resolves to “operate on the current line” (vim’s dd, cc,
yy semantics).
Trait Implementations§
Source§impl Clone for ModalState
impl Clone for ModalState
Source§fn clone(&self) -> ModalState
fn clone(&self) -> ModalState
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ModalState
Source§impl Debug for ModalState
impl Debug for ModalState
Source§impl Default for ModalState
impl Default for ModalState
Source§fn default() -> ModalState
fn default() -> ModalState
Source§impl<'de> Deserialize<'de> for ModalState
impl<'de> Deserialize<'de> for ModalState
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for ModalState
Source§impl Hash for ModalState
impl Hash for ModalState
Source§impl PartialEq for ModalState
impl PartialEq for ModalState
Source§impl Serialize for ModalState
impl Serialize for ModalState
impl StructuralPartialEq for ModalState
Auto Trait Implementations§
impl Freeze for ModalState
impl RefUnwindSafe for ModalState
impl Send for ModalState
impl Sync for ModalState
impl Unpin for ModalState
impl UnsafeUnpin for ModalState
impl UnwindSafe for ModalState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.