Merge pull request #29 from occivink/master
Add command to invert marks in current directory
This commit is contained in:
commit
692e9116bf
1
comp.go
1
comp.go
@ -32,6 +32,7 @@ var (
|
|||||||
"search",
|
"search",
|
||||||
"search-back",
|
"search-back",
|
||||||
"toggle",
|
"toggle",
|
||||||
|
"invert",
|
||||||
"yank",
|
"yank",
|
||||||
"delete",
|
"delete",
|
||||||
"paste",
|
"paste",
|
||||||
|
1
doc.go
1
doc.go
@ -30,6 +30,7 @@ The following commands are provided by lf with default keybindings.
|
|||||||
search (default "/")
|
search (default "/")
|
||||||
search-back (default "?")
|
search-back (default "?")
|
||||||
toggle (default "<space>")
|
toggle (default "<space>")
|
||||||
|
invert (default "v")
|
||||||
yank (default "y")
|
yank (default "y")
|
||||||
delete (default "d")
|
delete (default "d")
|
||||||
paste (default "p")
|
paste (default "p")
|
||||||
|
@ -34,6 +34,7 @@ The following commands are provided by lf with default keybindings.
|
|||||||
search (default "/")
|
search (default "/")
|
||||||
search-back (default "?")
|
search-back (default "?")
|
||||||
toggle (default "<space>")
|
toggle (default "<space>")
|
||||||
|
invert (default "v")
|
||||||
yank (default "y")
|
yank (default "y")
|
||||||
delete (default "d")
|
delete (default "d")
|
||||||
paste (default "p")
|
paste (default "p")
|
||||||
|
2
eval.go
2
eval.go
@ -280,6 +280,8 @@ func (e *CallExpr) eval(app *App, args []string) {
|
|||||||
// TODO: implement
|
// TODO: implement
|
||||||
case "toggle":
|
case "toggle":
|
||||||
app.nav.toggle()
|
app.nav.toggle()
|
||||||
|
case "invert":
|
||||||
|
app.nav.invert()
|
||||||
case "yank":
|
case "yank":
|
||||||
if err := app.nav.save(true); err != nil {
|
if err := app.nav.save(true); err != nil {
|
||||||
msg := fmt.Sprintf("yank: %s", err)
|
msg := fmt.Sprintf("yank: %s", err)
|
||||||
|
24
nav.go
24
nav.go
@ -343,22 +343,32 @@ func (nav *Nav) cd(wd string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (nav *Nav) toggle() {
|
func (nav *Nav) toggleMark(path string) {
|
||||||
if nav.currEmpty() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
path := nav.currPath()
|
|
||||||
|
|
||||||
if nav.marks[path] {
|
if nav.marks[path] {
|
||||||
delete(nav.marks, path)
|
delete(nav.marks, path)
|
||||||
} else {
|
} else {
|
||||||
nav.marks[path] = true
|
nav.marks[path] = true
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (nav *Nav) toggle() {
|
||||||
|
if nav.currEmpty() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.toggleMark(nav.currPath())
|
||||||
|
|
||||||
nav.down(1)
|
nav.down(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (nav *Nav) invert() {
|
||||||
|
last := nav.currDir()
|
||||||
|
for _, f := range last.fi {
|
||||||
|
path := filepath.Join(last.path, f.Name())
|
||||||
|
nav.toggleMark(path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (nav *Nav) save(keep bool) error {
|
func (nav *Nav) save(keep bool) error {
|
||||||
if len(nav.marks) == 0 {
|
if len(nav.marks) == 0 {
|
||||||
if nav.currEmpty() {
|
if nav.currEmpty() {
|
||||||
|
1
opts.go
1
opts.go
@ -49,6 +49,7 @@ func init() {
|
|||||||
gOpts.keys["/"] = &CallExpr{"search", nil}
|
gOpts.keys["/"] = &CallExpr{"search", nil}
|
||||||
gOpts.keys["?"] = &CallExpr{"search-back", nil}
|
gOpts.keys["?"] = &CallExpr{"search-back", nil}
|
||||||
gOpts.keys["<space>"] = &CallExpr{"toggle", nil}
|
gOpts.keys["<space>"] = &CallExpr{"toggle", nil}
|
||||||
|
gOpts.keys["v"] = &CallExpr{"invert", nil}
|
||||||
gOpts.keys["y"] = &CallExpr{"yank", nil}
|
gOpts.keys["y"] = &CallExpr{"yank", nil}
|
||||||
gOpts.keys["d"] = &CallExpr{"delete", nil}
|
gOpts.keys["d"] = &CallExpr{"delete", nil}
|
||||||
gOpts.keys["p"] = &CallExpr{"paste", nil}
|
gOpts.keys["p"] = &CallExpr{"paste", nil}
|
||||||
|
Loading…
Reference in New Issue
Block a user