diff --git a/internal/action/command.go b/internal/action/command.go index 724a8d69..3a445caa 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -807,6 +807,11 @@ func (h *BufPane) ReplaceAllCmd(args []string) { func (h *BufPane) TermCmd(args []string) { ps := h.tab.Panes + if !TermEmuSupported { + InfoBar.Error("Terminal emulator not supported on this system") + return + } + if len(args) == 0 { sh := os.Getenv("SHELL") if sh == "" { @@ -830,7 +835,12 @@ func (h *BufPane) TermCmd(args []string) { } v := h.GetView() - MainTab().Panes[i] = NewTermPane(v.X, v.Y, v.Width, v.Height, t, id, MainTab()) + tp, err := NewTermPane(v.X, v.Y, v.Width, v.Height, t, id, MainTab()) + if err != nil { + InfoBar.Error(err) + return + } + MainTab().Panes[i] = tp MainTab().SetActive(i) } diff --git a/internal/action/terminal_supported.go b/internal/action/terminal_supported.go index 4df86115..cb5cc3dc 100644 --- a/internal/action/terminal_supported.go +++ b/internal/action/terminal_supported.go @@ -30,7 +30,12 @@ func RunTermEmulator(h *BufPane, input string, wait bool, getOutput bool, callba id := MainTab().Panes[0].ID() v := h.GetView() - MainTab().Panes[0] = NewTermPane(v.X, v.Y, v.Width, v.Height, t, id, MainTab()) + + tp, err := NewTermPane(v.X, v.Y, v.Width, v.Height, t, id, MainTab()) + if err != nil { + return err + } + MainTab().Panes[0] = tp MainTab().SetActive(0) return nil diff --git a/internal/action/termpane.go b/internal/action/termpane.go index 540b2315..7fc0b8d1 100644 --- a/internal/action/termpane.go +++ b/internal/action/termpane.go @@ -1,6 +1,7 @@ package action import ( + "errors" "runtime" "github.com/zyedidia/clipboard" @@ -20,14 +21,18 @@ type TermPane struct { tab *Tab } -func NewTermPane(x, y, w, h int, t *shell.Terminal, id uint64, tab *Tab) *TermPane { +func NewTermPane(x, y, w, h int, t *shell.Terminal, id uint64, tab *Tab) (*TermPane, error) { + if !TermEmuSupported { + return nil, errors.New("Terminal emulator is not supported on this system") + } + th := new(TermPane) th.Terminal = t th.id = id th.mouseReleased = true th.Window = display.NewTermWindow(x, y, w, h, t) th.tab = tab - return th + return th, nil } func (t *TermPane) ID() uint64 {