From 993cc3dce3d5e5523b316ecb456c675aed247d67 Mon Sep 17 00:00:00 2001 From: Jorge Morante Date: Tue, 28 Aug 2018 11:11:31 +0200 Subject: [PATCH] don't break tmux last-pane ( fixes #48 ) --- scripts/fingers.sh | 22 ++++++++++++++++------ scripts/tmux-fingers.sh | 6 ++++-- scripts/utils.sh | 8 ++++++++ 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/scripts/fingers.sh b/scripts/fingers.sh index 0fc85b3..58fc946 100755 --- a/scripts/fingers.sh +++ b/scripts/fingers.sh @@ -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 diff --git a/scripts/tmux-fingers.sh b/scripts/tmux-fingers.sh index f3523cb..1860084 100755 --- a/scripts/tmux-fingers.sh +++ b/scripts/tmux-fingers.sh @@ -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") diff --git a/scripts/utils.sh b/scripts/utils.sh index 4731030..1e4cc49 100755 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -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() {