summaryrefslogtreecommitdiffstats
path: root/src/terminal.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2023-06-10 23:11:05 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2023-06-10 23:11:05 +0900
commite627ca6bd7fa40ef3f9077aa49f7c9019b474997 (patch)
treeee0b60112991927caa2364863362aba2f5eee663 /src/terminal.go
parentc97172bdd477725c35034526e35a518a61df7e58 (diff)
Add --info=inline-right
Close #3322
Diffstat (limited to 'src/terminal.go')
-rw-r--r--src/terminal.go22
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)