Skip to content

Commit 53ff411

Browse files
authored
fix: forward all arguments when setting extra toggle keys (#45)
1 parent 1cd9aa3 commit 53ff411

File tree

5 files changed

+85
-2
lines changed

5 files changed

+85
-2
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,12 @@ follows <https://www.conventionalcommits.org/en/v1.0.0/> to track changes.
4646
### Fixed
4747

4848
- Support OSX's ancient Bash ([#44])
49+
- Forward all arguments when setting specified toggle keys ([#45])
4950

5051
[#42]: https://github.com/loichyan/tmux-toggle-popup/pull/42
5152
[#43]: https://github.com/loichyan/tmux-toggle-popup/pull/43
5253
[#44]: https://github.com/loichyan/tmux-toggle-popup/pull/44
54+
[#45]: https://github.com/loichyan/tmux-toggle-popup/pull/45
5355
[NixOS/nixpkgs#428294]: https://github.com/NixOS/nixpkgs/pull/428294
5456
[@szaffarano]: https://github.com/szaffarano
5557

src/toggle.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ prepare_open() {
7373
# Create temporary toggle keys in the opened popup
7474
# shellcheck disable=SC2206
7575
for k in "${toggle_keys[@]}"; do
76-
open_cmds+=(bind $k run "#{@popup-toggle} --name='$name' --toggle-mode='$toggle_mode'" \;)
76+
open_cmds+=(bind $k run "#{@popup-toggle} $(escape "${args[@]}")" \;)
7777
on_cleanup+=(unbind $k \;)
7878
done
7979

@@ -193,7 +193,7 @@ main() {
193193
tmux set default-shell "/bin/sh" \; popup "${display_args[@]}" "$open_script"
194194

195195
# Undo temporary changes on the popup server
196-
if [[ ${#on_cleanup} -gt 0 ]]; then
196+
if [[ -z $opened_name && ${#on_cleanup} -gt 0 ]]; then
197197
# Ignore error if the server has already stopped
198198
tmux -N "${popup_socket[@]}" "${on_cleanup[@]}" 2>/dev/null || true
199199
fi
@@ -202,4 +202,5 @@ main() {
202202
if parse_cmds "$after_close"; then tmux "${cmds[@]}"; fi
203203
}
204204

205+
args=("$@")
205206
main "$@"

src/toggle_tests.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,3 +112,18 @@ t_toggle_mode="force-open"
112112
t_opened_name="p_open_nested_1"
113113
begin_test "$test_name"
114114
test_toggle --name="p_open_nested_2"
115+
116+
test_name="open_with_toggle_key"
117+
exit_codes=(0 0 0)
118+
t_toggle_mode="switch"
119+
t_opened_name=""
120+
begin_test "$test_name"
121+
test_toggle --name="p_toggle_key" --toggle-key="-T root M-p" --toggle-key="-n M-o"
122+
123+
# Open nested popups should not clean toggle keys.
124+
test_name="open_nested_with_toggle_key"
125+
exit_codes=(0 0 0)
126+
t_toggle_mode="force-open"
127+
t_opened_name="p_nested_toggle_key_1"
128+
begin_test "$test_name"
129+
test_toggle --name="p_nested_toggle_key_2" --toggle-key="-n M-o"
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
>>>TMUX:BEGIN(1)
2+
display
3+
before-open
4+
;
5+
run
6+
#{@before_open}
7+
<<<TMUX:END(1)
8+
9+
>>>TMUX:BEGIN(2)
10+
set
11+
default-shell
12+
/bin/sh
13+
;
14+
popup
15+
tmux set default-shell '/usr/bin/fish'; export TMUX_POPUP_SERVER='popup_server2' SHELL='/usr/bin/fish'; exec tmux -S socket/path/popup_server2 new -As pane/path/p_nested_toggle_key_2 \; set @__popup_name p_nested_toggle_key_2 \; set @__popup_id_format pane/path/\{popup_name\} \; set @__popup_caller_path working/session/path \; set @__popup_caller_pane_path working/pane/path \; bind -n M-o run \#\{@popup-toggle\}\ --name=p_nested_toggle_key_2\ --toggle-key=-n\\\ M-o\ \; display on-init \; run \#\{@on_init\} >/dev/null
16+
<<<TMUX:END(2)
17+
18+
>>>TMUX:BEGIN(3)
19+
display
20+
after-close
21+
;
22+
run
23+
#{@after_close}
24+
<<<TMUX:END(3)
25+
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
>>>TMUX:BEGIN(1)
2+
display
3+
before-open
4+
;
5+
run
6+
#{@before_open}
7+
<<<TMUX:END(1)
8+
9+
>>>TMUX:BEGIN(2)
10+
set
11+
default-shell
12+
/bin/sh
13+
;
14+
popup
15+
tmux set default-shell '/usr/bin/fish'; export TMUX_POPUP_SERVER='popup_server2' SHELL='/usr/bin/fish'; exec tmux -S socket/path/popup_server2 new -As pane/path/p_toggle_key \; set @__popup_name p_toggle_key \; set @__popup_id_format pane/path/\{popup_name\} \; set @__popup_caller_path working/session/path \; set @__popup_caller_pane_path working/pane/path \; bind -T root M-p run \#\{@popup-toggle\}\ --name=p_toggle_key\ --toggle-key=-T\\\ root\\\ M-p\ --toggle-key=-n\\\ M-o\ \; bind -n M-o run \#\{@popup-toggle\}\ --name=p_toggle_key\ --toggle-key=-T\\\ root\\\ M-p\ --toggle-key=-n\\\ M-o\ \; display on-init \; run \#\{@on_init\} >/dev/null
16+
<<<TMUX:END(2)
17+
18+
>>>TMUX:BEGIN(3)
19+
-N
20+
-S
21+
socket/path/popup_server2
22+
unbind
23+
-T
24+
root
25+
M-p
26+
;
27+
unbind
28+
-n
29+
M-o
30+
;
31+
<<<TMUX:END(3)
32+
33+
>>>TMUX:BEGIN(4)
34+
display
35+
after-close
36+
;
37+
run
38+
#{@after_close}
39+
<<<TMUX:END(4)
40+

0 commit comments

Comments
 (0)