Switch to Emacs like multi select

This commit is contained in:
Sameer Rahmani 2022-11-25 17:33:56 +00:00
parent fe2ec158be
commit 3f94d0fee8
1 changed files with 10 additions and 5 deletions

View File

@ -149,8 +149,16 @@ func HandleKeyEvents(s *State, ev tcell.EventKey, inputs Items) {
func HandleMain(state *State, ev tcell.EventKey, input Items) {
if ev.Key() == tcell.KeyTAB {
// Mark the current line as selected
item := (*input)[state.Current]
item.Selected = !item.Selected
if state.InSelectionMode {
start := min(state.SelectionStartLine, state.Current)
end := max(state.SelectionStartLine, state.Current)
toggleItems(input, start, end+1)
state.SelectionStartLine = -1
state.InSelectionMode = false
} else {
item := (*input)[state.Current]
item.Selected = !item.Selected
}
} else if ev.Key() == tcell.KeyUp || ev.Key() == tcell.KeyCtrlP {
if state.Current > 0 {
@ -182,9 +190,6 @@ func HandleMain(state *State, ev tcell.EventKey, input Items) {
} else if ev.Key() == tcell.KeyCtrlSpace {
if state.InSelectionMode {
start := min(state.SelectionStartLine, state.Current)
end := max(state.SelectionStartLine, state.Current)
toggleItems(input, start, end+1)
state.SelectionStartLine = -1
} else {
state.SelectionStartLine = state.Current