From ce1636265e5761d02f61dffa7a5975f8ce7000de Mon Sep 17 00:00:00 2001 From: Jean-Marc Eurin Date: Tue, 24 Oct 2023 14:00:20 -0700 Subject: [PATCH 01/12] Add a -r option to reuse the existing panes. This 'reuse' option either creates the panes the first time, or reuse the existing panes. For example: xpanes -r -B 'ssh ' -c ' {}' server client will open 2 new panes. When host reboots, you can rerun the same command and the existing panes will the reused. --- README.md | 7 +++ bin/xpanes | 126 ++++++++++++++++++++++++++++++++++------------------- 2 files changed, 89 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index d9d130d..a055a0e 100644 --- a/README.md +++ b/README.md @@ -169,6 +169,7 @@ OPTIONS: mh main-horizontal mv main-vertical -n Set the maximum number of taken for each pane. + -r Reuse the existing panes. -s Speedy mode: Run command without opening an interactive shell. -ss Speedy mode AND close a pane automatically at the same time as process exiting. -S Set a full alternative path to the server socket. @@ -326,6 +327,12 @@ When the tmux is already open and `xpanes` is executed on the existing tmux sess - In addition, it separates the window into multiple panes. - Finally, the window will be active. +You can use the -x option to create the panes in the current window. + +You can use the -r option to reuse the existing panes in the current window. It +is useful if you want to rerun commands in an existing layout previously created +by -x. + ### [Pipe mode] Inside of tmux session & Accepting standard input When `xpanes` accepts standard input (i.e, `xpanes` follows another command and pipe `|`) under **Normal mode2** , `xpanes`'s behavior is going to be the special one called "Pipe mode". diff --git a/bin/xpanes b/bin/xpanes index d3e7b11..a4a027b 100755 --- a/bin/xpanes +++ b/bin/xpanes @@ -117,6 +117,7 @@ XP_MAX_PANE_ARGS="" XP_OPT_SET_TITLE=0 XP_OPT_CHANGE_BORDER=0 XP_OPT_EXTRA=0 +XP_OPT_REUSE=0 XP_OPT_SPEEDY=0 XP_OPT_SPEEDY_AWAIT=0 XP_OPT_USE_PRESET_LAYOUT=0 @@ -199,6 +200,7 @@ OPTIONS: mh main-horizontal mv main-vertical -n Set the maximum number of taken for each pane. + -r Reuse the existing panes, or create then in the current active window. -s Speedy mode: Run command without opening an interactive shell. -ss Speedy mode AND close a pane automatically at the same time as process exiting. -S Set a full alternative path to the server socket. @@ -1571,6 +1573,21 @@ xpns_execution() { xpns_suppress_allow_rename "${_def_allow_rename-}" XP_CMD_UTILITY="$(xpns_get_joined_begin_commands "${XP_CMD_UTILITY}")" + if [[ ${XP_OPT_REUSE} -eq 1 ]]; then + _window_name="$( ${TMUX_XPANES_EXEC} display -p -F "#{window_id}")" + _pane_count="$( ${TMUX_XPANES_EXEC} list-panes | grep -c .)" + _pane_base_index=$(($(${TMUX_XPANES_EXEC} display -p -F "#{pane_index}") + 1)) + _pane_active_pane_id=$(${TMUX_XPANES_EXEC} display -p -F "#{pane_id}") + + # Reusing the panes: if there's only 1 pane, behave like -x otherwise + # make sure there are enough panes of higher index than the current one. + # This allows to run -r to create the panes and then repeatedly to reuse + # those panes. + if [[ $((${_pane_count} - ${_pane_base_index})) -lt ${#XP_ARGS[@]} ]]; then + xpns_log "error" "Not enough panes ($((${_pane_count} - 1))) after this one to run the ${#XP_ARGS[@]} commands." + exit ${XP_EINVAL} + fi + fi if [[ ${XP_OPT_EXTRA} -eq 1 ]]; then # Reuse existing window name # tmux 1.6 does not support -F option @@ -1578,7 +1595,7 @@ xpns_execution() { _pane_count="$( ${TMUX_XPANES_EXEC} list-panes | grep -c .)" _pane_base_index=$((_pane_base_index + _pane_count - 1)) _pane_active_pane_id=$(${TMUX_XPANES_EXEC} display -p -F "#{pane_id}") - else + elif [[ ${XP_OPT_REUSE} -eq 0 ]]; then _window_name=$( xpns_generate_window_name \ "${XP_EMPTY_STR}" \ @@ -1590,43 +1607,45 @@ xpns_execution() { ## -------------------- # Prepare window and panes ## -------------------- - if [[ ${XP_OPT_EXTRA} -eq 1 ]]; then - xpns_prepare_extra_panes \ - "${_window_name}" \ - "${_pane_base_index}" \ - "${XP_OPT_LOG_STORE}" \ - "${XP_OPT_SET_TITLE}" \ - "${XP_OPT_SPEEDY}" \ - "${XP_OPT_SPEEDY_AWAIT}" \ - "${XP_OPT_INTERVAL}" \ - "${XP_REPSTR}" \ - "${XP_CMD_UTILITY}" \ - "${XP_ARGS[@]}" - elif [[ ${XP_OPT_USE_PRESET_LAYOUT} -eq 1 ]]; then - xpns_prepare_preset_layout_window \ - "${_window_name}" \ - "${_pane_base_index}" \ - "${XP_OPT_LOG_STORE}" \ - "${XP_OPT_SET_TITLE}" \ - "${XP_OPT_ATTACH}" \ - "${XP_OPT_SPEEDY}" \ - "${XP_OPT_SPEEDY_AWAIT}" \ - "${XP_OPT_INTERVAL}" \ - "${XP_REPSTR}" \ - "${XP_CMD_UTILITY}" \ - "${XP_ARGS[@]}" - elif [[ ${XP_OPT_USE_PRESET_LAYOUT} -eq 0 ]]; then - xpns_prepare_window \ - "${_window_name}" \ - "${XP_OPT_LOG_STORE}" \ - "${XP_OPT_SET_TITLE}" \ - "${XP_OPT_ATTACH}" \ - "${XP_OPT_SPEEDY}" \ - "${XP_OPT_SPEEDY_AWAIT}" \ - "${XP_OPT_INTERVAL}" \ - "${XP_REPSTR}" \ - "${XP_CMD_UTILITY}" \ - "${XP_ARGS[@]}" + if [[ ${XP_OPT_REUSE} -eq 0 ]]; then + if [[ ${XP_OPT_EXTRA} -eq 1 ]]; then + xpns_prepare_extra_panes \ + "${_window_name}" \ + "${_pane_base_index}" \ + "${XP_OPT_LOG_STORE}" \ + "${XP_OPT_SET_TITLE}" \ + "${XP_OPT_SPEEDY}" \ + "${XP_OPT_SPEEDY_AWAIT}" \ + "${XP_OPT_INTERVAL}" \ + "${XP_REPSTR}" \ + "${XP_CMD_UTILITY}" \ + "${XP_ARGS[@]}" + elif [[ ${XP_OPT_USE_PRESET_LAYOUT} -eq 1 ]]; then + xpns_prepare_preset_layout_window \ + "${_window_name}" \ + "${_pane_base_index}" \ + "${XP_OPT_LOG_STORE}" \ + "${XP_OPT_SET_TITLE}" \ + "${XP_OPT_ATTACH}" \ + "${XP_OPT_SPEEDY}" \ + "${XP_OPT_SPEEDY_AWAIT}" \ + "${XP_OPT_INTERVAL}" \ + "${XP_REPSTR}" \ + "${XP_CMD_UTILITY}" \ + "${XP_ARGS[@]}" + elif [[ ${XP_OPT_USE_PRESET_LAYOUT} -eq 0 ]]; then + xpns_prepare_window \ + "${_window_name}" \ + "${XP_OPT_LOG_STORE}" \ + "${XP_OPT_SET_TITLE}" \ + "${XP_OPT_ATTACH}" \ + "${XP_OPT_SPEEDY}" \ + "${XP_OPT_SPEEDY_AWAIT}" \ + "${XP_OPT_INTERVAL}" \ + "${XP_REPSTR}" \ + "${XP_CMD_UTILITY}" \ + "${XP_ARGS[@]}" + fi fi ## With -ss option, it is possible to close all the panes as of here. @@ -1698,10 +1717,10 @@ xpns_execution() { ## With -l , panes are organized. ## As well as -x, they are re-organized. - if [[ $XP_OPT_USE_PRESET_LAYOUT -eq 1 ]] || [[ ${XP_OPT_EXTRA} -eq 1 ]]; then - xpns_organize_panes \ - "${_window_name}" \ - "${_last_args_idx}" + if [[ (${XP_OPT_USE_PRESET_LAYOUT} -eq 1 || ${XP_OPT_EXTRA} -eq 1) && ${XP_OPT_REUSE} -eq 0 ]]; then + xpns_organize_panes \ + "${_window_name}" \ + "${_last_args_idx}" fi # Enable broadcasting @@ -1723,8 +1742,8 @@ xpns_execution() { pane-border-status "${TMUX_XPANES_PANE_BORDER_STATUS}" fi - # In case of -x, this statement is skipped to keep the original window name - if [[ ${XP_OPT_EXTRA} -eq 0 ]]; then + # In case of -x or -r, this statement is skipped to keep the original window name + if [[ ${XP_OPT_EXTRA} -eq 0 ]] && [[ ${XP_OPT_REUSE} -eq 0 ]]; then # Restore original window name. ${TMUX_XPANES_EXEC} \ rename-window -t "${_window_name}" \ @@ -1987,6 +2006,7 @@ xpns_parse_options() { exit 0 ;; -x) + # If you modify those, make similar changes to -r XP_OPTIONS+=("$opt") XP_OPT_EXTRA=1 XP_OPT_USE_PRESET_LAYOUT=1 ## Layout presets must be used with -x @@ -2013,6 +2033,24 @@ xpns_parse_options() { sleep 1 fi ;; + -r) + XP_OPTIONS+=("$opt") + # Reusing the panes: if there's only 1 pane, behave like -x + # This allows to run -r to create the panes and then repeatedly to reuse + # those panes. + _pane_count="$( ${TMUX_XPANES_EXEC} list-panes | grep -c .)" + if [[ ${_pane_count} -eq 1 ]]; then + XP_OPT_EXTRA=1 + XP_OPT_USE_PRESET_LAYOUT=1 ## Layout presets must be used with -x + if ! xpns_warning_before_extra; then + exit ${XP_EINTENT} + fi + else + XP_OPT_REUSE=1 + XP_OPT_EXTRA=0 + XP_OPT_IS_SYNC=0 + fi + ;; -s) XP_OPTIONS+=("$opt") XP_OPT_SPEEDY=1 From f8cd96361273d38b7ff4117225fbb1ceb431a9b2 Mon Sep 17 00:00:00 2001 From: Jean-Marc Eurin Date: Tue, 24 Oct 2023 14:00:20 -0700 Subject: [PATCH 02/12] Add a -r option to reuse the existing panes. This 'reuse' option either creates the panes the first time, or reuse the existing panes. For example: xpanes -r -B 'ssh ' -c ' {}' server client will open 2 new panes. When the host reboots, you can rerun the same command and the existing panes will be reused. --- README.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a055a0e..c1457f5 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ OPTIONS: mh main-horizontal mv main-vertical -n Set the maximum number of taken for each pane. - -r Reuse the existing panes. + -r Create or reuse the existing panes. -s Speedy mode: Run command without opening an interactive shell. -ss Speedy mode AND close a pane automatically at the same time as process exiting. -S Set a full alternative path to the server socket. @@ -329,9 +329,14 @@ When the tmux is already open and `xpanes` is executed on the existing tmux sess You can use the -x option to create the panes in the current window. -You can use the -r option to reuse the existing panes in the current window. It -is useful if you want to rerun commands in an existing layout previously created -by -x. +You can use the -r option to create panes in the current window, or reuse the +existing ones. It is useful if you want to rerun the same xpanes command over +and over, e.g.: + +xpanes -r -B 'ssh `host`' -c '`program> {}`' server client + +will open 2 new panes. When the host reboots, you can rerun the same command +and the existing panes will be reused. ### [Pipe mode] Inside of tmux session & Accepting standard input From 54eeb418bc7c9d51988298ffb2b86b06bdc48d59 Mon Sep 17 00:00:00 2001 From: Yasuhiro Yamada Date: Sat, 6 Jan 2024 13:32:40 +0000 Subject: [PATCH 03/12] Satisfy shellcheck --- bin/xpanes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/xpanes b/bin/xpanes index a4a027b..82cd394 100755 --- a/bin/xpanes +++ b/bin/xpanes @@ -1583,8 +1583,8 @@ xpns_execution() { # make sure there are enough panes of higher index than the current one. # This allows to run -r to create the panes and then repeatedly to reuse # those panes. - if [[ $((${_pane_count} - ${_pane_base_index})) -lt ${#XP_ARGS[@]} ]]; then - xpns_log "error" "Not enough panes ($((${_pane_count} - 1))) after this one to run the ${#XP_ARGS[@]} commands." + if [[ $(( _pane_count - _pane_base_index)) -lt ${#XP_ARGS[@]} ]]; then + xpns_log "error" "Not enough panes ($((_pane_count - 1))) after this one to run the ${#XP_ARGS[@]} commands." exit ${XP_EINVAL} fi fi From 03f4ada87d67de4e0b2337333ad3920fba841457 Mon Sep 17 00:00:00 2001 From: Yasuhiro Yamada Date: Sat, 6 Jan 2024 13:34:30 +0000 Subject: [PATCH 04/12] Satisfy shfmt --- bin/xpanes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/xpanes b/bin/xpanes index 82cd394..5b5fb41 100755 --- a/bin/xpanes +++ b/bin/xpanes @@ -1583,7 +1583,7 @@ xpns_execution() { # make sure there are enough panes of higher index than the current one. # This allows to run -r to create the panes and then repeatedly to reuse # those panes. - if [[ $(( _pane_count - _pane_base_index)) -lt ${#XP_ARGS[@]} ]]; then + if [[ $((_pane_count - _pane_base_index)) -lt ${#XP_ARGS[@]} ]]; then xpns_log "error" "Not enough panes ($((_pane_count - 1))) after this one to run the ${#XP_ARGS[@]} commands." exit ${XP_EINVAL} fi From 60cd64cdf122b4d8104cc68e182b499c3ab2a716 Mon Sep 17 00:00:00 2001 From: Yasuhiro Yamada Date: Sat, 6 Jan 2024 13:50:17 +0000 Subject: [PATCH 05/12] Satisfy shfmt v3.1.0 docker run -v $PWD:/tmp -i mvdan/shfmt:v3.1.0-alpine shfmt -i 2 -ci -sr -kp -w /tmp/bin/xpanes --- bin/xpanes | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/xpanes b/bin/xpanes index 5b5fb41..93faf6e 100755 --- a/bin/xpanes +++ b/bin/xpanes @@ -1718,9 +1718,9 @@ xpns_execution() { ## With -l , panes are organized. ## As well as -x, they are re-organized. if [[ (${XP_OPT_USE_PRESET_LAYOUT} -eq 1 || ${XP_OPT_EXTRA} -eq 1) && ${XP_OPT_REUSE} -eq 0 ]]; then - xpns_organize_panes \ - "${_window_name}" \ - "${_last_args_idx}" + xpns_organize_panes \ + "${_window_name}" \ + "${_last_args_idx}" fi # Enable broadcasting From 2e9129490d2fa10e68d0c0989d72c6cabdd1951f Mon Sep 17 00:00:00 2001 From: Yasuhiro Yamada Date: Mon, 8 Jan 2024 23:04:59 +0000 Subject: [PATCH 06/12] Prevent -r with Normal mode1 If tmux session is not active, there should not panes to be reused. ``` $ ./bin/xpanes -r 1 2 3 [xpanes:error] '-r' must be used on the running tmux session. $ echo $? 1 ``` --- bin/xpanes | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bin/xpanes b/bin/xpanes index 93faf6e..812bb73 100755 --- a/bin/xpanes +++ b/bin/xpanes @@ -1440,7 +1440,11 @@ xpns_pre_execution() { local _args4args="" if [[ ${XP_OPT_EXTRA} -eq 1 ]]; then - xpns_log "error" "'-x' must be used within the running tmux session." + xpns_log "error" "'-x' must be used on the running tmux session." + exit ${XP_EINVAL} + fi + if [[ ${XP_OPT_REUSE} -eq 1 ]]; then + xpns_log "error" "'-r' must be used on the running tmux session." exit ${XP_EINVAL} fi From 980c68fcdb8902860f37f303109dc97a53fa0dc3 Mon Sep 17 00:00:00 2001 From: Yasuhiro Yamada Date: Tue, 9 Jan 2024 00:03:12 +0000 Subject: [PATCH 07/12] Tests for reuse (-r) option --- test/cases_all.sh | 80 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/test/cases_all.sh b/test/cases_all.sh index 009a86e..519c11e 100755 --- a/test/cases_all.sh +++ b/test/cases_all.sh @@ -2813,7 +2813,7 @@ test_x_option_abort() { _cmd="${EXEC} -S $_socket_file -x AAAA AAAA BBBB CCCC" eval "${_cmd}" - # Run -a option with Normal mode1 + # Run -x option with Normal mode1 assertEquals 4 $? : "In TMUX session" && { @@ -4621,6 +4621,84 @@ test_b_x_log_option () { return 0 } +# @case: 85 +# @skip: +test_r_option_error () { + local _socket_file="${SHUNIT_TMPDIR}/.xpanes-shunit" + local _cmd="${EXEC} -d -S $_socket_file -r AAA BBB CCC" + echo $'\n'" $ $_cmd"$'\n' + eval "$_cmd" + assertEquals 4 $? + close_tmux_session "$_socket_file" + return 0 +} + +# @case: 86 +# @skip: +test_r_option_same_as_x() { + local _socket_file="${SHUNIT_TMPDIR}/.xpanes-shunit" + local _cmd + : "In TMUX session" && { + _cmd="${EXEC} -S $_socket_file -r -c 'echo {}' AAA BBB CCC" + create_tmux_session "$_socket_file" + exec_tmux_session "$_socket_file" "$_cmd" + # If there is only one pane, -r acts like -x + # There must be 4 pane though. + wait_panes_separation "$_socket_file" ".*" "4" + assert_tiled_four_panes "$_socket_file" ".*" + close_tmux_session "$_socket_file" + } + return 0 +} + +# @case: 87 +# @skip: +test_x_r_option() { + local _socket_file="${SHUNIT_TMPDIR}/.xpanes-shunit" + local _tmpdir="${SHUNIT_TMPDIR}" + mkdir -p "${_tmpdir}/fin" + local _cmd + : "In TMUX session" && { + _cmd="${EXEC} -S $_socket_file -x -c 'echo {}' AAA BBB CCC" + create_tmux_session "$_socket_file" + exec_tmux_session "$_socket_file" "$_cmd" + # If there is only one pane, -r acts like -x + # There must be 4 pane though. + wait_panes_separation "$_socket_file" ".*" "4" + _cmd="${EXEC} -S $_socket_file -r -c 'echo {} > ${_tmpdir}/fin/{}' DDD EEE FFF" + exec_tmux_session "$_socket_file" "$_cmd" + wait_existing_file_number "${_tmpdir}/fin" "3" # DDD EEE FFF files should exist + close_tmux_session "$_socket_file" + rm -f "${_tmpdir}"/fin/* + rmdir "${_tmpdir}"/fin + } + return 0 +} + +# @case: 88 +# @skip: +test_x_r_option_invalid_pane_count() { + local _socket_file="${SHUNIT_TMPDIR}/.xpanes-shunit" + local _tmpdir="${SHUNIT_TMPDIR}" + mkdir -p "${_tmpdir}/fin" + local _cmd + : "In TMUX session" && { + _cmd="${EXEC} -S $_socket_file -x -c 'echo {}' AAA BBB CCC" + create_tmux_session "$_socket_file" + exec_tmux_session "$_socket_file" "$_cmd" + # If there is only one pane, -r acts like -x + # There must be 4 pane though. + wait_panes_separation "$_socket_file" ".*" "4" + _cmd="${EXEC} -S $_socket_file -r -c 'echo {}' DDD EEE FFF GGG; echo \$? > ${_tmpdir}/fin/status" + exec_tmux_session "$_socket_file" "$_cmd" + assertEquals 4 "$(<"${_tmpdir}"/fin/status)" + close_tmux_session "$_socket_file" + rm -f "${_tmpdir}"/fin/* + rmdir "${_tmpdir}"/fin + } + return 0 +} + ###:-:-:END_TESTING:-:-:### ###:-:-:INSERT_TESTING:-:-:### From 18c30ab3a6adbc4520ef2ff116aed01b1e499527 Mon Sep 17 00:00:00 2001 From: Yasuhiro Yamada Date: Tue, 9 Jan 2024 00:03:23 +0000 Subject: [PATCH 08/12] Description for test generator --- test/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/README.md b/test/README.md index dffacda..943fded 100644 --- a/test/README.md +++ b/test/README.md @@ -24,3 +24,12 @@ $ git submodule update 4. Run `bash ./update_yaml.sh` +## How to run specific test + +Execute `test_generator.sh ` and execute the generated result as a script. +For the test case 85, run like below. + +```bash +$ bash test_generator.sh 85 > test_85.sh +$ bash ./test_85.sh +``` From 988ae77af99c6519066f18ace7813e9ae5b7414a Mon Sep 17 00:00:00 2001 From: Yasuhiro Yamada Date: Tue, 9 Jan 2024 00:06:07 +0000 Subject: [PATCH 09/12] Register test cases to config.pict --- test/config.pict | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/config.pict b/test/config.pict index 1f4413d..715759d 100644 --- a/test/config.pict +++ b/test/config.pict @@ -10,7 +10,7 @@ tmux:1.8,1.9,1.9a,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,2.9a,3.0a,3.1,3.1b,3.1 ## Create test cases # cat cases_all.sh | grep '@case:' | awk '{print $NF}' | xargs | tr ' ' ',' | awk '{print "case:"$0}' -case:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84 +case:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88 ## Create exceptional conditions # cat cases_all.sh | grep -E '@skip: ?.' -B1 | awk '{print $2,$3}' | awk 'NF{print $2}' | xargs -n 2 | tr , ' ' | awk '{for (i=2;i<=NF;i++){print $1,$i}}' | awk '{print "IF[case] = "$1" THEN [tmux] <> \""$2"\";"}' From 73cfd151e152b8d1aa269615617674ec67d93396 Mon Sep 17 00:00:00 2001 From: Yasuhiro Yamada Date: Tue, 9 Jan 2024 00:08:35 +0000 Subject: [PATCH 10/12] Re-generaete test cases --- .github/workflows/test.yml | 360 ++++++++++++++++++------------------- 1 file changed, 180 insertions(+), 180 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 91accbd..974df2c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,544 +40,544 @@ jobs: ###START_INSERT### - bash: "3.2" tmux: "1.8" - cases: 12,29,30,64,72 + cases: 2,6,14,41 - bash: "3.2" tmux: "1.9" - cases: 29,31,52,56,65,68 + cases: 2,21,52,85 - bash: "3.2" tmux: "1.9a" - cases: 3,5,22,27,34,45,55,77 + cases: 4,5,6,13,20,45,79 - bash: "3.2" tmux: "2.0" - cases: 9,28,31,38,50,55,78 + cases: 13,24,29,31,33,39,41,43,45,47,56,70,76,78,80 - bash: "3.2" tmux: "2.1" - cases: 7,16,17,20,23,32,45,48,64 + cases: 23,33,44,45,50,55,61 - bash: "3.2" tmux: "2.2" - cases: 3,4,17,26,41,43,51,54,57,65,70 + cases: 10,18,24,62,81 - bash: "3.2" tmux: "2.3" - cases: 3,4,7,11,17,18,40,67 + cases: 12,13,20,36,45,60,82,85 - bash: "3.2" tmux: "2.4" - cases: 11,22,34,40,57,62,76,84 + cases: 16,20,27,36,51,66,70,81,82,86 - bash: "3.2" tmux: "2.5" - cases: 9,10,19,20,25,34,36,42,46,62,69,72,80,82 + cases: 8,14,26,44,49,72 - bash: "3.2" tmux: "2.6" - cases: 2,6,33,35,39,52,75 + cases: 10,17,21,22,48,56,59,66,77,79 - bash: "3.2" tmux: "2.7" - cases: 16,19,37,46,49,69,78,84 + cases: 1,20,29,44,58,62,64,68,74,78,81,82,87 - bash: "3.2" tmux: "2.8" - cases: 10,24,35,47,49,63,73,74,80 + cases: 5,36,40,43,47,49,59,69,71,74,84 - bash: "3.2" tmux: "2.9" - cases: 7,8,13,33,35,64,69,71,76,79,83 + cases: 1,4,7,9,15,20,21,26,32,35,38,65,72 - bash: "3.2" tmux: "2.9a" - cases: 21,23,26,32,54,56,64,75,81,83,84 + cases: 2,8,11,30,32,37,39,52,53,60,67,70,86 - bash: "3.2" tmux: "3.0a" - cases: 3,9,10,16,25,30,32,44,46,47,53,59,70,72,79 + cases: 3,12,16,22,23,24,35,38,52,63,68,81 - bash: "3.2" tmux: "3.1" - cases: 4,6,21,23,24,35,45,49,61,64,66,80 + cases: 20,22,34,39,58,61,77 - bash: "3.2" tmux: "3.1b" - cases: 1,15,25,26,31,41,58,60,63 + cases: 20,44,46,58,71,75,78,88 - bash: "3.2" tmux: "3.1c" - cases: 11,13,28,40,41,43,47,52,63 + cases: 15,26,28,40,42,58,73,82,83,85,87 - bash: "3.2" tmux: "3.2" - cases: 6,7,11,19,22,36,43,56,82 + cases: 2,19,23,24,25,28,54,56,57,65,80,85 - bash: "3.2" tmux: "3.3a" - cases: 14,25,26,38,42,60,73,83 + cases: 26,32,39,40,63,68,69,79 - bash: "4.0" tmux: "1.8" - cases: 16,34,39,41,79,82 + cases: 8,25,33,37,46,88 - bash: "4.0" tmux: "1.9" - cases: 6,26,49,64 + cases: 4,18,19,24,38,55,68,77,80,83 - bash: "4.0" tmux: "1.9a" - cases: 23,35,38,43,46,56,57 + cases: 14,26,28,30,31,42,58,72,88 - bash: "4.0" tmux: "2.0" - cases: 11,13,17,34,36,39,42,65,68,76 + cases: 3,8,32,42,50,62,77,87 - bash: "4.0" tmux: "2.1" - cases: 2,5,18,30,33,36,44,78 + cases: 6,17,21,25,42,64,77,88 - bash: "4.0" tmux: "2.2" - cases: 14,19,30,72,77 + cases: 27,29,43,49,52,71,72,83 - bash: "4.0" tmux: "2.3" - cases: 6,10,12,21,25,29,47,71,81 + cases: 10,21,33,41,69,70,80,83,87,88 - bash: "4.0" tmux: "2.4" - cases: 2,12,16,23,37,48,79 + cases: 28,38,40,56,76,87 - bash: "4.0" tmux: "2.5" - cases: 7,8,15,28,31,47,48,52,54,55,60,71,77 + cases: 1,3,21,33,38,51,54,57,76 - bash: "4.0" tmux: "2.6" - cases: 1,8,9,19,23,27,28,31,36,45,76,80 + cases: 1,4,35,46,53,60,63,68,70,73,75,86 - bash: "4.0" tmux: "2.7" - cases: 8,14,31,39,48,50,58,62,63,65 + cases: 2,15,23,25,41,56,71,84,88 - bash: "4.0" tmux: "2.8" - cases: 13,32,38,40,46,54,83 + cases: 1,20,39,45,50 - bash: "4.0" tmux: "2.9" - cases: 1,11,14,22,44,54,70 + cases: 11,36,40,46,67,68 - bash: "4.0" tmux: "2.9a" - cases: 5,8,12,41,47,59,60,61,65,73,74 + cases: 18,19,24,36,38,43,44,49,62,74,78,81,83 - bash: "4.0" tmux: "3.0a" - cases: 24,38,45,62,76,81,84 + cases: 7,14,41,47,59,70,78,84 - bash: "4.0" tmux: "3.1" - cases: 3,20,42,50,51,52,67,69 + cases: 5,9,10,26,27,43,72,74,79 - bash: "4.0" tmux: "3.1b" - cases: 2,18,21,27,32,66,75,79 + cases: 2,9,10,13,15,31,47,48,52,85,86 - bash: "4.0" tmux: "3.1c" - cases: 19,24,37,57,59,62,66,69 + cases: 10,12,13,16,20,30,36,43,51,52,62,76 - bash: "4.0" tmux: "3.2" - cases: 4,5,27,37,61,80 + cases: 1,22,34,39,48,51,61,79,83,88 - bash: "4.0" tmux: "3.3a" - cases: 20,27,37,41,53,58,76,80 + cases: 11,14,22,30,36,44,57,60,65,66,72,82,87 - bash: "4.1" tmux: "1.8" - cases: 3,83 + cases: 17,27,39,71,76,78,79,80,87 - bash: "4.1" tmux: "1.9" - cases: 1,21,22,35,53,55,62 + cases: 6,12,14,36,43,48,70,84,87 - bash: "4.1" tmux: "1.9a" - cases: 9,13,17,21,31,47,58,80,83 + cases: 2,10,18,33,41,50,64,78,87 - bash: "4.1" tmux: "2.0" - cases: 6,7,23,45,54,71,82 + cases: 4,11,18,38,44,52,68,72,83 - bash: "4.1" tmux: "2.1" - cases: 8,27,37,39,41,72,83,84 + cases: 1,8,12,13,15,16,18,34,35,40,47,48,51,56,72,81 - bash: "4.1" tmux: "2.2" - cases: 10,12,52,71 + cases: 23,33,40,41,50,55,61,68,86 - bash: "4.1" tmux: "2.3" - cases: 20,26,35,44,55,57,82 + cases: 14,15,37,46,55,71,79 - bash: "4.1" tmux: "2.4" - cases: 3,25,33,36,43,49,51,56,68,71,81 + cases: 7,9,11,21,24,31,32,37,48,50,62,67 - bash: "4.1" tmux: "2.5" - cases: 4,5,30,44,59,67,79 + cases: 4,9,10,32,34,45,47,64,83,84 - bash: "4.1" tmux: "2.6" - cases: 4,10,16,48,50,59,60,65,78 + cases: 14,24,27,36,38,47,55,62,65,76,78 - bash: "4.1" tmux: "2.7" - cases: 10,11,17,22,23,32,34,40,51,60,67 + cases: 5,10,16,22,30,46,51,52,60,67,69 - bash: "4.1" tmux: "2.8" - cases: 1,3,9,27,29,36,37,45,50,51,53,56,65,72 + cases: 7,15,37,60,73,85 - bash: "4.1" tmux: "2.9" - cases: 2,5,6,20,23,24,25,28,31,45,50,72 + cases: 3,5,8,33,39,42,58,70,75,77,85 - bash: "4.1" tmux: "2.9a" - cases: 6,7,16,17,19,35,38,46,55,66,67,72 + cases: 1,4,14,26,28,31,47,54,88 - bash: "4.1" tmux: "3.0a" - cases: 4,7,15,20,23,26,39,42,50,64,67,68 + cases: 19,30,46,54,57,67,77,79,82,86 - bash: "4.1" tmux: "3.1" - cases: 9,13,15,16,18,27,43,54,56,62,73,75,76,84 + cases: 37,48,49,53,59,68,78,80,84 - bash: "4.1" tmux: "3.1b" - cases: 12,23,30,37,55,74,76,80 + cases: 3,7,24,29,32,59,61,70,77,79,81 - bash: "4.1" tmux: "3.1c" - cases: 6,8,14,32,33,42,45,61 + cases: 4,17,19,25,27,38,54,66,70,72,77 - bash: "4.1" tmux: "3.2" - cases: 2,15,17,41,70,78,79,84 + cases: 6,12,13,44,63,74 - bash: "4.1" tmux: "3.3a" - cases: 2,3,5,16,21,49,63,69,74,77 + cases: 4,5,6,8,17,20,35,49,55,67,80 - bash: "4.2" tmux: "1.8" - cases: 9,14,21,23,48,70,71,78,80 + cases: 4,11,19,20,21,28,29,61,72,86 - bash: "4.2" tmux: "1.9" - cases: 8,14,16,23,24,27,37,48,57,79 + cases: 8,9,17,25,37,45,51,57,62,81 - bash: "4.2" tmux: "1.9a" - cases: 7,10,14,18,32,44,78 + cases: 1,17,19,24,48,52,82 - bash: "4.2" tmux: "2.0" - cases: 4,20,27,35,48,52,57,62,79,83 + cases: 5,6,7,20,30,35,37,54,85 - bash: "4.2" tmux: "2.1" - cases: 4,6,12,26,47,49,58,71 + cases: 7,39,43,76,80 - bash: "4.2" tmux: "2.2" - cases: 2,5,15,20,22,33,34,36,44,47 + cases: 3,9,13,20,30,51,57,85 - bash: "4.2" tmux: "2.3" - cases: 39,58,59,64,68,72 + cases: 6,16,17,28,30,58,59 - bash: "4.2" tmux: "2.4" - cases: 1,9,15,38,39,41,42,52,54,58,70,82,83 + cases: 2,8,30,33,35,46 - bash: "4.2" tmux: "2.5" - cases: 2,11,21,38,40 + cases: 2,5,18,22,58,67,70,78,81 - bash: "4.2" tmux: "2.6" - cases: 3,11,13,20,21,30,51,54,57,62,72,83,84 + cases: 7,11,12,15,31,32,34,37,44,50,64,74,84 - bash: "4.2" tmux: "2.7" - cases: 9,41,47,53,57,71,72,75,81 + cases: 14,18,35,38,40,48,57,79,85 - bash: "4.2" tmux: "2.8" - cases: 25,26,30,43,58,59,66,67 + cases: 13,27,31,33,51,62,67,75,82,83,87 - bash: "4.2" tmux: "2.9" - cases: 32,55 + cases: 22,24,30,34,43,44,48,52,53,63,80,82 - bash: "4.2" tmux: "2.9a" - cases: 4,50,52,63,82 + cases: 10,23,29,40,71,77,80,85 - bash: "4.2" tmux: "3.0a" - cases: 11,28,31,35,40,49,55,74 + cases: 17,44,45,53,60,72,73 - bash: "4.2" tmux: "3.1" - cases: 22,33,37,40,46,53,65,81 + cases: 6,7,12,36,41,50,55,56,71,87,88 - bash: "4.2" tmux: "3.1b" - cases: 7,9,19,28,29,36,45,51,54,56,72,81 + cases: 1,5,6,22,68,72,83 - bash: "4.2" tmux: "3.1c" - cases: 46,54,58,73,78 + cases: 14,22,37,45,46,55,61,64,65,78,80 - bash: "4.2" tmux: "3.2" - cases: 3,42,46,47,53,60,64,69,76,77 + cases: 14,26,42,46,49,53,66,68,69,76,77,78 - bash: "4.2" tmux: "3.3a" - cases: 17,29,34,61,65,84 + cases: 16,19,21,27,41,42,47,59,75,81,84 - bash: "4.3" tmux: "1.8" - cases: 8,11,20,24,38,47,65 + cases: 36,38,42,43,44,62,68,70 - bash: "4.3" tmux: "1.9" - cases: 2,3,10,11,13,18,36,40,42,46,78,80 + cases: 7,22,23,29,32,39,41,44,53 - bash: "4.3" tmux: "1.9a" - cases: 20,37,40,61,65,71 + cases: 15,38,43,44,46,47,55,61,71,84 - bash: "4.3" tmux: "2.0" - cases: 1,2,14,16,25,26,32,37,41,47,49 + cases: 1,15,19,23,51 - bash: "4.3" tmux: "2.1" - cases: 29,34,35,46,50,55,56,82 + cases: 4,11,20,29,30,31,41,49,54,58,65,78 - bash: "4.3" tmux: "2.2" - cases: 1,7,16,18,29,42,45,46,48,76,78 + cases: 1,4,8,16,32,35,56,65,69,70 - bash: "4.3" tmux: "2.3" - cases: 9,15,19,24,27,30,32,60,66,69 + cases: 7,26,29,32,48,65,76,77 - bash: "4.3" tmux: "2.4" - cases: 14,18,45,60,80 + cases: 22,25,57,60,77 - bash: "4.3" tmux: "2.5" - cases: 14,17,26,27,39,53,84 + cases: 40,46,52,53,62,66,77,86,87 - bash: "4.3" tmux: "2.6" - cases: 24,25,38,49,56 + cases: 5,6,23,28,39,57,67,69,71,82,87 - bash: "4.3" tmux: "2.7" - cases: 4,6,20,27,28,30,44,52,54,66,70,73,74,82 + cases: 3,6,8,9,13,34,39,43,50 - bash: "4.3" tmux: "2.8" - cases: 21,39,64,78,81 + cases: 11,12,24,41,52,58,72,81,88 - bash: "4.3" tmux: "2.9" - cases: 15,27,38,51,58,59 + cases: 10,14,23,31,50,55,64,73,83,88 - bash: "4.3" tmux: "2.9a" - cases: 3,10,20,22,39,44,48,62,76,78,80 + cases: 6,7,9,15,17,22,25,27,35,45,63,73,75,87 - bash: "4.3" tmux: "3.0a" - cases: 1,5,12,13,21,36,43,51,82 + cases: 2,32,33,34,58,62,80 - bash: "4.3" tmux: "3.1" - cases: 2,17,19,28,29,32,57,58,60,72,77,83 + cases: 21,24,35,47,63,67 - bash: "4.3" tmux: "3.1b" - cases: 4,5,11,33,42,47,64,70,84 + cases: 12,26,28,36,37,41,42,45,69,74 - bash: "4.3" tmux: "3.1c" - cases: 18,29,31,36,68,75,76,77,79 + cases: 9,33,39,49,59,79,86 - bash: "4.3" tmux: "3.2" - cases: 10,14,23,33,40,54,55,57,63 + cases: 3,17,21,27,35,37,40,45,52,71,87 - bash: "4.3" tmux: "3.3a" - cases: 1,4,7,8,12,19,22,23,55,62,67,72 + cases: 1,3,13,18,31,50,77,85,86 - bash: "4.4" tmux: "1.8" - cases: 15,22,27,42,43,44,58,62,68,81 + cases: 7,26,40,64,69 - bash: "4.4" tmux: "1.9" - cases: 5,7,15,41,61,69,70,72,81,84 + cases: 1,5,15,20,27,49,50,54,58,65,71,79,86,88 - bash: "4.4" tmux: "1.9a" - cases: 1,12,15,19,28,50,51,69,76,79,82 + cases: 8,11,22,51,53,54,56,83 - bash: "4.4" tmux: "2.0" - cases: 12,18,30,61 + cases: 14,16,17,21,34,36,53,69,71,79,84 - bash: "4.4" tmux: "2.1" - cases: 11,13,57,61 + cases: 2,24,38,52,53,62,71,87 - bash: "4.4" tmux: "2.2" - cases: 9,21,25,27,28,40,64,81,84 + cases: 6,11,31,39,42,45,64,84 - bash: "4.4" tmux: "2.3" - cases: 13,16,22,46,48,78 + cases: 3,23,27,35,40,43,47,64,66 - bash: "4.4" tmux: "2.4" - cases: 4,17,28,35,44,50,59,64,69,72,77 + cases: 4,5,10,12,15,44,49,64,78,79,85 - bash: "4.4" tmux: "2.5" - cases: 3,23,29,50,68,78,81 + cases: 12,17,23,39,48,50,55,60 - bash: "4.4" tmux: "2.6" - cases: 7,32,34,37,42,44,47,71,74,77,81,82 + cases: 2,19,29,30,33,45,51,72,81,85,88 - bash: "4.4" tmux: "2.7" - cases: 1,2,3,12,33,38,43,55,80 + cases: 21,33,37,49,54,59,65,70,77,83 - bash: "4.4" tmux: "2.8" - cases: 6,7,14,19,31,44,62,71,79 + cases: 3,26,28,29,38,46,48,57,61,63,65,68,80 - bash: "4.4" tmux: "2.9" - cases: 9,18,21,34,39,48,49,52,57,63,65,67,73,77,82 + cases: 2,13,17,19,28,45,51,86,87 - bash: "4.4" tmux: "2.9a" - cases: 2,11,13,29,45,53,57,70 + cases: 3,20,51,55,58,59,65,66,68,69,76,82 - bash: "4.4" tmux: "3.0a" - cases: 34,41,60,73,75 + cases: 9,10,15,18,21,25,26,37,61,69 - bash: "4.4" tmux: "3.1" - cases: 5,10,14,26,31,36,39 + cases: 4,11,14,23,31,38,42,54,75,76,81 - bash: "4.4" tmux: "3.1b" - cases: 3,6,13,14,22,39,40,52,53,57,83 + cases: 4,8,11,19,39,50,55,57,60,62,73,82 - bash: "4.4" tmux: "3.1c" - cases: 15,26,35,39,49,64,67,70 + cases: 11,41,74,75 - bash: "4.4" tmux: "3.2" - cases: 8,18,20,25,28,30,34,38,45,49,51,66,83 + cases: 10,16,30,31,32,43,59,67,82 - bash: "4.4" tmux: "3.3a" - cases: 18,24,33,36,44,54,56,64,71,78,81 + cases: 15,29,34,43,51,53,56,58,62,71,76 - bash: "5.0" tmux: "1.8" - cases: 4,25,26,37,55,57,77 + cases: 3,9,22,24,34,45,47,55,57,83,85 - bash: "5.0" tmux: "1.9" - cases: 9,17,19,20,32,33,38,54,58,76,77,82,83 + cases: 3,10,30,33,34,40,42,56,64,78 - bash: "5.0" tmux: "1.9a" - cases: 8,29,33,36,39,41,52,53,54,68,70,72,84 + cases: 3,9,12,25,27,29,34,35,39,49,62,65,77,80,81,86 - bash: "5.0" tmux: "2.0" - cases: 10,43,46,69 + cases: 9,10,28,46,55,61,64,65,81,88 - bash: "5.0" tmux: "2.1" - cases: 14,24,28,31,40,69,79 + cases: 19,22,32,57,85,86 - bash: "5.0" tmux: "2.2" - cases: 6,11,13,35,39,56,61,62,79,82,83 + cases: 2,7,14,17,19,21,22,28,37,46,47,58,76,79,88 - bash: "5.0" tmux: "2.3" - cases: 28,36,38,41,65 + cases: 2,4,18,25,31,39,44,78 - bash: "5.0" tmux: "2.4" - cases: 7,27,29,32,67 + cases: 1,6,53,59,71,88 - bash: "5.0" tmux: "2.5" - cases: 16,41,45,49,51,56,76 + cases: 11,15,16,25,27,31,42,65,69,80,82 - bash: "5.0" tmux: "2.6" - cases: 5,15,17,18,22,58,70,79 + cases: 16,25,42,80,83 - bash: "5.0" tmux: "2.7" - cases: 18,26,36,42,56,64,68,77 + cases: 26,47,53,72 - bash: "5.0" tmux: "2.8" - cases: 18,23,33,34,52,60,68,69,76,77 + cases: 8,9,14,54,56,86 - bash: "5.0" tmux: "2.9" - cases: 3,10,12,16,37,40,43,61,62,66,68,75,80 + cases: 29,41,56,61,66,74,78,81,84 - bash: "5.0" tmux: "2.9a" - cases: 1,30,40,42 + cases: 12,16,50,56,84 - bash: "5.0" tmux: "3.0a" - cases: 2,19,22,33,37,63,65,66 + cases: 5,6,8,13,36,50,56,66,71,76,85 - bash: "5.0" tmux: "3.1" - cases: 7,11,12,25,44,55,71,78 + cases: 3,8,13,17,30,40,46,51,52,57,60,83 - bash: "5.0" tmux: "3.1b" - cases: 35,49,50,59,67,69,78 + cases: 14,16,23,27,30,33,40,43,53,66,76,87 - bash: "5.0" tmux: "3.1c" - cases: 2,3,5,17,21,22,27,34,38,50,53,55,56,65,74,81,82 + cases: 1,2,24,48,53,60,63,67,68 - bash: "5.0" tmux: "3.2" - cases: 1,12,39,44,52,68,73 + cases: 8,20,41,62,73,75 - bash: "5.0" tmux: "3.3a" - cases: 6,10,11,13,15,28,30,31,32,35,43,46,47,48,51,59,75,82 + cases: 7,28,38,54,61,64,70,88 - bash: "5.1" tmux: "1.8" - cases: 10,13,19,35,40,45,46,76 + cases: 10,13,16,23,35,48,77,81 - bash: "5.1" tmux: "1.9" - cases: 4,25,47,51 + cases: 16,31,72,76 - bash: "5.1" tmux: "1.9a" - cases: 4,11,24,26,48,62,64,81 + cases: 7,16,21,23,32,68,69,85 - bash: "5.1" tmux: "2.0" - cases: 15,19,22,33,40,44,51,53,56,72 + cases: 2,22,25,26,40,49,57,86 - bash: "5.1" tmux: "2.1" - cases: 1,3,21,22,25,38,53,70,76,81 + cases: 3,5,9,14,26,27,28,36,46,68,79 - bash: "5.1" tmux: "2.2" - cases: 23,24,31,49,50,58,68,80 + cases: 5,12,25,38,48,54,77,78,82 - bash: "5.1" tmux: "2.3" - cases: 2,8,23,31,37,42,43,76,77,83 + cases: 11,22,24,34,38,57,72 - bash: "5.1" tmux: "2.4" - cases: 5,6,8,10,19,24,30,46,55 + cases: 13,17,23,26,29,34,39,41,42,52,65,80,83 - bash: "5.1" tmux: "2.5" - cases: 1,18,24,32,33,35,57,64,65,66,83 + cases: 6,19,28,30,41,43,79,88 - bash: "5.1" tmux: "2.6" - cases: 12,29,40,41,46,55,63,68 + cases: 3,18,20,26,40,49,54,58 - bash: "5.1" tmux: "2.7" - cases: 15,21,45,59,79 + cases: 7,11,12,19,24,27,32,63,73,80 - bash: "5.1" tmux: "2.8" - cases: 5,17,20,28,42,57,61,70,75,82,84 + cases: 4,6,10,16,17,19,21,35,44,53,55,66,70,76 - bash: "5.1" tmux: "2.9" - cases: 19,30,41,47,60,74,78,84 + cases: 18,25,27,37,59,60,62,69,71 - bash: "5.1" tmux: "2.9a" - cases: 14,18,36,58,68,69,71 + cases: 5,13,34,57,61,72,79 - bash: "5.1" tmux: "3.0a" - cases: 14,27,48,52,54,58,69,71,78,80 + cases: 1,4,11,20,28,29,42,64,65,74,75,83,87 - bash: "5.1" tmux: "3.1" - cases: 1,8,30,34,68,74,79 + cases: 2,15,18,19,28,29,44,65,66,82 - bash: "5.1" tmux: "3.1b" - cases: 8,16,17,43,48,62,65,73 + cases: 17,21,38,49,51,54,56,67,80,84 - bash: "5.1" tmux: "3.1c" - cases: 7,9,10,16,44,48,71,83 + cases: 7,8,23,31,34,44,47,50,56,88 - bash: "5.1" tmux: "3.2" - cases: 13,16,29,31,32,50,62,67,72,81 + cases: 9,11,15,29,33,47,64,70,86 - bash: "5.1" tmux: "3.3a" - cases: 39,45,52,66,68,79 + cases: 24,37,45,46,48,73 - bash: "5.2" tmux: "1.8" - cases: 2,6,7,17,18,28,33,36,61,69 + cases: 12,15,18,30,58,65,82 - bash: "5.2" tmux: "1.9" - cases: 12,28,30,34,39,43,44,45,50,71 + cases: 11,13,26,28,35,46,47,61,69,82 - bash: "5.2" tmux: "1.9a" - cases: 2,6,16,25,30,42,49 + cases: 36,37,40,57,70,76 - bash: "5.2" tmux: "2.0" - cases: 3,5,8,21,24,29,58,64,70,77,80,81,84 + cases: 12,27,48,58,82 - bash: "5.2" tmux: "2.1" - cases: 9,10,15,19,42,43,51,52,54,62,65,68,77,80 + cases: 10,37,69,70,82,83,84 - bash: "5.2" tmux: "2.2" - cases: 8,32,37,38,53,55,69 + cases: 15,26,34,36,44,53,80,87 - bash: "5.2" tmux: "2.3" - cases: 14,33,34,45,70,79,80 + cases: 8,9,19,42,67,68,81,86 - bash: "5.2" tmux: "2.4" - cases: 13,20,21,26,31,47,53,65,66,78 + cases: 3,14,18,19,43,45,47,54,55,58,68,69,72,84 - bash: "5.2" tmux: "2.5" - cases: 6,12,13,22,37,43,58,70 + cases: 7,13,20,24,29,35,36,37,56,59,68,71,85 - bash: "5.2" tmux: "2.6" - cases: 14,26,43,53,64,66,67,69,73 + cases: 8,9,13,41,43,52 - bash: "5.2" tmux: "2.7" - cases: 5,7,13,24,25,29,35,76,83 + cases: 4,17,28,31,36,42,45,55,66,75,76,86 - bash: "5.2" tmux: "2.8" - cases: 2,4,8,11,12,15,16,22,41,48,55 + cases: 2,18,22,23,25,30,32,34,42,64,77,78,79 - bash: "5.2" tmux: "2.9" - cases: 4,17,26,29,36,42,46,53,56,81 + cases: 6,12,16,47,49,54,57,76,79 - bash: "5.2" tmux: "2.9a" - cases: 9,15,24,25,27,28,31,33,34,37,43,49,51,77,79 + cases: 21,33,41,42,46,48,64 - bash: "5.2" tmux: "3.0a" - cases: 6,8,17,18,29,56,57,61,77,83 + cases: 27,31,39,40,43,48,49,51,55,88 - bash: "5.2" tmux: "3.1" - cases: 38,41,47,48,59,63,70,82 + cases: 1,16,25,32,33,45,62,64,69,70,73,85,86 - bash: "5.2" tmux: "3.1b" - cases: 10,20,24,34,38,44,46,61,68,71,77,82 + cases: 18,25,34,35,63,64,65 - bash: "5.2" tmux: "3.1c" - cases: 1,4,12,20,23,25,30,51,60,72,80,84 + cases: 3,5,6,18,21,29,32,35,57,69,71,81,84 - bash: "5.2" tmux: "3.2" - cases: 9,21,24,26,35,48,58,59,65,71,74,75 + cases: 4,5,7,18,36,38,50,55,58,60,72,81,84 - bash: "5.2" tmux: "3.3a" - cases: 9,40,50,57,70 + cases: 2,9,10,12,23,25,33,52,74,78,83 ###END_INSERT### steps: From 46b7c5aeac4c520b0931548f11476482eced4af7 Mon Sep 17 00:00:00 2001 From: Yasuhiro Yamada Date: Tue, 9 Jan 2024 00:13:41 +0000 Subject: [PATCH 11/12] [skip ci] Update man --- man/man.md | 3 +++ man/xpanes.1 | 3 +++ 2 files changed, 6 insertions(+) diff --git a/man/man.md b/man/man.md index f32b90b..6ad403b 100644 --- a/man/man.md +++ b/man/man.md @@ -81,6 +81,9 @@ OPTIONS `-n` <*number*> Set the maximum number of <*argument*> taken for each pane. +`-r` + Reuse the existing panes, or create then in the current active window. + `-S` <*socket-path*> Set a full alternative path to the server socket. diff --git a/man/xpanes.1 b/man/xpanes.1 index 54be29a..bcf7a2d 100644 --- a/man/xpanes.1 +++ b/man/xpanes.1 @@ -84,6 +84,9 @@ Speedy mode AND close a pane automatically at the same time as process exiting. \fB\fC\-n\fR <\fInumber\fP> Set the maximum number of <\fIargument\fP> taken for each pane. .TP +\fB\fC\-r\fR +Reuse the existing panes, or create then in the current active window. +.TP \fB\fC\-S\fR <\fIsocket\-path\fP> Set a full alternative path to the server socket. .TP From f5ea4e976ee28362f0353af3e338ca8ebc82a8bb Mon Sep 17 00:00:00 2001 From: Yasuhiro Yamada Date: Tue, 9 Jan 2024 00:24:06 +0000 Subject: [PATCH 12/12] Add -r to the Zsh completion --- completion/zsh/_xpanes | 1 + 1 file changed, 1 insertion(+) diff --git a/completion/zsh/_xpanes b/completion/zsh/_xpanes index c17e0ee..2f3d1fc 100644 --- a/completion/zsh/_xpanes +++ b/completion/zsh/_xpanes @@ -21,6 +21,7 @@ _xpanes () { "($opts_omit -s -ss --ssh)-s[Speedy mode: Run command without opening an interactive shell.]" \ "($opts_omit -ss -s)-ss[Speedy mode AND close a pane automatically at the same time as process exiting.]" \ "($opts_omit -n)-n[Set the maximum number of taken for each pane.]:num:" \ + "($opts_omit -r)-r[Reuse the existing panes, or create then in the current active window.]" \ "($opts_omit -S)-S[Specify a full alternative path to the server socket.]:filename:_files" \ "($opts_omit -t)-t[Display each argument on the each pane's border as their title.]" \ "($opts_omit -x --stay)-x[Create extra panes in the current active window.]" \