1
0

model.go 871 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package editor
  2. import (
  3. "moose/internal/buffer"
  4. "github.com/gdamore/tcell/v3"
  5. )
  6. type Model struct {
  7. Screen tcell.Screen
  8. Style tcell.Style
  9. Mode Mode
  10. BM buffer.BufferManager
  11. AM ActionManager
  12. ShouldQuit bool
  13. }
  14. func NewModel(screen tcell.Screen, style tcell.Style) Model {
  15. model := Model{
  16. Screen: screen,
  17. Style: style,
  18. Mode: ModeNormal,
  19. BM: buffer.BufferManager{
  20. Buffers: []buffer.Buffer{buffer.NewBuffer()},
  21. CurrentIdx: 0,
  22. PaletteBuffer: buffer.NewBuffer(),
  23. },
  24. AM: DefaultActionManager(),
  25. ShouldQuit: false,
  26. }
  27. return model
  28. }
  29. func (m *Model) CurrentActionSet() []Action {
  30. switch m.Mode {
  31. case ModeNormal: return m.AM.Normal
  32. case ModeInsert: return m.AM.Insert
  33. case ModePalette: return m.AM.Palette
  34. }
  35. return nil
  36. }
  37. func (m *Model) Quit() {
  38. m.ShouldQuit = true
  39. }