From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3925 invoked by alias); 5 Dec 2009 09:37:39 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 27458 Received: (qmail 2337 invoked from network); 5 Dec 2009 09:37:27 -0000 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 Received-SPF: none (ns1.primenet.com.au: domain at bewatermyfriend.org does not designate permitted sender hosts) From: Frank Terbeck To: zsh-workers@zsh.org Subject: PATCH: _tmux: Add support for the -w option of set-option Date: Sat, 5 Dec 2009 10:29:20 +0100 Message-Id: <1260005360-17298-1-git-send-email-ft@bewatermyfriend.org> X-Mailer: git-send-email 1.6.5.rc2 X-Df-Sender: 430444 That option lets the user change window options with set-option instead of the default session options. So, % tmux set-option -w should behave exactly like this: % tmux set-window-option This patch does that. It is based on top of the changes in zsh-workers-27450. Regards, Frank --- Completion/Unix/Command/_tmux | 52 ++++++++++++++++++++++------------------- 1 files changed, 28 insertions(+), 24 deletions(-) diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux index 7a64400..7d8adf7 100644 --- a/Completion/Unix/Command/_tmux +++ b/Completion/Unix/Command/_tmux @@ -848,27 +848,19 @@ function _tmux-set-environment() { function _tmux-set-option() { [[ -n ${tmux_describe} ]] && print "Set a session option" && return + local mode local -a args args=( '-a[Append to string options]' '-g[Set a global session option]' '-u[Unset a non-global option]' + '-w[Change window (not session) options]' '-t[Choose a target session]:target session:__tmux-sessions' '*:: :->name_or_value' ) + __tmux-got-option-already -w && mode=window || mode=session _arguments -C ${args} - - case ${state} in - name_or_value) - if (( CURRENT == 1 )); then - __tmux-options - elif (( CURRENT == 2 )); then - __tmux-option-guard 'session' ${words[1]} - else - __tmux-nothing-else - fi - ;; - esac + __tmux-options-complete ${mode} ${state} } function _tmux-set-window-option() { @@ -882,18 +874,7 @@ function _tmux-set-window-option() { '*:: :->name_or_value' ) _arguments -C ${args} - - case ${state} in - name_or_value) - if (( CURRENT == 1 )); then - __tmux-window-options - elif (( CURRENT == 2 )); then - __tmux-option-guard 'window' ${words[1]} - else - __tmux-nothing-else - fi - ;; - esac + __tmux-options-complete window ${state} } function _tmux-show-buffer() { @@ -1144,6 +1125,11 @@ function __tmux-get-optarg() { done } +function __tmux-got-option-already() { + [[ -n ${(M)words:#$1} ]] && return 0 + return 1 +} + function __tmux-key-tables() { local expl local -a tables @@ -1337,6 +1323,24 @@ function __tmux-options() { _describe -t tmux-options 'tmux option' tmux_options } +function __tmux-options-complete() { + local mode="$1" state="$2" + + case ${state} in + name_or_value) + if (( CURRENT == 1 )) && [[ ${mode} == 'session' ]]; then + __tmux-options + elif (( CURRENT == 1 )) && [[ ${mode} == 'window' ]]; then + __tmux-window-options + elif (( CURRENT == 2 )); then + __tmux-option-guard ${mode} ${words[1]} + else + __tmux-nothing-else + fi + ;; + esac +} + function __tmux-panes() { local expl line local -i num -- 1.6.5.rc2