1
0

action.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package editor
  2. import (
  3. "charm.land/bubbles/v2/key"
  4. tea "charm.land/bubbletea/v2"
  5. )
  6. type Action = struct {
  7. Binding key.Binding
  8. Command string
  9. HasArgs bool
  10. Callback func(*Model, []string) tea.Cmd
  11. }
  12. //type Actionmap = struct {
  13. // Left, Right, Up, Down, CursorUp, CursorDown, ClearCursors, Tab, Backtab, Newline, Delete, Quit Action
  14. //}
  15. func DefaultActions() []Action {
  16. return []Action{
  17. Action{
  18. Binding: key.NewBinding(
  19. key.WithKeys("left"),
  20. ),
  21. Command: "TODO:",
  22. HasArgs: false,
  23. Callback: func(m *Model, args []string) tea.Cmd {
  24. m.Buffer.MoveHoriz(-1)
  25. return nil
  26. },
  27. },
  28. Action{
  29. Binding: key.NewBinding(
  30. key.WithKeys("right"),
  31. ),
  32. Command: "TODO:",
  33. HasArgs: false,
  34. Callback: func(m *Model, args []string) tea.Cmd {
  35. m.Buffer.MoveHoriz(1)
  36. return nil
  37. },
  38. },
  39. Action{
  40. Binding: key.NewBinding(
  41. key.WithKeys("up"),
  42. ),
  43. Command: "TODO:",
  44. HasArgs: false,
  45. Callback: func(m *Model, args []string) tea.Cmd {
  46. m.Buffer.MoveVert(-1)
  47. return nil
  48. },
  49. },
  50. Action{
  51. Binding: key.NewBinding(
  52. key.WithKeys("down"),
  53. ),
  54. Command: "TODO:",
  55. HasArgs: false,
  56. Callback: func(m *Model, args []string) tea.Cmd {
  57. m.Buffer.MoveVert(1)
  58. return nil
  59. },
  60. },
  61. Action{
  62. Binding: key.NewBinding(
  63. key.WithKeys("shift+up"),
  64. ),
  65. Command: "TODO:",
  66. HasArgs: false,
  67. Callback: func(m *Model, args []string) tea.Cmd {
  68. m.Buffer.AddCursorVert(-1)
  69. return nil
  70. },
  71. },
  72. Action{
  73. Binding: key.NewBinding(
  74. key.WithKeys("shift+down"),
  75. ),
  76. Command: "TODO:",
  77. HasArgs: false,
  78. Callback: func(m *Model, args []string) tea.Cmd {
  79. m.Buffer.AddCursorVert(1)
  80. return nil
  81. },
  82. },
  83. Action{
  84. Binding: key.NewBinding(
  85. key.WithKeys("esc"),
  86. ),
  87. Command: "TODO:",
  88. HasArgs: false,
  89. Callback: func(m *Model, args []string) tea.Cmd {
  90. m.Buffer.ClearCursors()
  91. return nil
  92. },
  93. },
  94. Action{
  95. Binding: key.NewBinding(
  96. key.WithKeys("tab"),
  97. ),
  98. Command: "TODO:",
  99. HasArgs: false,
  100. Callback: func(m *Model, args []string) tea.Cmd {
  101. //TODO: implement m.Buffer.
  102. return nil
  103. },
  104. },
  105. Action{
  106. Binding: key.NewBinding(
  107. key.WithKeys("shift+tab"),
  108. ),
  109. Command: "TODO:",
  110. HasArgs: false,
  111. Callback: func(m *Model, args []string) tea.Cmd {
  112. // TODO: implement m.Buffer.
  113. return nil
  114. },
  115. },
  116. Action{
  117. Binding: key.NewBinding(
  118. key.WithKeys("backspace"),
  119. ),
  120. Command: "TODO:",
  121. HasArgs: false,
  122. Callback: func(m *Model, args []string) tea.Cmd {
  123. m.Buffer.Delete()
  124. return nil
  125. },
  126. },
  127. Action{
  128. Binding: key.NewBinding(
  129. key.WithKeys("enter"),
  130. ),
  131. Command: "TODO:",
  132. HasArgs: false,
  133. Callback: func(m *Model, args []string) tea.Cmd {
  134. m.Buffer.Insert('\n')
  135. return nil
  136. },
  137. },
  138. Action{
  139. Binding: key.NewBinding(
  140. key.WithKeys("ctrl+c"),
  141. ),
  142. Command: "q",
  143. HasArgs: false,
  144. Callback: func(m *Model, args []string) tea.Cmd {
  145. return tea.Quit
  146. },
  147. },
  148. }
  149. }