diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index da77b42f..69fa7bdb 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -1158,9 +1158,9 @@ func (a Model) executeCommand(command commands.Command) (tea.Model, tea.Cmd) { // status.Warn("Agent is working, please wait...") return a, nil } - editor := os.Getenv("EDITOR") + editor := util.GetEditor() if editor == "" { - return a, toast.NewErrorToast("No EDITOR set, can't open editor") + return a, toast.NewErrorToast("No editor found. Set EDITOR environment variable (e.g., export EDITOR=vim)") } value := a.editor.Value() @@ -1404,10 +1404,9 @@ func (a Model) executeCommand(command commands.Command) (tea.Model, tea.Cmd) { // Format to Markdown markdownContent := formatConversationToMarkdown(messages) - // Check if EDITOR is set - editor := os.Getenv("EDITOR") + editor := util.GetEditor() if editor == "" { - return a, toast.NewErrorToast("No EDITOR set, can't open editor") + return a, toast.NewErrorToast("No editor found. Set EDITOR environment variable (e.g., export EDITOR=vim)") } // Create and write to temp file diff --git a/packages/tui/internal/util/util.go b/packages/tui/internal/util/util.go index fdefb290..b49d2e29 100644 --- a/packages/tui/internal/util/util.go +++ b/packages/tui/internal/util/util.go @@ -3,6 +3,8 @@ package util import ( "log/slog" "os" + "os/exec" + "runtime" "strings" "time" @@ -45,3 +47,25 @@ func Measure(tag string) func(...any) { slog.Debug(tag, args...) } } + +func GetEditor() string { + if editor := os.Getenv("VISUAL"); editor != "" { + return editor + } + if editor := os.Getenv("EDITOR"); editor != "" { + return editor + } + + commonEditors := []string{"vim", "nvim", "zed", "code", "cursor", "vi", "nano"} + if runtime.GOOS == "windows" { + commonEditors = []string{"vim", "nvim", "zed", "code.cmd", "cursor.cmd", "notepad.exe", "vi", "nano"} + } + + for _, editor := range commonEditors { + if _, err := exec.LookPath(editor); err == nil { + return editor + } + } + + return "" +}