1
0

model.go 805 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package tui
  2. import (
  3. "moose/internal/buffer"
  4. "github.com/gboncoffee/gopiecetable"
  5. tea "charm.land/bubbletea/v2"
  6. )
  7. type EditorModel struct {
  8. Document buffer.Document
  9. Viewport viewport.Model
  10. Width int
  11. Height int
  12. }
  13. func NewEditorModel() EditorModel {
  14. initialDoc := buffer.Document{
  15. Table: gopiecetable.FromString("Welcome to your modular multi-cursor editor.\nPress Ctrl+A to spawn cursors.\nType freely to modify text blocks."),
  16. CM: buffer.CursorManager{
  17. Cursors: []buffer.Cursor{{Offset: 0}},
  18. PrimaryIdx: 0,
  19. },
  20. }
  21. vp := viewport.New(0, 0)
  22. return EditorModel{
  23. Document: initialDoc,
  24. Viewport: vp,
  25. }
  26. }
  27. func (m EditorModel) Init() tea.Cmd {
  28. return nil
  29. }
  30. func (m EditorModel) View() tea.View {
  31. return tea.NewView(gopiecetable.String(m.Document.Table))
  32. }