diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 51 |
1 files changed, 51 insertions, 0 deletions
@@ -1,4 +1,55 @@ package main +import ( + "fmt" + "io" + "log" + "os" + + "github.com/chzyer/readline" +) + func main() { + conf, err := getConfig() + if err != nil { + log.Fatal(err) + } + + state := NewBrowserState() + + rl, err := readline.New(Prompt) + if err != nil { + log.Fatal(err) + } + + marks, err := getMarks() + if err != nil { + log.Fatal(err) + } + state.Marks = marks + + rl.SetVimMode(true) + state.Readline = rl + + for { + 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) } |
