don't break tmux last-pane ( fixes #48 )

This commit is contained in:
Jorge Morante 2018-08-28 11:11:31 +02:00
parent c665f68caa
commit 993cc3dce3
3 changed files with 28 additions and 8 deletions

View File

@ -13,9 +13,10 @@ tmux_yank_copy_command=$(tmux_list_vi_copy_keys | grep -E "(vi-copy|copy-mode-vi
current_pane_id=$1
fingers_pane_id=$2
fingers_window_id=$2
pane_input_temp=$4
original_rename_setting=$5
last_pane_id=$3
fingers_window_id=$4
pane_input_temp=$5
original_rename_setting=$6
BACKSPACE=$'\177'
@ -38,11 +39,20 @@ function zoom_pane() {
tmux resize-pane -Z -t "$pane_id"
}
function handle_exit() {
function revert_to_original_pane() {
tmux swap-pane -s "$current_pane_id" -t "$fingers_pane_id"
[[ $pane_was_zoomed == "1" ]] && zoom_pane "$current_pane_id"
tmux kill-window -t "$fingers_window_id"
[[ $pane_was_zoomed == "1" ]] && zoom_pane "$current_pane_id"
tmux set-window-option automatic-rename "$original_rename_setting"
if [[ ! -z "$last_pane_id" ]]; then
tmux select-pane -t "$last_pane_id"
tmux select-pane -t "$current_pane_id"
fi
}
function handle_exit() {
revert_to_original_pane
rm -rf "$pane_input_temp" "$pane_output_temp" "$match_lookup_table"
}
@ -180,7 +190,7 @@ while read -rsn1 char; do
copy_result "$result" "$input"
revert_to_original_pane "$current_pane_id" "$fingers_pane_id" "$fingers_window_id"
revert_to_original_pane
exit 0
done < /dev/tty

View File

@ -46,6 +46,7 @@ function capture_pane() {
function prompt_fingers_for_pane() {
local current_pane_id=$1
local last_pane_id=$2
local fingers_init_data=$(init_fingers_pane)
local fingers_pane_id=$(echo "$fingers_init_data" | cut -f1 -d':')
local fingers_window_id=$(echo "$fingers_init_data" | cut -f2 -d':')
@ -57,10 +58,11 @@ function prompt_fingers_for_pane() {
local original_rename_setting=$(tmux show-window-option -gv automatic-rename)
tmux set-window-option automatic-rename off
pane_exec "$fingers_pane_id" "cat $tmp_path | $CURRENT_DIR/fingers.sh \"$current_pane_id\" \"$fingers_pane_id\" \"$fingers_window_id\" $tmp_path $original_rename_setting"
pane_exec "$fingers_pane_id" "cat $tmp_path | $CURRENT_DIR/fingers.sh \"$current_pane_id\" \"$fingers_pane_id\" \"$last_pane_id\" \"$fingers_window_id\" $tmp_path $original_rename_setting"
echo $fingers_pane_id
}
last_pane_id=$(tmux display -pt':.{last}' '#{pane_id}' 2>/dev/null)
current_pane_id=$(tmux list-panes -F "#{pane_id}:#{?pane_active,active,nope}" | grep active | cut -d: -f1)
fingers_pane_id=$(prompt_fingers_for_pane $current_pane_id)
fingers_pane_id=$(prompt_fingers_for_pane "$current_pane_id" "$last_pane_id")

View File

@ -70,8 +70,16 @@ function revert_to_original_pane() {
local current_pane_id=$1
local fingers_pane_id=$2
local fingers_window_id=$3
local last_pane_id=$4
local pane_was_zoomed=$5
tmux swap-pane -s "$current_pane_id" -t "$fingers_pane_id"
tmux kill-window -t "$fingers_window_id"
[[ $pane_was_zoomed == "1" ]] && zoom_pane "$current_pane_id"
if [[ ! -z "$last_pane_id" ]]; then
tmux select-pane -t "$last_pane_id"
tmux select-pane -t "$current_pane_id"
fi
}
function pane_exec() {