multiselect and commit split
This commit is contained in:
parent
125ce460fa
commit
a356373c7c
|
@ -310,8 +310,17 @@ pub fn refine<'a>(selected: IndexedLine, input: &'a [IndexedLine]) -> Result<Str
|
|||
..
|
||||
})) => state = unbox_state(previous),
|
||||
|
||||
Ok(Event::Key(KeyEvent {
|
||||
code: KeyCode::Enter,
|
||||
modifiers: KeyModifiers::NONE,
|
||||
..
|
||||
})) => {
|
||||
break;
|
||||
}
|
||||
|
||||
Ok(Event::Key(KeyEvent {
|
||||
code: KeyCode::Up | KeyCode::Char('k'),
|
||||
modifiers: KeyModifiers::NONE,
|
||||
..
|
||||
})) => match list_state.selected() {
|
||||
Some(n) if n > 0 => {
|
||||
|
@ -324,6 +333,7 @@ pub fn refine<'a>(selected: IndexedLine, input: &'a [IndexedLine]) -> Result<Str
|
|||
},
|
||||
Ok(Event::Key(KeyEvent {
|
||||
code: KeyCode::Down | KeyCode::Char('j'),
|
||||
modifiers: KeyModifiers::NONE,
|
||||
..
|
||||
})) => match list_state.selected() {
|
||||
Some(n) if n < parts.len() - 1 => {
|
||||
|
@ -335,10 +345,12 @@ pub fn refine<'a>(selected: IndexedLine, input: &'a [IndexedLine]) -> Result<Str
|
|||
_ => (),
|
||||
},
|
||||
|
||||
// Select
|
||||
Ok(Event::Key(KeyEvent {
|
||||
code: KeyCode::Char(' '),
|
||||
..
|
||||
})) => {
|
||||
// Toggle selected item
|
||||
if let Some(n) = list_state.selected() {
|
||||
let mut new_parts = parts.clone();
|
||||
new_parts[n].1 = !parts[n].1;
|
||||
|
@ -351,6 +363,66 @@ pub fn refine<'a>(selected: IndexedLine, input: &'a [IndexedLine]) -> Result<Str
|
|||
})
|
||||
}
|
||||
}
|
||||
// Select and move down one
|
||||
Ok(Event::Key(KeyEvent {
|
||||
code: KeyCode::Up | KeyCode::Char('K'),
|
||||
modifiers: KeyModifiers::SHIFT,
|
||||
..
|
||||
})) => {
|
||||
let part_len = parts.len();
|
||||
// Toggle selected item
|
||||
if let Some(n) = list_state.selected() {
|
||||
let mut new_parts = parts.clone();
|
||||
new_parts[n].1 = !parts[n].1;
|
||||
let delimiter = delimiter.to_string();
|
||||
state = Some(RefinementState::Pieces {
|
||||
parts: new_parts,
|
||||
input: input,
|
||||
previous: box_state(state),
|
||||
delimiter,
|
||||
})
|
||||
}
|
||||
|
||||
match list_state.selected() {
|
||||
Some(n) if n > 0 => {
|
||||
list_state.select(Some(n - 1));
|
||||
}
|
||||
Some(n) if n == 0 => {
|
||||
list_state.select(Some(part_len - 1));
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
Ok(Event::Key(KeyEvent {
|
||||
code: KeyCode::Down | KeyCode::Char('J'),
|
||||
modifiers: KeyModifiers::SHIFT,
|
||||
..
|
||||
})) => {
|
||||
let part_len = parts.len();
|
||||
// Toggle selected item
|
||||
if let Some(n) = list_state.selected() {
|
||||
let mut new_parts = parts.clone();
|
||||
new_parts[n].1 = !parts[n].1;
|
||||
let delimiter = delimiter.to_string();
|
||||
state = Some(RefinementState::Pieces {
|
||||
parts: new_parts,
|
||||
input: input,
|
||||
previous: box_state(state),
|
||||
delimiter,
|
||||
})
|
||||
}
|
||||
|
||||
match list_state.selected() {
|
||||
Some(n) if n < part_len - 1 => {
|
||||
list_state.select(Some(n + 1));
|
||||
}
|
||||
Some(n) if n == part_len - 1 => {
|
||||
list_state.select(Some(0));
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
|
||||
_ => (),
|
||||
},
|
||||
InputMode::PromptingDelimiter => todo!(),
|
||||
|
|
Loading…
Reference in New Issue