Parse input counts: 10w, etc.
This commit is contained in:
parent
5e73f83efa
commit
de5170dcda
3 changed files with 24 additions and 5 deletions
2
TODO.md
2
TODO.md
|
@ -11,7 +11,7 @@
|
|||
- [ ] selection mode
|
||||
- [x] % for whole doc selection
|
||||
- [x] vertical splits
|
||||
- [ ] input counts (30j)
|
||||
- [x] input counts (30j)
|
||||
- [ ] respect view fullscreen flag
|
||||
- [ ] retain horiz when moving vertically
|
||||
- [ ] update lsp on redo/undo
|
||||
|
|
|
@ -9,7 +9,7 @@ use std::borrow::Cow;
|
|||
|
||||
use crossterm::{
|
||||
cursor,
|
||||
event::{read, Event, EventStream, KeyCode, KeyEvent},
|
||||
event::{read, Event, EventStream, KeyCode, KeyEvent, KeyModifiers},
|
||||
};
|
||||
use tui::{
|
||||
backend::CrosstermBackend,
|
||||
|
@ -333,10 +333,27 @@ impl Component for EditorView {
|
|||
}
|
||||
}
|
||||
mode => {
|
||||
if let Some(command) = self.keymap[&mode].get(&keys) {
|
||||
command(&mut cxt);
|
||||
match keys.as_slice() {
|
||||
&[KeyEvent {
|
||||
code: KeyCode::Char(i @ '0'..='9'),
|
||||
modifiers: KeyModifiers::NONE,
|
||||
}] => {
|
||||
let i = i.to_digit(10).unwrap() as usize;
|
||||
cxt.editor.count = Some(cxt.editor.count.map_or(i, |c| c * 10 + i));
|
||||
}
|
||||
_ => {
|
||||
// set the count
|
||||
cxt.count = cxt.editor.count.take().unwrap_or(1);
|
||||
// TODO: edge case: 0j -> reset to 1
|
||||
// if this fails, count was Some(0)
|
||||
// debug_assert!(cxt.count != 0);
|
||||
|
||||
// TODO: simplistic ensure cursor in view for now
|
||||
if let Some(command) = self.keymap[&mode].get(&keys) {
|
||||
command(&mut cxt);
|
||||
|
||||
// TODO: simplistic ensure cursor in view for now
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ pub struct Editor {
|
|||
pub tree: Tree,
|
||||
// pub documents: Vec<Document>,
|
||||
pub should_close: bool,
|
||||
pub count: Option<usize>,
|
||||
pub theme: Theme, // TODO: share one instance
|
||||
pub language_servers: helix_lsp::Registry,
|
||||
}
|
||||
|
@ -25,6 +26,7 @@ impl Editor {
|
|||
Self {
|
||||
tree: Tree::new(area),
|
||||
should_close: false,
|
||||
count: None,
|
||||
theme,
|
||||
language_servers,
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue