1
0

main.go 822 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "moose/internal/editor"
  6. "github.com/gdamore/tcell/v3"
  7. )
  8. func main() {
  9. s, err := tcell.NewScreen()
  10. if err != nil {
  11. fmt.Println("moose: error: %v", err)
  12. os.Exit(1)
  13. }
  14. if err := s.Init(); err != nil {
  15. fmt.Println("moose: error: %v", err)
  16. os.Exit(1)
  17. }
  18. style := tcell.StyleDefault.Background(tcell.ColorDefault).Foreground(tcell.ColorDefault)
  19. s.SetStyle(style)
  20. m := editor.NewModel(s, style)
  21. s.EnableMouse()
  22. s.Clear()
  23. quit := func() {
  24. maybePanic := recover()
  25. s.Fini()
  26. if maybePanic != nil {
  27. panic(maybePanic)
  28. }
  29. }
  30. defer quit()
  31. for {
  32. s.Clear()
  33. if m.ShouldQuit {
  34. return
  35. }
  36. ev := <-s.EventQ()
  37. switch ev := ev.(type) {
  38. case *tcell.EventResize:
  39. s.Sync()
  40. case *tcell.EventKey:
  41. m.HandleKeyInput(ev)
  42. }
  43. m.Render()
  44. s.Show()
  45. }
  46. }