main.go 934 B

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