summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/internal/util
diff options
context:
space:
mode:
Diffstat (limited to 'packages/tui/internal/util')
-rw-r--r--packages/tui/internal/util/util.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/packages/tui/internal/util/util.go b/packages/tui/internal/util/util.go
index fdefb2901..b49d2e292 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 ""
+}