package main import ( "golang.org/x/term" "os" "timshome.page/gilo/editor" "timshome.page/gilo/terminal" ) func cleanup(oldState *term.State) { defer terminal.RawOff(oldState) // Recover from panic to allow restoring terminal state if a := recover(); a != nil { fmt.Println("RECOVER", a) } } func main() { // Go to proper raw mode, but restore canonical mode at exit oldState := terminal.RawOn() defer cleanup(oldState) e := editor.NewEditor() // If there is an argument passed, open it as a file to edit if len(os.Args) >= 2 && os.Args[1] != "" { e.Open(os.Args[1]) } e.SetStatusMessage("HELP: Ctrl-S = save | Ctrl-Q = quit | Ctrl-F = find") // The input loop for { e.RefreshScreen() if e.ProcessKeypress() == false { break } } }