diff options
| author | tjp <tjp@ctrl-c.club> | 2024-01-03 08:29:40 -0700 |
|---|---|---|
| committer | tjp <tjp@ctrl-c.club> | 2024-01-03 08:29:40 -0700 |
| commit | 6c9558c0d2201d933b1d396febeb6e70ceaad058 (patch) | |
| tree | 565b8b048fc3e63b6c2eb6892a6f356f0c3c15aa /main.go | |
| parent | 4b3dd896fb0c157e0d727f39ccb6d940a75d1cce (diff) | |
working basic navigation and marks
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) } |
