mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-27 05:13:10 +00:00
c155acd004
This test does "isolated-tmux send-keys Escape" to exit copy mode. When EDITOR contains "vi", tmux will use Vi keybindings where Escape does something else ("q" would exit copy mode). Tests want to have predictable behavior so let's declare the default emacs key bindings unconditionally. Fixes #10812
54 lines
1.9 KiB
Fish
54 lines
1.9 KiB
Fish
function isolated-tmux-start
|
|
set -l tmpdir (mktemp -d)
|
|
cd $tmpdir
|
|
|
|
begin
|
|
echo 'set -g mode-keys emacs'
|
|
# macOS lacks the tmux-256color terminfo, use screen-256color instead.
|
|
if test (uname) = Darwin
|
|
echo 'set -g default-terminal "screen-256color"'
|
|
end
|
|
end >./.tmux.conf
|
|
|
|
function isolated-tmux --inherit-variable tmpdir
|
|
# tmux can't handle session sockets in paths that are too long, and macOS has a very long
|
|
# $TMPDIR, so use a relative path - except macOS doesn't have `realpath --relative-to`...
|
|
# Luckily, we don't need to call tmux from other directories, so just make sure no one
|
|
# does by accident.
|
|
if test $PWD != $tmpdir
|
|
echo "error: isolated-tmux must always be run from the same directory." >&2
|
|
return 1
|
|
end
|
|
tmux -S .tmux-socket -f .tmux.conf $argv
|
|
end
|
|
|
|
function isolated-tmux-cleanup --on-event fish_exit --inherit-variable tmpdir
|
|
isolated-tmux kill-server
|
|
rm -r $tmpdir
|
|
end
|
|
|
|
function tmux-sleep
|
|
set -q CI && sleep 1
|
|
or sleep 0.3
|
|
end
|
|
|
|
set -l fish (status fish-path)
|
|
isolated-tmux new-session -x 80 -y 10 -d $fish -C '
|
|
# This is similar to "tests/interactive.config".
|
|
function fish_greeting; end
|
|
function fish_prompt; printf "prompt $status_generation> "; end
|
|
# No autosuggestion from older history.
|
|
set fish_history ""
|
|
' $isolated_tmux_fish_extra_args
|
|
# Set the correct permissions for the newly created socket to allow future connections.
|
|
# This is required at least under WSL or else each invocation will return a permissions error.
|
|
chmod 777 .tmux-socket
|
|
|
|
# Loop a bit, until we get an initial prompt.
|
|
for i in (seq 25)
|
|
if string match -q '*prompt*' -- (isolated-tmux capture-pane -p)
|
|
break
|
|
end
|
|
sleep .2
|
|
end
|
|
end
|