diff options
Diffstat (limited to 'src/command.rs')
-rw-r--r-- | src/command.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/command.rs b/src/command.rs index f5a24c9..383389e 100644 --- a/src/command.rs +++ b/src/command.rs | |||
@@ -30,6 +30,32 @@ impl CommandBox { | |||
30 | self.cursor = 0; | 30 | self.cursor = 0; |
31 | } | 31 | } |
32 | 32 | ||
33 | pub fn cursor_back_word(&mut self) { | ||
34 | let mut prev_word_idx = 0; | ||
35 | { | ||
36 | let sl = &self.text[0..self.cursor]; | ||
37 | let idx = sl.rfind(|c: char| !c.is_alphanumeric() && c != '_'); | ||
38 | if let Some(i) = idx { | ||
39 | prev_word_idx = i; | ||
40 | } | ||
41 | } | ||
42 | self.cursor = prev_word_idx; | ||
43 | } | ||
44 | |||
45 | pub fn cursor_forward_word(&mut self) { | ||
46 | let mut next_word_idx = self.cursor; | ||
47 | { | ||
48 | if self.cursor != self.text.len() { | ||
49 | let sl = &self.text[self.cursor..]; | ||
50 | let idx = sl.find(|c: char| !c.is_alphanumeric() && c != '_'); | ||
51 | if let Some(i) = idx { | ||
52 | next_word_idx = i; | ||
53 | } | ||
54 | } | ||
55 | } | ||
56 | self.cursor = next_word_idx; | ||
57 | } | ||
58 | |||
33 | pub fn backward(&mut self) { | 59 | pub fn backward(&mut self) { |
34 | self.cursor = self.cursor.saturating_sub(1); | 60 | self.cursor = self.cursor.saturating_sub(1); |
35 | } | 61 | } |