diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2023-06-10 23:11:05 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2023-06-10 23:11:05 +0900 |
commit | e627ca6bd7fa40ef3f9077aa49f7c9019b474997 (patch) | |
tree | ee0b60112991927caa2364863362aba2f5eee663 /src/terminal.go | |
parent | c97172bdd477725c35034526e35a518a61df7e58 (diff) |
Add --info=inline-right
Close #3322
Diffstat (limited to 'src/terminal.go')
-rw-r--r-- | src/terminal.go | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/terminal.go b/src/terminal.go index b80fc303..08ea253b 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -1464,9 +1464,7 @@ func (t *Terminal) trimMessage(message string, maxWidth int) string { func (t *Terminal) printInfo() { pos := 0 line := t.promptLine() - switch t.infoStyle { - case infoDefault: - t.move(line+1, 0, t.separatorLen == 0) + printSpinner := func() { if t.reading { duration := int64(spinnerDuration) idx := (time.Now().UnixNano() % (duration * int64(len(t.spinner)))) / duration @@ -1474,8 +1472,16 @@ func (t *Terminal) printInfo() { } else { t.window.Print(" ") // Clear spinner } + } + switch t.infoStyle { + case infoDefault: + t.move(line+1, 0, t.separatorLen == 0) + printSpinner() t.move(line+1, 2, false) pos = 2 + case infoInlineRight: + pos = t.promptLen + t.queryLen[0] + t.queryLen[1] + 1 + t.move(line, pos, true) case infoInline: pos = t.promptLen + t.queryLen[0] + t.queryLen[1] + 1 str := t.infoSep @@ -1523,6 +1529,16 @@ func (t *Terminal) printInfo() { if t.failed != nil && t.count == 0 { output = fmt.Sprintf("[Command failed: %s]", *t.failed) } + if t.infoStyle == infoInlineRight { + pos = util.Max(pos, t.window.Width()-util.StringWidth(output)-3) + if pos >= t.window.Width() { + return + } + t.move(line, pos, false) + printSpinner() + t.window.Print(" ") + pos += 2 + } maxWidth := t.window.Width() - pos output = t.trimMessage(output, maxWidth) t.window.CPrint(tui.ColInfo, output) |