EditText launches the editor with initial content and returns the edited text
(initialContent string)
| 577 | |
| 578 | // EditText launches the editor with initial content and returns the edited text |
| 579 | func (e *Editor) EditText(initialContent string) (string, bool, error) { |
| 580 | e.result = initialContent |
| 581 | e.saved = false |
| 582 | |
| 583 | e.editor = tview.NewTextArea(). |
| 584 | SetText(initialContent, false). |
| 585 | SetWrap(false) |
| 586 | |
| 587 | e.editor.SetBorder(true). |
| 588 | SetTitleAlign(tview.AlignCenter) |
| 589 | |
| 590 | e.updateTitle() |
| 591 | |
| 592 | e.editor.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { |
| 593 | // Handle global commands first (available in all modes) |
| 594 | switch { |
| 595 | case event.Key() == tcell.KeyCtrlS: |
| 596 | e.result = e.editor.GetText() |
| 597 | e.saved = true |
| 598 | e.app.Stop() |
| 599 | return nil |
| 600 | case event.Key() == tcell.KeyCtrlQ: |
| 601 | e.app.Stop() |
| 602 | return nil |
| 603 | case event.Rune() == 'h' && event.Modifiers()&tcell.ModAlt != 0: |
| 604 | e.pages.SwitchToPage("help") |
| 605 | return nil |
| 606 | case event.Key() == tcell.KeyCtrlUnderscore: |
| 607 | e.pages.SwitchToPage("help") |
| 608 | return nil |
| 609 | case event.Rune() == 'v' && event.Modifiers()&tcell.ModAlt != 0: |
| 610 | // Toggle vim mode |
| 611 | e.toggleVimMode() |
| 612 | return nil |
| 613 | } |
| 614 | |
| 615 | // Handle vim keybindings if enabled |
| 616 | if e.useVim { |
| 617 | return e.handleVimInput(event) |
| 618 | } |
| 619 | |
| 620 | return event |
| 621 | }) |
| 622 | |
| 623 | // Create footer with shortcuts |
| 624 | e.footer = tview.NewTextView(). |
| 625 | SetDynamicColors(true). |
| 626 | SetTextAlign(tview.AlignCenter) |
| 627 | |
| 628 | e.updateFooter() |
| 629 | |
| 630 | // Create layout with editor and footer |
| 631 | grid := tview.NewGrid(). |
| 632 | SetRows(0, 1). |
| 633 | AddItem(e.editor, 0, 0, 1, 1, 0, 0, true). |
| 634 | AddItem(e.footer, 1, 0, 1, 1, 0, 0, false) |
| 635 | |
| 636 | // Create help pages |
no test coverage detected