mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-12-20 06:13:47 +08:00
5496247344
For multi-line prompts, we start each leading line with a clr_eol. Immediately before printing these prompt lines we emit the OSC 133 prompt start marker. Some terminals such as tmux interpret make clr_eol delete such markers, hence prompt navigation is broken. Fix this by printing the marker only after clr_eol. The scenario where this triggers is quite odd. I haven't looked into why the problem doesn't exist if I remove the recursive repaint request. See https://github.com/tmux/tmux/issues/4183 Closes #10776
35 lines
737 B
Fish
35 lines
737 B
Fish
#RUN: %fish %s
|
|
#REQUIRES: command -v tmux
|
|
|
|
isolated-tmux-start
|
|
|
|
isolated-tmux send-keys '
|
|
function fish_prompt
|
|
printf "prompt-line-1\\nprompt-line-2> "
|
|
commandline -f repaint
|
|
end
|
|
' Enter
|
|
isolated-tmux send-keys C-l \
|
|
': 1' Enter \
|
|
': 3' Enter \
|
|
': 5' Enter
|
|
tmux-sleep
|
|
|
|
# Screen looks like
|
|
|
|
# [y=0] prompt-line-1
|
|
# [y=1] prompt-line-2> : 1
|
|
# [y=2] prompt-line-1
|
|
# [y=3] prompt-line-2> : 3
|
|
# [y=4] prompt-line-1
|
|
# [y=5] prompt-line-2> : 5
|
|
# [y=6] prompt-line-1
|
|
# [y=7] prompt-line-2>
|
|
|
|
isolated-tmux copy-mode
|
|
isolated-tmux send-keys -X previous-prompt
|
|
isolated-tmux send-keys -X previous-prompt
|
|
tmux-sleep
|
|
isolated-tmux display-message -p '#{copy_cursor_y} #{copy_cursor_line}'
|
|
# CHECK: 4 prompt-line-1
|