diff options
Diffstat (limited to 'actions.go')
| -rw-r--r-- | actions.go | 58 |
1 files changed, 20 insertions, 38 deletions
@@ -11,7 +11,6 @@ import ( "path/filepath" "strconv" "strings" - "sync" "syscall" "tildegit.org/tjp/sliderule" @@ -87,7 +86,7 @@ func Reload(state *BrowserState, conf *Config) error { return err } - return Print(state) + return print(state) } func back(state *BrowserState) error { @@ -104,8 +103,7 @@ func Back(state *BrowserState) error { return err } - _, _ = fmt.Fprintf(os.Stdout, "Back: %s\n", state.Url.String()) - return Print(state) + return print(state) } func Forward(state *BrowserState) error { @@ -115,9 +113,7 @@ func Forward(state *BrowserState) error { state.History = state.Forward state.Modal = nil - _, _ = fmt.Fprintf(os.Stdout, "Forward: %s\n", state.Url.String()) - - return Print(state) + return print(state) } func Next(state *BrowserState, conf *Config) error { @@ -136,8 +132,6 @@ func Next(state *BrowserState, conf *Config) error { u := state.Url.ResolveReference(state.Links[index].Target) - _, _ = fmt.Fprintf(os.Stdout, "Next: %s\n", u.String()) - return Navigate(state, u, index, conf) } @@ -157,8 +151,6 @@ func Previous(state *BrowserState, conf *Config) error { u := state.Url.ResolveReference(state.Links[index].Target) - _, _ = fmt.Fprintf(os.Stdout, "Previous: %s\n", u.String()) - return Navigate(state, u, index, conf) } @@ -182,8 +174,6 @@ func Root(state *BrowserState, tilde bool, conf *Config) error { u.Path = base } - _, _ = fmt.Fprintf(os.Stdout, "Root: %s\n", u.String()) - return Navigate(state, &u, -1, conf) } @@ -200,8 +190,6 @@ func Up(state *BrowserState, conf *Config) error { u.Path = u.Path[:strings.LastIndex(u.Path, "/")+1] - _, _ = fmt.Fprintf(os.Stdout, "Up: %s\n", u.String()) - return Navigate(state, &u, -1, conf) } @@ -211,8 +199,6 @@ func Go(state *BrowserState, dest string, conf *Config) error { return err } - _, _ = fmt.Fprintf(os.Stdout, "Go: %s\n", u.String()) - return Navigate(state, u, idx, conf) } @@ -288,7 +274,11 @@ func parseURL(str string, state *BrowserState, defaultScheme string) (*url.URL, return u, i, nil } -func Print(state *BrowserState) error { +func print(state *BrowserState) error { + if state.Quiet { + return nil + } + if state.Body == nil && state.Modal == nil { return ErrMustBeOnAPage } @@ -300,6 +290,13 @@ func Print(state *BrowserState) error { return err } +func Print(state *BrowserState) error { + q := state.Quiet + defer func() { state.Quiet = q }() + state.Quiet = false + return print(state) +} + func Links(state *BrowserState, conf *Config) error { if state.Links == nil { return ErrMustBeOnAPage @@ -389,8 +386,8 @@ func TourCmd(state *BrowserState, args []string, conf *Config) error { return TourAdd(state, conf, args[1:]) case "show": return TourShow(state) - case "set": - return TourSet(state, args[1]) + case "select": + return TourSelect(state, args[1]) case "next": return TourNext(state, conf) case "previous": @@ -419,23 +416,8 @@ func Pipe(state *BrowserState, cmdStr string) error { cmd := exec.Command(sh, "-c", cmdStr) cmd.Stdin = bytes.NewBuffer(state.Body) - r, w := io.Pipe() - cmd.Stdout = w - cmd.Stderr = w - - cmd.Start() - - wg := &sync.WaitGroup{} - wg.Add(1) - var copyErr error - go func() { - defer wg.Done() - _, copyErr = io.Copy(os.Stdout, r) - }() - - waitErr := cmd.Wait() - _ = w.Close() - wg.Wait() + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr - return errors.Join(waitErr, copyErr) + return cmd.Run() } |
