main.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "moose/internal/editor"
  6. "moose/internal/extension"
  7. "github.com/gdamore/tcell/v3"
  8. "github.com/gdamore/tcell/v3/color"
  9. "golang.design/x/clipboard"
  10. "github.com/davecgh/go-spew/spew"
  11. )
  12. func main() {
  13. s, err := tcell.NewScreen()
  14. if err != nil {
  15. fmt.Printf("[moose-error] %v", err)
  16. os.Exit(1)
  17. }
  18. if err := s.Init(); err != nil {
  19. fmt.Printf("[moose-error] %v", err)
  20. os.Exit(1)
  21. }
  22. err = clipboard.Init()
  23. if err != nil {
  24. fmt.Printf("[moose-error] %v", err)
  25. os.Exit(1)
  26. }
  27. style := tcell.StyleDefault.Background(color.Reset).Foreground(color.Reset)
  28. s.SetStyle(style)
  29. m := editor.NewModel(s, style)
  30. m.AddBuffer(false)
  31. init_extensions(&m)
  32. s.EnableMouse()
  33. s.EnablePaste()
  34. s.Clear()
  35. quit := func() {
  36. maybePanic := recover()
  37. s.Fini()
  38. if maybePanic != nil {
  39. panic(maybePanic)
  40. }
  41. spew.Dump(m.LM.Workspaces)
  42. spew.Dump(m.BM)
  43. fmt.Println(m.DebugLog)
  44. }
  45. defer quit()
  46. isPasting := false
  47. for {
  48. if m.ShouldQuit {
  49. return
  50. }
  51. ev := <-s.EventQ()
  52. switch ev := ev.(type) {
  53. case *tcell.EventResize:
  54. s.Sync()
  55. case *tcell.EventPaste:
  56. if ev.Start() {
  57. isPasting = true
  58. } else if ev.End() {
  59. isPasting = false
  60. }
  61. case *tcell.EventKey:
  62. if !isPasting {
  63. m.HandleKeyInput(ev)
  64. }
  65. }
  66. s.Clear()
  67. //m.Render()
  68. m.Draw()
  69. s.Show()
  70. }
  71. }
  72. func init_extensions(m *editor.Model) {
  73. em := extension.NewExtensionManager(m)
  74. if err := em.LoadString("test", "print(ms)"); err != nil {
  75. m.Mode = editor.ModeNormal
  76. m.BM.PaletteBuffer.Clear()
  77. m.BM.PaletteBuffer.Insert("moose.error:Lua error " + err.Error())
  78. }
  79. }