@@ -9,7 +9,6 @@ import (
11 "path/filepath"
11 "path/filepath"
@@ -39,6 +38,7 @@ import (
39 "github.com/charmbracelet/crush/internal/version"
38 "github.com/charmbracelet/crush/internal/version"
40 uv "github.com/charmbracelet/ultraviolet"
39 uv "github.com/charmbracelet/ultraviolet"
41 "github.com/charmbracelet/ultraviolet/screen"
40 "github.com/charmbracelet/ultraviolet/screen"
41+ "github.com/charmbracelet/x/editor"
44// Max file size set to 5M.
44// Max file size set to 5M.
@@ -1562,16 +1562,6 @@ type layout struct {
1564func (m *UI) openEditor(value string) tea.Cmd {
1564func (m *UI) openEditor(value string) tea.Cmd {
1565− editor := os.Getenv("EDITOR")
1567− // Use platform-appropriate default editor
1568− if runtime.GOOS == "windows" {
1575 tmpfile, err := os.CreateTemp("", "msg_*.md")
1565 tmpfile, err := os.CreateTemp("", "msg_*.md")
1576 if err != nil {
1566 if err != nil {
1577 return uiutil.ReportError(err)
1567 return uiutil.ReportError(err)
@@ -1580,8 +1570,18 @@ func (m *UI) openEditor(value string) tea.Cmd {
1580 if _, err := tmpfile.WriteString(value); err != nil {
1570 if _, err := tmpfile.WriteString(value); err != nil {
1581 return uiutil.ReportError(err)
1571 return uiutil.ReportError(err)
1573+ cmd, err := editor.Command(
1583− cmdStr := editor + " " + tmpfile.Name()
1575+ tmpfile.Name(),
1584− return uiutil.ExecShell(context.TODO(), cmdStr, func(err error) tea.Msg {
1576+ editor.AtPosition(
1577+ m.textarea.Line()+1,
1578+ m.textarea.Column()+1,
1582+ return uiutil.ReportError(err)
1584+ return tea.ExecProcess(cmd, func(err error) tea.Msg {
1585 if err != nil {
1585 if err != nil {
1586 return uiutil.ReportError(err)
1586 return uiutil.ReportError(err)