diff --git a/src/terminal.go b/src/terminal.go index 8f8b800a..1d89d235 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -2485,6 +2485,10 @@ func (t *Terminal) printInfoImpl() { outputPrinter, outputLen = t.ansiLabelPrinter(output, &tui.ColInfo, false) } + shiftLen := t.queryLen[0] + t.queryLen[1] + 1 + if shiftLen == 1 && len(t.ghost) > 0 { + shiftLen = util.StringWidth(t.ghost) + } switch t.infoStyle { case infoDefault: if !move(line+1, 0, t.separatorLen == 0) { @@ -2498,9 +2502,9 @@ func (t *Terminal) printInfoImpl() { return } case infoInlineRight: - pos = t.promptLen + t.queryLen[0] + t.queryLen[1] + 1 + pos = t.promptLen + shiftLen case infoInline: - pos = t.promptLen + t.queryLen[0] + t.queryLen[1] + 1 + pos = t.promptLen + shiftLen printInfoPrefix() } diff --git a/test/test_core.rb b/test/test_core.rb index 882d68c5..32fbd2cf 100644 --- a/test/test_core.rb +++ b/test/test_core.rb @@ -1831,4 +1831,19 @@ class TestCore < TestInteractive assert_includes lines, 'X Type in query ...' end end + + def test_ghost_inline + tmux.send_keys %(seq 100 | #{FZF} --info 'inline: Y' --no-separator --prompt 'X ' --ghost 'Type in query ...'), :Enter + tmux.until do |lines| + assert_includes lines, 'X Type in query ... Y100/100' + end + tmux.send_keys '100' + tmux.until do |lines| + assert_includes lines, 'X 100 Y1/100' + end + tmux.send_keys 'C-u' + tmux.until do |lines| + assert_includes lines, 'X Type in query ... Y100/100' + end + end end