summaryrefslogtreecommitdiffstats
path: root/core/src/text
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/text')
-rw-r--r--core/src/text/editor.rs38
1 files changed, 30 insertions, 8 deletions
diff --git a/core/src/text/editor.rs b/core/src/text/editor.rs
index 09d4efde..f87e18f3 100644
--- a/core/src/text/editor.rs
+++ b/core/src/text/editor.rs
@@ -40,14 +40,8 @@ pub trait Editor: Sized + Default {
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum Action {
- MoveLeft,
- MoveRight,
- MoveUp,
- MoveDown,
- MoveLeftWord,
- MoveRightWord,
- MoveHome,
- MoveEnd,
+ Move(Motion),
+ Select(Motion),
SelectWord,
SelectLine,
Insert(char),
@@ -58,6 +52,34 @@ pub enum Action {
Drag(Point),
}
+#[derive(Debug, Clone, Copy, PartialEq)]
+pub enum Motion {
+ Left,
+ Right,
+ Up,
+ Down,
+ WordLeft,
+ WordRight,
+ Home,
+ End,
+ PageUp,
+ PageDown,
+ DocumentStart,
+ DocumentEnd,
+}
+
+impl Motion {
+ pub fn widen(self) -> Self {
+ match self {
+ Self::Left => Self::WordLeft,
+ Self::Right => Self::WordRight,
+ Self::Home => Self::DocumentStart,
+ Self::End => Self::DocumentEnd,
+ _ => self,
+ }
+ }
+}
+
/// The cursor of an [`Editor`].
#[derive(Debug, Clone)]
pub enum Cursor {