Switch to Emacs like multi select
This commit is contained in:
parent
fe2ec158be
commit
3f94d0fee8
15
filter.go
15
filter.go
|
@ -149,8 +149,16 @@ func HandleKeyEvents(s *State, ev tcell.EventKey, inputs Items) {
|
||||||
func HandleMain(state *State, ev tcell.EventKey, input Items) {
|
func HandleMain(state *State, ev tcell.EventKey, input Items) {
|
||||||
if ev.Key() == tcell.KeyTAB {
|
if ev.Key() == tcell.KeyTAB {
|
||||||
// Mark the current line as selected
|
// Mark the current line as selected
|
||||||
item := (*input)[state.Current]
|
if state.InSelectionMode {
|
||||||
item.Selected = !item.Selected
|
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 {
|
} else if ev.Key() == tcell.KeyUp || ev.Key() == tcell.KeyCtrlP {
|
||||||
if state.Current > 0 {
|
if state.Current > 0 {
|
||||||
|
@ -182,9 +190,6 @@ func HandleMain(state *State, ev tcell.EventKey, input Items) {
|
||||||
|
|
||||||
} else if ev.Key() == tcell.KeyCtrlSpace {
|
} else if ev.Key() == tcell.KeyCtrlSpace {
|
||||||
if state.InSelectionMode {
|
if state.InSelectionMode {
|
||||||
start := min(state.SelectionStartLine, state.Current)
|
|
||||||
end := max(state.SelectionStartLine, state.Current)
|
|
||||||
toggleItems(input, start, end+1)
|
|
||||||
state.SelectionStartLine = -1
|
state.SelectionStartLine = -1
|
||||||
} else {
|
} else {
|
||||||
state.SelectionStartLine = state.Current
|
state.SelectionStartLine = state.Current
|
||||||
|
|
Loading…
Reference in New Issue