|
|
|
@ -308,6 +308,7 @@ const (
|
|
|
|
|
actToggleSort
|
|
|
|
|
actTogglePreview
|
|
|
|
|
actTogglePreviewWrap
|
|
|
|
|
actTransformQuery
|
|
|
|
|
actPreview
|
|
|
|
|
actChangePreview
|
|
|
|
|
actChangePreviewWindow
|
|
|
|
@ -2014,10 +2015,11 @@ func (t *Terminal) redraw(clear bool) {
|
|
|
|
|
t.printAll()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (t *Terminal) executeCommand(template string, forcePlus bool, background bool) {
|
|
|
|
|
func (t *Terminal) executeCommand(template string, forcePlus bool, background bool, captureFirstLine bool) string {
|
|
|
|
|
line := ""
|
|
|
|
|
valid, list := t.buildPlusList(template, forcePlus)
|
|
|
|
|
if !valid {
|
|
|
|
|
return
|
|
|
|
|
return line
|
|
|
|
|
}
|
|
|
|
|
command := t.replacePlaceholder(template, forcePlus, string(t.input), list)
|
|
|
|
|
cmd := util.ExecCommand(command, false)
|
|
|
|
@ -2033,11 +2035,21 @@ func (t *Terminal) executeCommand(template string, forcePlus bool, background bo
|
|
|
|
|
t.refresh()
|
|
|
|
|
} else {
|
|
|
|
|
t.tui.Pause(false)
|
|
|
|
|
cmd.Run()
|
|
|
|
|
if captureFirstLine {
|
|
|
|
|
out, _ := cmd.StdoutPipe()
|
|
|
|
|
reader := bufio.NewReader(out)
|
|
|
|
|
cmd.Start()
|
|
|
|
|
line, _ = reader.ReadString('\n')
|
|
|
|
|
line = strings.TrimRight(line, "\r\n")
|
|
|
|
|
cmd.Wait()
|
|
|
|
|
} else {
|
|
|
|
|
cmd.Run()
|
|
|
|
|
}
|
|
|
|
|
t.tui.Resume(false, false)
|
|
|
|
|
}
|
|
|
|
|
t.executing.Set(false)
|
|
|
|
|
cleanTemporaryFiles()
|
|
|
|
|
return line
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (t *Terminal) hasPreviewer() bool {
|
|
|
|
@ -2610,9 +2622,9 @@ func (t *Terminal) Loop() {
|
|
|
|
|
switch a.t {
|
|
|
|
|
case actIgnore:
|
|
|
|
|
case actExecute, actExecuteSilent:
|
|
|
|
|
t.executeCommand(a.a, false, a.t == actExecuteSilent)
|
|
|
|
|
t.executeCommand(a.a, false, a.t == actExecuteSilent, false)
|
|
|
|
|
case actExecuteMulti:
|
|
|
|
|
t.executeCommand(a.a, true, false)
|
|
|
|
|
t.executeCommand(a.a, true, false, false)
|
|
|
|
|
case actInvalid:
|
|
|
|
|
t.mutex.Unlock()
|
|
|
|
|
return false
|
|
|
|
@ -2635,6 +2647,10 @@ func (t *Terminal) Loop() {
|
|
|
|
|
t.previewed.version = 0
|
|
|
|
|
req(reqPreviewRefresh)
|
|
|
|
|
}
|
|
|
|
|
case actTransformQuery:
|
|
|
|
|
query := t.executeCommand(a.a, false, true, true)
|
|
|
|
|
t.input = []rune(query)
|
|
|
|
|
t.cx = len(t.input)
|
|
|
|
|
case actToggleSort:
|
|
|
|
|
t.sort = !t.sort
|
|
|
|
|
changed = true
|
|
|
|
|