on main help sign in
fix(bangmode): sync bang mode with external editor
d20e29aChristian Rocha
internal/ui/model/ui.go+11−2
@@ -966,6 +966,7 @@ func (m *UI) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
966 prevHeight := m.textarea.Height()
966 prevHeight := m.textarea.Height()
967 m.textarea.SetValue(msg.Text)
967 m.textarea.SetValue(msg.Text)
968 m.textarea.MoveToEnd()
968 m.textarea.MoveToEnd()
969+ m.syncBangModeFromTextarea()
969 cmds = append(cmds, m.updateTextareaWithPrevHeight(msg, prevHeight))
970 cmds = append(cmds, m.updateTextareaWithPrevHeight(msg, prevHeight))
970 case shellStreamMsg:
971 case shellStreamMsg:
971 if item := m.chat.MessageItem(msg.PendingID); item != nil {
972 if item := m.chat.MessageItem(msg.PendingID); item != nil {
@@ -1557,7 +1558,11 @@ func (m *UI) handleDialogMsg(msg tea.Msg) tea.Cmd {
1557 cmds = append(cmds, util.ReportWarn("Agent is working, please wait..."))
1558 cmds = append(cmds, util.ReportWarn("Agent is working, please wait..."))
1558 break
1559 break
1559 }
1560 }
1561+ editorValue := m.textarea.Value()
1562+ if m.bangMode {
1563+ editorValue = "!" + editorValue
1564+ }
1560− cmds = append(cmds, m.openEditor(m.textarea.Value()))
1565+ cmds = append(cmds, m.openEditor(editorValue))
1561 m.dialog.CloseDialog(dialog.CommandsID)
1566 m.dialog.CloseDialog(dialog.CommandsID)
1562 case dialog.ActionToggleCompactMode:
1567 case dialog.ActionToggleCompactMode:
1563 cmds = append(cmds, m.toggleCompactMode())
1568 cmds = append(cmds, m.toggleCompactMode())
@@ -2117,7 +2122,11 @@ func (m *UI) handleKeyPressMsg(msg tea.KeyPressMsg) tea.Cmd {
2117 cmds = append(cmds, util.ReportWarn("Agent is working, please wait..."))
2122 cmds = append(cmds, util.ReportWarn("Agent is working, please wait..."))
2118 break
2123 break
2119 }
2124 }
2125+ editorValue := m.textarea.Value()
2126+ if m.bangMode {
2127+ editorValue = "!" + editorValue
2128+ }
2120− cmds = append(cmds, m.openEditor(m.textarea.Value()))
2129+ cmds = append(cmds, m.openEditor(editorValue))
2121 case key.Matches(msg, m.keyMap.Editor.Newline):
2130 case key.Matches(msg, m.keyMap.Editor.Newline):
2122 prevHeight := m.textarea.Height()
2131 prevHeight := m.textarea.Height()
2123 m.textarea.InsertRune('\n')
2132 m.textarea.InsertRune('\n')