move selection path handling to eval
This commit is contained in:
parent
6a2bdf472b
commit
fac1c9e8de
50
eval.go
50
eval.go
@ -144,17 +144,7 @@ func (e *CallExpr) eval(app *App, args []string) {
|
||||
return
|
||||
}
|
||||
|
||||
if !f.IsDir() && gSelectionPath == "" {
|
||||
if len(app.nav.marks) == 0 {
|
||||
app.runShell(fmt.Sprintf("%s '%s'", gOpts.opener, path), nil, false, false)
|
||||
} else {
|
||||
s := gOpts.opener
|
||||
for m := range app.nav.marks {
|
||||
s += fmt.Sprintf(" '%s'", m)
|
||||
}
|
||||
app.runShell(s, nil, false, false)
|
||||
}
|
||||
} else {
|
||||
if f.IsDir() {
|
||||
err := app.nav.open()
|
||||
if err != nil {
|
||||
app.ui.message = err.Error()
|
||||
@ -162,6 +152,44 @@ func (e *CallExpr) eval(app *App, args []string) {
|
||||
return
|
||||
}
|
||||
app.ui.echoFileInfo(app.nav)
|
||||
return
|
||||
}
|
||||
|
||||
if gSelectionPath != "" {
|
||||
out, err := os.Create(gSelectionPath)
|
||||
if err != nil {
|
||||
msg := fmt.Sprintf("open: %s", err)
|
||||
app.ui.message = msg
|
||||
log.Print(msg)
|
||||
return
|
||||
}
|
||||
defer out.Close()
|
||||
|
||||
if len(app.nav.marks) != 0 {
|
||||
marks := app.nav.currMarks()
|
||||
path = strings.Join(marks, "\n")
|
||||
}
|
||||
|
||||
_, err = out.WriteString(path)
|
||||
if err != nil {
|
||||
msg := fmt.Sprintf("open: %s", err)
|
||||
app.ui.message = msg
|
||||
log.Print(msg)
|
||||
return
|
||||
}
|
||||
|
||||
gExitFlag = true
|
||||
return
|
||||
}
|
||||
|
||||
if len(app.nav.marks) == 0 {
|
||||
app.runShell(fmt.Sprintf("%s '%s'", gOpts.opener, path), nil, false, false)
|
||||
} else {
|
||||
s := gOpts.opener
|
||||
for m := range app.nav.marks {
|
||||
s += fmt.Sprintf(" '%s'", m)
|
||||
}
|
||||
app.runShell(s, nil, false, false)
|
||||
}
|
||||
case "bot":
|
||||
app.nav.bot()
|
||||
|
39
nav.go
39
nav.go
@ -291,42 +291,17 @@ func (nav *Nav) updir() error {
|
||||
func (nav *Nav) open() error {
|
||||
path := nav.currPath()
|
||||
|
||||
f, err := os.Stat(path)
|
||||
dir := newDir(path)
|
||||
|
||||
dir.load(nav.inds[path], nav.poss[path], nav.height, nav.names[path])
|
||||
|
||||
nav.dirs = append(nav.dirs, dir)
|
||||
|
||||
err := os.Chdir(path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("open: %s", err)
|
||||
}
|
||||
|
||||
if f.IsDir() {
|
||||
dir := newDir(path)
|
||||
|
||||
dir.load(nav.inds[path], nav.poss[path], nav.height, nav.names[path])
|
||||
|
||||
nav.dirs = append(nav.dirs, dir)
|
||||
|
||||
err := os.Chdir(path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("open: %s", err)
|
||||
}
|
||||
} else {
|
||||
f, err := os.Create(gSelectionPath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("open: %s", err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
if len(nav.marks) != 0 {
|
||||
marks := nav.currMarks()
|
||||
path = strings.Join(marks, "\n")
|
||||
}
|
||||
|
||||
_, err = f.WriteString(path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("open: %s", err)
|
||||
}
|
||||
|
||||
gExitFlag = true
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user