1
0

main.go 911 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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.Printf("moose: error: %v", err)
  12. os.Exit(1)
  13. }
  14. if err := s.Init(); err != nil {
  15. fmt.Printf("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.DisablePaste()
  23. s.Clear()
  24. quit := func() {
  25. maybePanic := recover()
  26. s.Fini()
  27. if maybePanic != nil {
  28. panic(maybePanic)
  29. }
  30. }
  31. defer quit()
  32. for {
  33. s.Clear()
  34. if m.ShouldQuit {
  35. return
  36. }
  37. ev := <-s.EventQ()
  38. switch ev := ev.(type) {
  39. case *tcell.EventResize:
  40. s.Sync()
  41. case *tcell.EventClipboard:
  42. m.BM.Current().Paste(string(ev.Data()))
  43. case *tcell.EventKey:
  44. m.HandleKeyInput(ev)
  45. }
  46. m.Render()
  47. s.Show()
  48. }
  49. }