summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authortjp <tjp@ctrl-c.club>2024-01-03 08:29:40 -0700
committertjp <tjp@ctrl-c.club>2024-01-03 08:29:40 -0700
commit6c9558c0d2201d933b1d396febeb6e70ceaad058 (patch)
tree565b8b048fc3e63b6c2eb6892a6f356f0c3c15aa /main.go
parent4b3dd896fb0c157e0d727f39ccb6d940a75d1cce (diff)
working basic navigation and marks
Diffstat (limited to 'main.go')
-rw-r--r--main.go51
1 files changed, 51 insertions, 0 deletions
diff --git a/main.go b/main.go
index da29a2c..c1a833b 100644
--- a/main.go
+++ b/main.go
@@ -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)
}