From 0ae0bc84e331a016faa0d8da88913b02c24e7dfc Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Fri, 29 Aug 2014 22:28:25 +0100 Subject: [PATCH] Add __get_current_window_index internal helper function --- lib/layout-helpers.sh | 9 ++++ .../__get_current_window_index.test.sh | 48 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100755 test/lib/layout-helpers/__get_current_window_index.test.sh diff --git a/lib/layout-helpers.sh b/lib/layout-helpers.sh index 703f8c8..dfa2673 100644 --- a/lib/layout-helpers.sh +++ b/lib/layout-helpers.sh @@ -313,6 +313,15 @@ __get_first_window_index() { fi } +__get_current_window_index() { + local lookup=$(tmuxifier-tmux list-windows -t "$session:" \ + -F "#{window_active}:#{window_index}" 2>/dev/null | grep "^1:") + + if [ -n "$lookup" ]; then + echo "${lookup/1:}" + fi +} + __go_to_session() { if [ -z "$TMUX" ]; then tmuxifier-tmux -u attach-session -t "$session:" diff --git a/test/lib/layout-helpers/__get_current_window_index.test.sh b/test/lib/layout-helpers/__get_current_window_index.test.sh new file mode 100755 index 0000000..cf4371c --- /dev/null +++ b/test/lib/layout-helpers/__get_current_window_index.test.sh @@ -0,0 +1,48 @@ +#! /usr/bin/env bash +source "../../test-helper.sh" +source "${root}/lib/layout-helpers.sh" + +# +# __get_current_window_index() tests. +# + +# When current window is the first and only window. +create-test-session +assert "__get_current_window_index" "0" +kill-test-session + +# When creating a second window. +create-test-session +test-socket-tmux new-window -t "$session:1" +assert "__get_current_window_index" "1" +kill-test-session + +# When creating a second window and then switching back to the first window. +create-test-session +test-socket-tmux new-window -t "$session:1" +test-socket-tmux select-window -t "$session:0" +assert "__get_current_window_index" "0" +kill-test-session + +# When creating multiples windows and switching between them randomly. +create-test-session +assert "__get_current_window_index" "0" +test-socket-tmux new-window -t "$session:1" +assert "__get_current_window_index" "1" +test-socket-tmux new-window -t "$session:2" +assert "__get_current_window_index" "2" +test-socket-tmux new-window -t "$session:3" +assert "__get_current_window_index" "3" +test-socket-tmux select-window -t "$session:1" +assert "__get_current_window_index" "1" +test-socket-tmux select-window -t "$session:0" +assert "__get_current_window_index" "0" +test-socket-tmux select-window -t "$session:3" +assert "__get_current_window_index" "3" +test-socket-tmux select-window -t "$session:2" +assert "__get_current_window_index" "2" +kill-test-session + + +# End of tests. +assert_end "__get_current_window_index()"