main.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "moose/internal/editor"
  6. //"unicode/utf8"
  7. "strings"
  8. "github.com/gdamore/tcell/v3"
  9. //tea "charm.land/bubbletea/v2"
  10. )
  11. func main() {
  12. m := editor.NewModel()
  13. s, err := tcell.NewScreen()
  14. if err != nil {
  15. fmt.Println("moose: error: %v", err)
  16. os.Exit(1)
  17. }
  18. if err := s.Init(); err != nil {
  19. fmt.Println("moose: error: %v", err)
  20. os.Exit(1)
  21. }
  22. defStyle := tcell.StyleDefault.Background(tcell.ColorDefault).Foreground(tcell.ColorDefault)
  23. s.SetStyle(defStyle)
  24. s.EnableMouse()
  25. s.Clear()
  26. quit := func() {
  27. maybePanic := recover()
  28. s.Fini()
  29. if maybePanic != nil {
  30. panic(maybePanic)
  31. }
  32. }
  33. defer quit()
  34. for {
  35. s.Clear()
  36. if m.ShouldQuit {
  37. s.PutStrStyled(0, 2, "tried to quit", defStyle)
  38. return
  39. }
  40. ev := <-s.EventQ()
  41. switch ev := ev.(type) {
  42. case *tcell.EventResize:
  43. s.Sync()
  44. case *tcell.EventKey:
  45. for i := range m.Actions {
  46. action := m.Actions[i]
  47. if strings.ToLower(ev.Name()) == strings.ToLower(action.Binding) {
  48. s.PutStrStyled(0, 1, "found match", defStyle)
  49. action.Callback(&m, []string{})
  50. break
  51. }
  52. }
  53. //if utf8.RuneCountInString(ev.Name()) == 1 {
  54. if ev.Name() != "" {
  55. for _, r := range ev.Name() {
  56. m.Buffer.Insert(r)
  57. }
  58. }
  59. s.PutStrStyled(0, 0, strings.ToLower(ev.Name()), defStyle)
  60. }
  61. s.Show()
  62. }
  63. //model := editor.NewModel()
  64. //
  65. //p := tea.NewProgram(model)
  66. //if _, err := p.Run(); err != nil {
  67. // fmt.Printf("moose: error: %v", err)
  68. // os.Exit(1)
  69. //}
  70. }