package main import ( "fmt" "io" "log" "os" "github.com/chzyer/readline" ) func main() { conf, err := getConfig() if err != nil { log.Fatal(err) } state := NewBrowserState() state.Quiet = conf.Quiet state.Pager = conf.Pager rl, err := readline.New(Prompt) if err != nil { log.Fatal(err) } marks, err := getMarks() if err != nil { log.Fatal(err) } state.Marks = marks tours, err := getTours() if err != nil { log.Fatal(err) } state.NamedTours = tours if conf.VimKeys { rl.SetVimMode(true) } state.Readline = rl for { rl.SetPrompt(Prompt) line, err := rl.Readline() if err == io.EOF { break } if err != nil { log.Fatal(err) } if c, err := ParseCommand(line); err != nil { writeError(err.Error()) } else if err := RunCommand(conf, c, state); err != nil { writeError(err.Error()) } } } const Prompt = "\x1b[38;5;39mX-1\x1b[0m> " func writeError(msg string) { fmt.Fprintf(os.Stdout, "\x1b[31m%s\x1b[0m\n", msg) }