zsh-workers
 help / color / mirror / code / Atom feed
* [PATCH 00/18] Updates for _tmux
@ 2015-08-10 13:27 Frank Terbeck
  2015-08-10 13:27 ` [PATCH 01/18] _tmux: Update command line options Frank Terbeck
                   ` (19 more replies)
  0 siblings, 20 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

I've recently been playing for some integration between zsh and tmux in my
setup and noticed that our completion function _tmux had become a bit out of
date.

So I started updating it again. After a while I got tired of manually checking
what options and commands are available in tmux and what options and commands
_tmux think there are... so I wrote a little script (see the "Add helper
script..." commit that adds Utils/check-tmux-state). It doesn't parse tmux's
manpage to see if all sub-command options are covered correctly, but it was
very useful nonetheless.

This updates the completion file to tmux's current git HEAD.

The current TODO as far as I am aware is:

 - Implement __tmux-format

 - Implement __tmux-style (possibly using existing helpers like
   __tmux-attributes and __tmux-colours)

 - in _tmux-list-panes, use __tmux-windows or __tmux-sessions
   depending on -s is among the sub-commands current command line.

If anyone wants to pick off one of those, be my guest. :-)

Since this is a fairly large update: Should I wait until 5.0.9 is out or do I
go ahead and commit it right away? Bear in mind that the completion was quite
out of date, but also that this is a rather large update... So I don't know.


Frank Terbeck (18):
  _tmux: Update command line options
  _tmux: Update options for supported commands
  _tmux: Add support for new sub-commands
  _tmux: Remove dead code
  _tmux: Don't unset, set empty in local scope
  _tmux: No need to unset local variables
  _tmux: Replay all arguments when dispatching to new _tmux()
  _tmux: "local -x" serves no purpose
  _tmux: options => session_options
  Add helper script to check state of _tmux completion
  _tmux: Remove old sub-commands and their aliases
  _tmux: Add new command aliases
  _tmux: Fix options with changed scope
  _tmux: Remove support for old options
  _tmux: Add new session options
  _tmux: Add support for new server options
  _tmux: Add support for new window options
  _tmux: Update TODO

 Completion/Unix/Command/_tmux | 660 +++++++++++++++++++++++-------------------
 Util/check-tmux-state         | 216 ++++++++++++++
 2 files changed, 585 insertions(+), 291 deletions(-)
 create mode 100644 Util/check-tmux-state

-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 01/18] _tmux: Update command line options
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 02/18] _tmux: Update options for supported commands Frank Terbeck
                   ` (18 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

New: -C and -V
Removed: -q (tmux still excepts it for backward compatibility, but it
         does nothing)
---
 Completion/Unix/Command/_tmux | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index f0cc4be..7e192ab 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1499,13 +1499,14 @@ function _tmux() {
         '-2[force using 256 colours]'
         '-8[force using 88 colours]'
         '-c[execute a shell command]:command name:_command_names'
+        '-C[start tmux in contol mode. -CC disables echo]'
         '-f[specify configuration file]:tmux config file:_files -g "*(-.)"'
         '-l[behave like a login shell]'
         '-L[specify socket name]:socket name:__tmux-socket-name'
-        '-q[do not send informational messages]'
         '-S[specify socket path]:server socket:_path_files -g "*(=,/)"'
         '-u[force using UTF-8]'
         '-v[request verbose logging]'
+        '-V[report tmux version]'
         '*:: :->subcommand_or_options'
     )
     _arguments -C -s -w ${args} && ret=0
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 02/18] _tmux: Update options for supported commands
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
  2015-08-10 13:27 ` [PATCH 01/18] _tmux: Update command line options Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 03/18] _tmux: Add support for new sub-commands Frank Terbeck
                   ` (17 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

This also adds a little TODO on top about what is missing.
---
 Completion/Unix/Command/_tmux | 339 ++++++++++++++++++++++++------------------
 1 file changed, 194 insertions(+), 145 deletions(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 7e192ab..7fb328e 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -40,6 +40,21 @@
 #
 # The configuration for subcommand completions may be done in
 # this context: ':completion:*:*:tmux-<sub-command>:*:*'
+#
+# TODO:
+#
+# Missing sub-commands:
+#
+#   - choose-tree
+#   - last-pane
+#   - move-pane
+#   - respawn-pane
+#   - choose-buffer
+#   - wait-for
+#
+# In addition, the way options (set/show etc) are handled needs to be reviewed.
+# For example, set-option can set every type of option now. I hope this is
+# rather simple to improve.
 
 # Global variables; setup the first time _tmux is called.
 # For $_tmux_commands[] generation, see the very end of this file.
@@ -154,6 +169,7 @@ function _tmux-attach-session() {
     local -a args
 
     args=(
+        '-c[specify working directory for the session]:directory:_path_files -g "*(-/)"'
         '-d[detach other clients attached to target session]'
         '-r[put the client into read-only mode]'
         '-t[choose a target session]:target session:__tmux-sessions'
@@ -189,6 +205,8 @@ function _tmux-break-pane() {
     local -a args
     args=(
         '-d[do not make the new window become the active one]'
+        '-F[specify format of output]:format:__tmux-format'
+        '-P[print information of new window after it has been created]'
         '-t[choose a target pane]:panes:__tmux-panes'
     )
     _arguments ${args}
@@ -198,7 +216,16 @@ function _tmux-capture-pane() {
     [[ -n ${tmux_describe} ]] && print "Capture the contents of a pane to a buffer" && return
     local -a args
     args=(
+        '-a[use alternate screen]'
         '-b[choose target buffer]:target buffer:__tmux-buffers'
+        '-C[escape non-printable characters as octal \ooo]'
+        '-e[include escape sequences for attributes etc]'
+        '-E[specify last line to capture. - means last line of pane]'
+        '-J[join wrapped lines and preserver trailing space]'
+        '-q[ignore errors when trying to access alternate screen]'
+        '-p[print data to stdout]'
+        '-P[only capture that is the beginning of an as-yet incomplete esc seq]'
+        '-S[specify start line to capture. - means first line of scrollback]'
         '-t[choose source pane]:source pane:__tmux-panes'
     )
     _arguments ${args}
@@ -206,17 +233,35 @@ function _tmux-capture-pane() {
 
 function _tmux-choose-client() {
     [[ -n ${tmux_describe} ]] && print "Put a window into client choice mode" && return
-    __tmux-choose-stuff
+    local -a args
+    args=(
+        '-F[specify format of output]:format:__tmux-format'
+        '-t[choose a target window]:sessions:__tmux-windows'
+        '*:: :->tmpl'
+    )
+    _arguments ${args} && return
 }
 
 function _tmux-choose-session() {
     [[ -n ${tmux_describe} ]] && print "Put a window into session choice mode" && return
-    __tmux-choose-stuff
+    local -a args
+    args=(
+        '-F[specify format of output]:format:__tmux-format'
+        '-t[choose a target window]:sessions:__tmux-windows'
+        '*:: :->tmpl'
+    )
+    _arguments ${args} && return
 }
 
 function _tmux-choose-window() {
     [[ -n ${tmux_describe} ]] && print "Put a window into window choice mode" && return
-    __tmux-choose-stuff
+    local -a args
+    args=(
+        '-F[specify format of output]:format:__tmux-format'
+        '-t[choose a target window]:sessions:__tmux-windows'
+        '*:: :->tmpl'
+    )
+    _arguments ${args} && return
 }
 
 function _tmux-clear-history() {
@@ -238,6 +283,7 @@ function _tmux-command-prompt() {
     local state
     local -a args
     args=(
+        '-I[comma separated list of initial inputs]:initial-text:->ilist'
         '-p[list of prompts]:prompts:->plist'
         '-t[choose a target client]:clients:__tmux-clients'
         '*:: :->tmpl'
@@ -246,6 +292,9 @@ function _tmux-command-prompt() {
     if [[ ${state} == 'plist' ]]; then
         _message "comma seperated list of prompts"
         return
+    elif [[ ${state} == 'ilist' ]]; then
+        _message "comma seperated list of initial text"
+        return
     fi
     __tmux-lastarg ${state} 'tmpl' 1 "command template"
 }
@@ -255,10 +304,15 @@ function _tmux-confirm-before() {
     local state
     local -a args
     args=(
+        '-p[specify prompt]:prompt:->prompt'
         '-t[choose a target client]:clients:__tmux-clients'
         '*:: :->command_and_args'
     )
     _arguments -C ${args} && return
+    if [[ ${state} == 'prompt' ]]; then
+        _message 'prompt string'
+        return
+    fi
     __tmux-lastarg ${state} 'command_and_args' 1 "command string"
 }
 
@@ -309,39 +363,20 @@ function _tmux-copy-mode() {
 
 function _tmux-delete-buffer() {
     [[ -n ${tmux_describe} ]] && print "Delete a paste buffer" && return
-    local state session
     local -a args
-    local -ax bopts
-
-    args=(
-        '-b[choose a target buffer index]:panes:->buffer'
-        '-t[choose a target session]:panes:->session'
-    )
-    _arguments ${args}
-
-    case ${state} in
-        (session)
-            __tmux-sessions
-            return
-            ;;
-        (buffer)
-            session="$(__tmux-get-optarg -t "${words[@]}")"
-            ;;
-        (*) return ;;
-    esac
-    if [[ -n ${session} ]]; then
-        bopts=( -t ${session} )
-        __tmux-buffers
-        return
-    fi
-    bopts=()
-    __tmux-buffers
+    args=('-b[choose a target buffer index]:buffers:__tmux-buffers')
+    _arguments ${args} && return
 }
 
 function _tmux-detach-client() {
     [[ -n ${tmux_describe} ]] && print "Detach a client from the server" && return
     local -a args
-    args=('-t[choose a target client]:clients:__tmux-clients')
+    args=(
+        '-a[kill all clients except for the named by -t]'
+        '-P[send SIGHUP to parent process]'
+        '-s[choose a target session and kill its clients]:sessions:__tmux-sessions'
+        '-t[choose a target client]:clients:__tmux-clients'
+    )
     _arguments ${args}
 }
 
@@ -349,6 +384,7 @@ function _tmux-display-message() {
     [[ -n ${tmux_describe} ]] && print "Display a message in the status line" && return
     local -a args
     args=(
+        '-c[choose a target client]:clients:__tmux-clients'
         '-p[print message to stdout]'
         '-t[choose a target client]:clients:__tmux-clients'
         '*:: :->msg'
@@ -376,6 +412,10 @@ function _tmux-find-window() {
     local curcontext="${curcontext}" state
     local -a args
     args=(
+        '-C[match visible contents]'
+        '-F[specify format of output]:format:__tmux-format'
+        '-N[match window name]'
+        '-T[match window title]'
         '-t[choose a target window]:windows:__tmux-windows'
         '*:: :->pattern'
     )
@@ -394,6 +434,8 @@ function _tmux-if-shell() {
     [[ -n ${tmux_describe} ]] && print "Execute a tmux command if a shell-command succeeded" && return
     local -a args
     args=(
+        '-b[run shell command in background]'
+        '-F[do not execute shell command but use it as a string-value]'
         '1:shell command:'
         '2:tmux command:'
     )
@@ -404,6 +446,7 @@ function _tmux-join-pane() {
     [[ -n ${tmux_describe} ]] && print "Split a pane and move an existing one into the new space" && return
     local -a args
     args=(
+        '-b[join source pane left of or above target pane]'
         '-d[do not make the new window become the active one]'
         '-h[split horizontally]'
         '-v[split vertically]'
@@ -419,7 +462,7 @@ function _tmux-kill-pane() {
     [[ -n ${tmux_describe} ]] && print "Destroy a given pane" && return
     local -a args
     args=(
-        '-a[kill all panes, except current]'
+        '-a[kill all panes except the one specified by -t]'
         '-t[choose a target pane]:panes:__tmux-panes'
     )
     _arguments ${args}
@@ -433,14 +476,20 @@ function _tmux-kill-server() {
 function _tmux-kill-session() {
     [[ -n ${tmux_describe} ]] && print "Destroy a given session" && return
     local -a args
-    args=('-t[choose a target session]:sessions:__tmux-sessions')
+    args=(
+        '-a[kill all session except the one specified by -t]'
+        '-t[choose a target session]:sessions:__tmux-sessions'
+    )
     _arguments ${args}
 }
 
 function _tmux-kill-window() {
     [[ -n ${tmux_describe} ]] && print "Destroy a given window" && return
     local -a args
-    args=('-t[choose a target window]:windows:__tmux-windows')
+    args=(
+        '-a[kill all windows except the one specified by -t]'
+        '-t[choose a target window]:windows:__tmux-windows'
+    )
     _arguments ${args}
 }
 
@@ -466,13 +515,18 @@ function _tmux-link-window() {
 function _tmux-list-buffers() {
     [[ -n ${tmux_describe} ]] && print "List paste buffers of a session" && return
     local -a args
-    args=('-t[choose a session]:sessions:__tmux-sessions')
+    args=('-F[specify format of output]:format:__tmux-format')
     _arguments ${args} && return
 }
 
 function _tmux-list-clients() {
     [[ -n ${tmux_describe} ]] && print "List clients attached to server" && return
-    __tmux-nothing-else
+    local -a args
+    args=(
+        '-F[specify format of output]:format:__tmux-format'
+        '-t[choose a session]:sessions:__tmux-sessions'
+    )
+    _arguments ${args} && return
 }
 
 function _tmux-list-commands() {
@@ -490,52 +544,43 @@ function _tmux-list-keys() {
 function _tmux-list-panes() {
     [[ -n ${tmux_describe} ]] && print "List panes of a window" && return
     local -a args
-    args=('-t[choose a window]:windows:__tmux-windows')
+    args=(
+        '-a[list all panes the server possesses]'
+        '-F[specify format of output]:format:__tmux-format'
+        '-s[if specified, -t chooses a session]'
+        # TODO: Use __tmux-windows or __tmux-sessions depending on -s.
+        '-t[choose a window]:windows:__tmux-windows'
+    )
     _arguments ${args} && return
 }
 
 function _tmux-list-sessions() {
     [[ -n ${tmux_describe} ]] && print "List sessions managed by server" && return
-    __tmux-nothing-else
+    local -a args
+    args=('-F[specify format of output]:format:__tmux-format')
+    _arguments ${args} && return
 }
 
 function _tmux-list-windows() {
     [[ -n ${tmux_describe} ]] && print "List windows of a session" && return
     local -a args
-    args=('-t[choose a session]:sessions:__tmux-sessions')
+    args=(
+        '-a[list all windows the tmux server possesses]'
+        '-F[specify format of output]:format:__tmux-format'
+        '-t[choose a session]:sessions:__tmux-sessions'
+    )
     _arguments ${args} && return
 }
 
 function _tmux-load-buffer() {
     [[ -n ${tmux_describe} ]] && print "Load a file into a paste buffer" && return
-    local state session
     local -a args
-    local -ax bopts
 
     args=(
-        '-b[choose a target buffer index]:panes:->buffer'
-        '-t[choose a target session]:panes:->session'
+        '-b[choose a target buffer index]:panes:__tmux-buffers'
         '1:file name:_files -g "*(-.)"'
     )
-    _arguments ${args}
-
-    case ${state} in
-        (session)
-            __tmux-sessions
-            return
-            ;;
-        (buffer)
-            session="$(__tmux-get-optarg -t "${words[@]}")"
-            ;;
-        (*) return ;;
-    esac
-    if [[ -n ${session} ]]; then
-        bopts=( -t ${session} )
-        __tmux-buffers
-        return
-    fi
-    bopts=()
-    __tmux-buffers
+    _arguments ${args} && return
 }
 
 function _tmux-lock-client() {
@@ -562,7 +607,9 @@ function _tmux-move-window() {
     local -a args
     args=(
         '-d[do not make the new window become the active one]'
+        '-k[kill the target window if it exists]'
         '-s[choose source window]:window:__tmux-windows'
+        '-r[renumber windows in session in sequential order]'
         '-t[choose destination window]:window:__tmux-windows'
     )
     _arguments ${args}
@@ -572,11 +619,17 @@ function _tmux-new-session() {
     [[ -n ${tmux_describe} ]] && print "Create a new session" && return
     local -a args
     args=(
-        '-d[do not attach new session to current terminal]'
         '-A[attach to existing session if it already exists]'
+        '-c[specify working directory for the session]:directory:_path_files -g "*(-/)"'
+        '-d[do not attach new session to current terminal]'
+        '-D[in case of -A behave like attach-session'\''s -d]'
+        '-F[specify format of output]:format:__tmux-format'
         '-n[name the initial window]:window name'
+        '-P[print information about new session after it is created]'
         '-s[name the session]:session name:__tmux-sessions'
         '-t[specify target session]:sessions:__tmux-sessions'
+        '-x[specify width]:width:_guard "[0-9]#" "numeric value"'
+        '-y[specify height]:height:_guard "[0-9]#" "numeric value"'
         '*:: :_command'
     )
     _arguments -s ${args}
@@ -586,9 +639,13 @@ function _tmux-new-window() {
     [[ -n ${tmux_describe} ]] && print "Create a new window" && return
     local -a args
     args=(
+        '-a[insert new window at next free index from -t]'
+        '-c[specify working directory for the session]:directory:_path_files -g "*(-/)"'
         '-d[do not make the new window become the active one]'
+        '-F[specify format of output]:format:__tmux-format'
         '-k[destroy it if the specified window exists]'
         '-n[specify a window name]:window name:'
+        '-P[print information about new window after it is created]'
         '-t[specify target window]:windows:__tmux-windows'
         '*:: :_command'
     )
@@ -606,7 +663,7 @@ function _tmux-next-window() {
     [[ -n ${tmux_describe} ]] && print "Move to the next window in a session" && return
     local -a args
     args=(
-        '-a[move to the next window with activity]'
+        '-a[move to the next window with an alert]'
         '-t[choose target session]:session:__tmux-sessions'
     )
     _arguments ${args}
@@ -616,9 +673,11 @@ function _tmux-paste-buffer() {
     [[ -n ${tmux_describe} ]] && print "Insert a paste buffer into the window" && return
     local -a args
     args=(
+        '-b[choose buffer]:source buffer:__tmux-buffers'
         '-d[remove buffer from stack after pasting]'
+        '-p[use bracketed paste mode if the application requested it]'
         '-r[do not replace LF with CR when pasting]'
-        '-b[choose buffer]:source buffer:__tmux-buffers'
+        '-s[specify separator]:separator:'
         '-t[choose target window]:window:__tmux-windows'
     )
     _arguments ${args}
@@ -647,7 +706,7 @@ function _tmux-previous-window() {
     [[ -n ${tmux_describe} ]] && print "Move to the previous window in a session" && return
     local -a args
     args=(
-        '-a[move to the previous window with activity]'
+        '-a[move to the previous window with an alert]'
         '-t[choose target session]:session:__tmux-sessions'
     )
     _arguments ${args}
@@ -656,7 +715,10 @@ function _tmux-previous-window() {
 function _tmux-refresh-client() {
     [[ -n ${tmux_describe} ]] && print "Refresh a client" && return
     local -a args
-    args=('-t[choose target client]:client:__tmux-clients')
+    args=(
+        '-S[Only update the client'\''s status bar]'
+        '-t[choose target client]:client:__tmux-clients'
+    )
     _arguments ${args}
 }
 
@@ -690,6 +752,9 @@ function _tmux-resize-pane() {
         '-R[resize to the right]'
         '-U[resize upward]'
         '-t[choose target pane]:pane:__tmux-panes'
+        '-x[specify width]:width:_guard "[0-9]#" "numeric value"'
+        '-y[specify height]:height:_guard "[0-9]#" "numeric value"'
+        '-Z[toggle zoom of pane]'
         '1::adjustment (defaults to one):_guard "[0-9]#" "numeric value"'
     )
     _arguments ${args}
@@ -719,43 +784,31 @@ function _tmux-rotate-window() {
 
 function _tmux-run-shell() {
     [[ -n ${tmux_describe} ]] && print "Execute a command without creating a new window" && return
-    _command
+    local -a args
+    args=(
+        '-b[run shell command in background]'
+        '-t[choose target pane]:pane:__tmux-panes'
+        '*::command:_command'
+    )
+    _arguments ${args}
 }
 
 function _tmux-save-buffer() {
     [[ -n ${tmux_describe} ]] && print "Save a paste buffer to a file" && return
-    local state session
     local -a args
-    local -ax bopts
 
     args=(
-        '-b[choose a target buffer index]:buffer:->buffer'
-        '-t[choose a target session]:buffer:->session'
+        '-a[append to rather than overwriting file]'
+        '-b[choose a target buffer index]:buffer:__tmux-buffers'
     )
-    _arguments ${args}
-
-    case ${state} in
-        (session)
-            __tmux-sessions
-            return
-            ;;
-        (buffer)
-            session="$(__tmux-get-optarg -t "${words[@]}")"
-            ;;
-        (*) return ;;
-    esac
-    if [[ -n ${session} ]]; then
-        bopts=( -t ${session} )
-        __tmux-buffers
-        return
-    fi
-    bopts=()
-    __tmux-buffers
+    _arguments ${args} && return
 }
 
 function _tmux-select-layout() {
     [[ -n ${tmux_describe} ]] && print "Choose a layout for a window" && return
     args=(
+        '-n[behave like next-layout]'
+        '-p[behave like previous-layout]'
         '-t[choose a target window]:target window:__tmux-windows'
         '*::layout name:__tmux-layouts'
     )
@@ -765,7 +818,16 @@ function _tmux-select-layout() {
 function _tmux-select-pane() {
     [[ -n ${tmux_describe} ]] && print "Make a pane the active one in the window" && return
     local -a args
-    args=('-t[choose a target pane]:panes:__tmux-panes')
+    args=(
+        '-D[Move to the pane down of this]'
+        '-d[disable input to the pane]'
+        '-e[enable input to the pane]'
+        '-l[behave like last-pane]'
+        '-L[Move to the pane left of this]'
+        '-R[Move to the pane right of this]'
+        '-U[Move to the pane above this]'
+        '-t[choose a target pane]:panes:__tmux-panes'
+    )
     _arguments ${args} && return
 }
 
@@ -779,7 +841,13 @@ function _tmux-select-prompt() {
 function _tmux-select-window() {
     [[ -n ${tmux_describe} ]] && print "Select a window" && return
     local -a args
-    args=('-t[choose a target window]:windows:__tmux-windows')
+    args=(
+        '-l[behave like last-window]'
+        '-n[behave like next-window]'
+        '-p[behave like previous-window]'
+        '-T[if selected window is the current behave like last-window]'
+        '-t[choose a target window]:windows:__tmux-windows'
+    )
     _arguments ${args} && return
 }
 
@@ -788,6 +856,8 @@ function _tmux-send-keys() {
     local curcontext="${curcontext}" state
     local -a args
     args=(
+        '-l[disable key name lookup and send data literally]'
+        '-R[reset terminal state]'
         '-t[choose a target pane]:panes:__tmux-panes'
         '*:: :->key'
     )
@@ -798,7 +868,10 @@ function _tmux-send-keys() {
 function _tmux-send-prefix() {
     [[ -n ${tmux_describe} ]] && print "Send the prefix key to a window" && return
     local -a args
-    args=('-t[choose a target pane]:panes:__tmux-panes')
+    args=(
+        '-2[send secondary prefix key]'
+        '-t[choose a target pane]:panes:__tmux-panes'
+    )
     _arguments ${args}
 }
 
@@ -809,33 +882,16 @@ function _tmux-server-info() {
 
 function _tmux-set-buffer() {
     [[ -n ${tmux_describe} ]] && print "Set contents of a paster buffer" && return
-    local state session
+    local state
     local -a args
-    local -ax bopts
-
     args=(
-        '-b[choose a target buffer index]:panes:->buffer'
-        '-t[choose a target session]:panes:->session'
+        '-a[append to rather than overwriting target buffer]'
+        '-b[choose a target buffer index]:panes:__tmux-buffer'
+        '-n[specify new buffer name]:buffer-name:'
+        '*:: :->data'
     )
-    _arguments ${args}
-
-    case ${state} in
-        (session)
-            __tmux-sessions
-            return
-            ;;
-        (buffer)
-            session="$(__tmux-get-optarg -t "${words[@]}")"
-            ;;
-        (*) return ;;
-    esac
-    if [[ -n ${session} ]]; then
-        bopts=( -t ${session} )
-        __tmux-buffers
-        return
-    fi
-    bopts=()
-    __tmux-buffers
+    _arguments ${args} && return
+    __tmux-lastarg ${state} 'data' 1 "data"
 }
 
 function _tmux-set-environment() {
@@ -904,33 +960,9 @@ function _tmux-set-window-option() {
 
 function _tmux-show-buffer() {
     [[ -n ${tmux_describe} ]] && print "Display the contents of a paste buffer" && return
-    local state session
     local -a args
-    local -ax bopts
-
-    args=(
-        '-b[choose a target buffer index]:panes:->buffer'
-        '-t[choose a target session]:panes:->session'
-    )
-    _arguments ${args}
-
-    case ${state} in
-        (session)
-            __tmux-sessions
-            return
-            ;;
-        (buffer)
-            session="$(__tmux-get-optarg -t "${words[@]}")"
-            ;;
-        (*) return ;;
-    esac
-    if [[ -n ${session} ]]; then
-        bopts=( -t ${session} )
-        __tmux-buffers
-        return
-    fi
-    bopts=()
-    __tmux-buffers
+    args=('-b[choose a target buffer index]:panes:->buffer')
+    _arguments ${args} && return
 }
 
 function _tmux-show-environment() {
@@ -945,7 +977,13 @@ function _tmux-show-environment() {
 
 function _tmux-show-messages() {
     [[ -n ${tmux_describe} ]] && print "Show client"\'"s message log" && return
-    args=('-t[choose target client]:client:__tmux-clients')
+    local -a args
+    args=(
+        '-I[show debugging information about the tmux server]'
+        '-J[show debugging information about running jobs]'
+        '-T[show debugging information about involved terminals]'
+        '-t[choose target client]:client:__tmux-clients'
+    )
     _arguments ${args}
 }
 
@@ -978,12 +1016,14 @@ function _tmux-split-window() {
     [[ -n ${tmux_describe} ]] && print "Splits a pane into two" && return
     local -a args
     args=(
+        '-b[create new pane left of or above target pane]'
         '-d[do not make the new window become the active one]'
+        '-F[specify format of output]:format:__tmux-format'
         '-h[split horizontally]'
         '-v[split vertically]'
         '-l[define new pane'\''s size]: :_guard "[0-9]#" "numeric value"'
         '-p[define new pane'\''s size in percent]: :_guard "[0-9]#" "numeric value"'
-        # Yes, __tmux_pane is correct here. The behaviour was changed
+        # Yes, __tmux-panes is correct here. The behaviour was changed
         # in recent tmux versions and makes more sense. Except that
         # changing the command's name might annoy users. So it stays like
         # this.
@@ -1034,6 +1074,10 @@ function _tmux-switch-client() {
     local -a args
     args=(
         '-c[choose a target client]:client:__tmux-clients'
+        '-l[move client to last session]'
+        '-n[move client to next session]'
+        '-p[move client to previous session]'
+        '-r[toggle read-only flag of client]'
         '-t[choose a target window]:window:__tmux-windows'
     )
     _arguments ${args}
@@ -1046,6 +1090,7 @@ function _tmux-unbind-key() {
 
     ow=( "${words[@]}" )
     args=(
+        '-a[Remove all key bindings]'
         '-c[kill the window if it is only in one session]'
         '-n[remove a non-prefix binding]'
         '-t[choose a key table]:key table:__tmux-key-tables'
@@ -1129,6 +1174,10 @@ function __tmux-clients() {
     _describe -t clients 'clients' clients
 }
 
+function __tmux-format() {
+    _message 'not implemented yet'
+}
+
 function __tmux-colours() {
     local -a colnames
     colnames=( default black red green yellow blue magenta cyan white colourN:"replace N by a number between 0 and 255" )
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 03/18] _tmux: Add support for new sub-commands
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
  2015-08-10 13:27 ` [PATCH 01/18] _tmux: Update command line options Frank Terbeck
  2015-08-10 13:27 ` [PATCH 02/18] _tmux: Update options for supported commands Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 04/18] _tmux: Remove dead code Frank Terbeck
                   ` (16 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 100 +++++++++++++++++++++++++++++++++++++-----
 1 file changed, 88 insertions(+), 12 deletions(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 7fb328e..92c9190 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -43,18 +43,10 @@
 #
 # TODO:
 #
-# Missing sub-commands:
-#
-#   - choose-tree
-#   - last-pane
-#   - move-pane
-#   - respawn-pane
-#   - choose-buffer
-#   - wait-for
-#
-# In addition, the way options (set/show etc) are handled needs to be reviewed.
-# For example, set-option can set every type of option now. I hope this is
-# rather simple to improve.
+#   The way options (set/show etc) are handled needs to be reviewed.
+#   For example, set-option can set every type of option now. I hope
+#   this is rather simple to improve. Also, there are new options that
+#   need to be supported.
 
 # Global variables; setup the first time _tmux is called.
 # For $_tmux_commands[] generation, see the very end of this file.
@@ -88,9 +80,11 @@ _tmux_aliasmap=(
     killp       kill-pane
     killw       kill-window
     last        last-window
+    lastp       last-pane
     linkw       link-window
     lsp         list-panes
     lsw         list-windows
+    movep       move-pane
     movew       move-window
     neww        new-window
     nextl       next-layout
@@ -99,6 +93,7 @@ _tmux_aliasmap=(
     prev        previous-window
     renamew     rename-window
     resizep     resize-pane
+    respawnp    respawn-pane
     respawnw    respawn-window
     rotatew     rotate-window
     selectl     select-layout
@@ -146,6 +141,7 @@ _tmux_aliasmap=(
     lock        lock-server
     run         run-shell
     info        server-info
+    wait        wait-for
 )
 
 # --- Sub-command functions ---
@@ -231,6 +227,17 @@ function _tmux-capture-pane() {
     _arguments ${args}
 }
 
+function _tmux-choose-buffer() {
+    [[ -n ${tmux_describe} ]] && print "Put a window into buffer choice mode" && return
+    local -a args
+    args=(
+        '-F[specify format of output]:format:__tmux-format'
+        '-t[choose a target window]:sessions:__tmux-windows'
+        '*:: :->tmpl'
+    )
+    _arguments ${args} && return
+}
+
 function _tmux-choose-client() {
     [[ -n ${tmux_describe} ]] && print "Put a window into client choice mode" && return
     local -a args
@@ -253,6 +260,23 @@ function _tmux-choose-session() {
     _arguments ${args} && return
 }
 
+function _tmux-choose-tree() {
+    [[ -n ${tmux_describe} ]] && print "Put a window into tree choice mode" && return
+    local -a args
+    args=(
+        '-b[override default session command]:session-command:'
+        '-c[override default window command]:window-command:'
+        '-S[specify session format]:session-format:__tmux-formats'
+        '-s[choose among sessions]'
+        '-t[choose a target window]:sessions:__tmux-windows'
+        '-u[show generated tree uncollapsed at startup]'
+        '-W[specify window format]:window-format:__tmux-formats'
+        '-w[choose among windows]'
+        '*:: :->tmpl'
+    )
+    _arguments ${args} && return
+}
+
 function _tmux-choose-window() {
     [[ -n ${tmux_describe} ]] && print "Put a window into window choice mode" && return
     local -a args
@@ -493,6 +517,17 @@ function _tmux-kill-window() {
     _arguments ${args}
 }
 
+function _tmux-last-pane() {
+    [[ -n ${tmux_describe} ]] && print "Select the previously selected pane" && return
+    local -a args
+    args=(
+        '-d[disable input to the pane]'
+        '-e[enable input to the pane]'
+        '-t[choose a session]:sessions:__tmux-sessions'
+    )
+    _arguments ${args} && return
+}
+
 function _tmux-last-window() {
     [[ -n ${tmux_describe} ]] && print "Select the previously selected window" && return
     local -a args
@@ -602,6 +637,22 @@ function _tmux-lock-session() {
     _arguments ${args} && return
 }
 
+function _tmux-move-pane() {
+    [[ -n ${tmux_describe} ]] && print "Move a pane into a new space" && return
+    local -a args
+    args=(
+        '-b[join source pane left of or above target pane]'
+        '-d[do not make the new window become the active one]'
+        '-h[split horizontally]'
+        '-v[split vertically]'
+        '-l[define new pane'\''s size]: :_guard "[0-9]#" "numeric value"'
+        '-p[define new pane'\''s size in percent]: :_guard "[0-9]#" "numeric value"'
+        '-s[choose source pane]:window:__tmux-panes'
+        '-t[choose target pane]:window:__tmux-panes'
+    )
+    _arguments ${args} && return
+}
+
 function _tmux-move-window() {
     [[ -n ${tmux_describe} ]] && print "Move a window to another" && return
     local -a args
@@ -760,6 +811,17 @@ function _tmux-resize-pane() {
     _arguments ${args}
 }
 
+function _tmux-respawn-pane() {
+    [[ -n ${tmux_describe} ]] && print "Reuse a pane in which a command has exited" && return
+    local -a args
+    args=(
+        '-k[kill window if it is in use]'
+        '-t[choose target pane]:window:__tmux-pane'
+        '*::command:_command'
+    )
+    _arguments ${args}
+}
+
 function _tmux-respawn-window() {
     [[ -n ${tmux_describe} ]] && print "Reuse a window in which a command has exited" && return
     local -a args
@@ -1123,6 +1185,20 @@ function _tmux-up-pane() {
     _arguments ${args}
 }
 
+function _tmux-wait-for() {
+    [[ -n ${tmux_describe} ]] && print "Wait for an event or trigger it" && return
+    local state
+    local -a args
+    args=(
+        '-L[lock the named channel]'
+        '-S[send signal to channel]'
+        '-U[unlock the named channel]'
+        '*:: :->channel'
+    )
+    _arguments ${args} && return
+    __tmux-lastarg ${state} 'channel' 1 "event channel"
+}
+
 # --- Utility functions ---
 # They should be called __tmux-*() and kept seperate from the
 # sub-command functions.
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 04/18] _tmux: Remove dead code
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (2 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 03/18] _tmux: Add support for new sub-commands Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 05/18] _tmux: Don't unset, set empty in local scope Frank Terbeck
                   ` (15 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 92c9190..a6e5e4a 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1231,18 +1231,6 @@ function __tmux-bound-keys() {
     _describe -t keys 'keys' keys
 }
 
-function __tmux-choose-stuff() {
-    # choose-{client,session,window} accept exactly the same arguments, so...
-    local curcontext="${curcontext}" state
-    local -a args
-    args=(
-        '-t[choose a target pane]:panes:__tmux-panes'
-        '*:: :->tmpl'
-    )
-    _arguments ${args} && return
-    __tmux-lastarg ${state} 'tmpl' 1 "tmux command template"
-}
-
 function __tmux-clients() {
     local expl
     local -a clients
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 05/18] _tmux: Don't unset, set empty in local scope
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (3 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 04/18] _tmux: Remove dead code Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 06/18] _tmux: No need to unset local variables Frank Terbeck
                   ` (14 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index a6e5e4a..91d74b8 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1606,7 +1606,7 @@ function _tmux() {
     local mode state ret=1
     local -a args
     local -x tmuxcommand
-    unset tmux_describe
+    local tmux_describe=
 
     args=(
         '-2[force using 256 colours]'
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 06/18] _tmux: No need to unset local variables
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (4 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 05/18] _tmux: Don't unset, set empty in local scope Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 07/18] _tmux: Replay all arguments when dispatching to new _tmux() Frank Terbeck
                   ` (13 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 1 -
 1 file changed, 1 deletion(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 91d74b8..a59ffde 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1675,6 +1675,5 @@ for f in ${(M)${(k)functions}:#_tmux-*} ; do
     _tmux_commands+=( "${f#_tmux-}${desc:+:$desc}" )
     [[ -n ${rev[${f#_tmux-}]} ]] && _tmux_aliases+=( "${rev[${f#_tmux-}]}${desc:+:$desc}" )
 done
-unset desc f rev tmux_describe
 
 _tmux
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 07/18] _tmux: Replay all arguments when dispatching to new _tmux()
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (5 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 06/18] _tmux: No need to unset local variables Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 08/18] _tmux: "local -x" serves no purpose Frank Terbeck
                   ` (12 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index a59ffde..2eaf0cd 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1676,4 +1676,4 @@ for f in ${(M)${(k)functions}:#_tmux-*} ; do
     [[ -n ${rev[${f#_tmux-}]} ]] && _tmux_aliases+=( "${rev[${f#_tmux-}]}${desc:+:$desc}" )
 done
 
-_tmux
+_tmux "$@"
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 08/18] _tmux: "local -x" serves no purpose
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (6 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 07/18] _tmux: Replay all arguments when dispatching to new _tmux() Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 09/18] _tmux: options => session_options Frank Terbeck
                   ` (11 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 2eaf0cd..76dce06 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1605,7 +1605,7 @@ function _tmux() {
     local curcontext="${curcontext}"
     local mode state ret=1
     local -a args
-    local -x tmuxcommand
+    local tmuxcommand
     local tmux_describe=
 
     args=(
@@ -1665,7 +1665,7 @@ function _tmux() {
 # description generation follows; only done on 1st _tmux call.
 local f desc
 local -A rev
-local -x tmux_describe
+local tmux_describe
 tmux_describe='yes, please'
 for f in ${(k)_tmux_aliasmap} ; do
     rev+=( ${_tmux_aliasmap[$f]} $f )
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 09/18] _tmux: options => session_options
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (7 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 08/18] _tmux: "local -x" serves no purpose Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 10/18] Add helper script to check state of _tmux completion Frank Terbeck
                   ` (10 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 76dce06..18cbe27 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1423,9 +1423,9 @@ function __tmux-option-guard() {
     esac
 }
 
-function __tmux-options() {
-    local -a tmux_options
-    tmux_options=(
+function __tmux-session-options() {
+    local -a tmux_session_options
+    tmux_session_options=(
         'base-index:define where to start numbering'
         'bell-action:set action on window bell'
         'buffer-limit:number of buffers kept per session'
@@ -1479,7 +1479,7 @@ function __tmux-options() {
         'visual-bell:use visual bell instead of audible'
         'visual-content:display status line messages upon content changes'
     )
-    _describe -t tmux-options 'tmux option' tmux_options
+    _describe -t tmux-options 'tmux session option' tmux_session_options
 }
 
 function __tmux-options-complete() {
@@ -1488,7 +1488,7 @@ function __tmux-options-complete() {
     case ${state} in
         name_or_value)
             if (( CURRENT == 1 )) && [[ ${mode} == 'session' ]]; then
-                __tmux-options
+                __tmux-session-options
             elif (( CURRENT == 1 )) && [[ ${mode} == 'server' ]]; then
                 __tmux-server-options
             elif (( CURRENT == 1 )) && [[ ${mode} == 'window' ]]; then
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 10/18] Add helper script to check state of _tmux completion
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (8 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 09/18] _tmux: options => session_options Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 15:20   ` wrapping "local" (was: Re: [PATCH 10/18] Add helper script to check state of _tmux completion) Frank Terbeck
  2015-08-10 13:27 ` [PATCH 11/18] _tmux: Remove old sub-commands and their aliases Frank Terbeck
                   ` (9 subsequent siblings)
  19 siblings, 1 reply; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Util/check-tmux-state | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 216 insertions(+)
 create mode 100644 Util/check-tmux-state

diff --git a/Util/check-tmux-state b/Util/check-tmux-state
new file mode 100644
index 0000000..7e29338
--- /dev/null
+++ b/Util/check-tmux-state
@@ -0,0 +1,216 @@
+#!/bin/zsh -f
+
+# Tmux has lots of options and sub-commands. It's very tedious to manually
+# check if the actual command's idea of all this matches the completion
+# function. So this is a helper script that automates checking the state of
+# _tmux.
+#
+# You need to call it like this, with a running tmux server:
+#
+# zsh -f check-tmux-state <path-to-tmux-binary> <path-to-_tmux-function>
+#
+# The script will tell you the differences in available and supported
+# sub-commands, command aliases, server options, session options and
+# window-options.
+#
+# It also checks if options have moved from one scope to another. If this
+# happens, then the option in question also appears in the "new/old" listings
+# of the involved scopes. First fix the scope changes, then the "new/old" lists
+# are accurate.
+
+emulate zsh
+setopt extended_glob null_glob no_octal_zeroes
+
+if (( $#argv != 2 )); then
+    printf 'usage: zsh -f check-tmux-state <tmux-binary> <_tmux-function>\n'
+    exit 1
+fi
+
+printf ' -!- Checking status of _tmux completion function definition -!-\n'
+
+autoload -Uz colors
+colors
+
+tmux=$1
+func=$2
+
+differences=none
+
+# We'll source the _tmux file and call a bunch of its functions to gather
+# information. For that, we need to put a few stubs into place so sourcing the
+# file doesn't blow up in our face.
+
+function _arguments () { }
+function _describe () { }
+function local () { }
+
+typeset -A rev
+
+source $func
+__tmux-server-options
+__tmux-session-options
+__tmux-window-options
+
+# Subcommand helper functions are defined like "function _tmux-foo() {"
+# in the _tmux function definition file.
+typeset -a supported_commands
+supported_commands=( $( grep 'function *\<_tmux-' $func |
+                        sed -e 's,^.*\<_tmux-,,' -e 's,(.*$,,' ) )
+
+# Ask tmux for available commands:
+typeset -a available_commands
+available_commands=( $( $tmux list-commands | cut -f1 -d' ' ) )
+
+# Ask tmux for available aliases:
+typeset -A available_aliases
+available_aliases=( $( $tmux list-commands |
+                       grep '^[a-z-]* *(' |
+                       sed -e 's,^\([a-z-]*\) *(\([a-z-]*\))\(.*\)$,\2 \1,' ) )
+
+# Gather information about options:
+typeset -a supported_session_options
+supported_session_options=( ${"${tmux_session_options[@]}"%%:*} )
+typeset -a available_session_options
+available_session_options=( $( $tmux show-options -g | cut -f1 -d' ' ) )
+
+typeset -a available_server_options
+supported_server_options=( ${"${tmux_server_options[@]}"%%:*} )
+typeset -a supported_server_options
+available_server_options=( $( $tmux show-options -s -g | cut -f1 -d' ' ) )
+
+typeset -a supported_window_options
+supported_window_options=( ${"${tmux_window_options[@]}"%%:*} )
+typeset -a available_window_options
+available_window_options=( $( $tmux show-options -w -g | cut -f1 -d' ' ) )
+
+typeset -a supported available
+
+function find_new () {
+    local i
+    new=()
+    for i in "${available[@]}"; do
+        [[ -z ${supported[(r)$i]} ]] && new+=( $i )
+    done
+}
+
+function find_old () {
+    local i
+    old=()
+    for i in "${supported[@]}"; do
+        [[ -z ${available[(r)$i]} ]] && old+=( $i )
+    done
+}
+
+function compare_sets() {
+    name=$1
+    local -a old new
+    new=()
+    old=()
+    find_old
+    find_new
+    if (( $#old > 0 )) || (( $#new > 0 )); then
+        printf '\n%sDifferences with %s:%s\n' ${fg[yellow]} $name $reset_color
+        differences=some
+        if (( $#new > 0 )); then
+            printf '%sNew:%s' ${fg[green]} $reset_color
+            printf ' %s' "${new[@]}"
+            printf '\n'
+        fi
+        if (( $#old > 0 )); then
+            printf '%sOld:%s' ${fg[red]} $reset_color
+            printf ' %s' "${old[@]}"
+            printf '\n'
+        fi
+    fi
+}
+
+function find_changed_scope() {
+    name=$1
+    local -a changes
+    local i av
+    changes=()
+    for i in "${supported[@]}"; do
+        av=${available[(r)$i]}
+        [[ -n $av ]] && changes+=( $av )
+    done
+    if (( $#changes > 0 )); then
+        differences=some
+        printf '\n%sDifferences with scope %s:%s\n' \
+               ${fg[yellow]} $name $reset_color
+        printf '%sChanged:%s' ${fg[green]} $reset_color
+        printf ' %s' "${changes[@]}"
+        printf '\n'
+    fi
+}
+
+supported=( "${supported_session_options[@]}" )
+available=( "${available_server_options[@]}" )
+find_changed_scope 'session=>server'
+
+supported=( "${supported_server_options[@]}" )
+available=( "${available_session_options[@]}" )
+find_changed_scope 'server=>session'
+
+supported=( "${supported_window_options[@]}" )
+available=( "${available_session_options[@]}" )
+find_changed_scope 'window=>session'
+
+supported=( "${supported_session_options[@]}" )
+available=( "${available_window_options[@]}" )
+find_changed_scope 'session=>window'
+
+supported=( "${supported_window_options[@]}" )
+available=( "${available_server_options[@]}" )
+find_changed_scope 'window=>server'
+
+supported=( "${supported_server_options[@]}" )
+available=( "${available_window_options[@]}" )
+find_changed_scope 'server=>window'
+
+supported=( "${supported_commands[@]}" )
+available=( "${available_commands[@]}" )
+compare_sets commands
+
+supported=( "${supported_session_options[@]}" )
+available=( "${available_session_options[@]}" )
+compare_sets session_options
+
+supported=( "${supported_server_options[@]}" )
+available=( "${available_server_options[@]}" )
+compare_sets server_options
+
+supported=( "${supported_window_options[@]}" )
+available=( "${available_window_options[@]}" )
+compare_sets window_options
+
+typeset -a alias_messages
+for i in "${(k)_tmux_aliasmap[@]}"; do
+    su=${_tmux_aliasmap[$i]}
+    av=${available_aliases[$i]}
+    if [[ -z $av ]]; then
+        alias_messages+=( "${fg[red]}Old alias${reset_color}: $i ($su)" )
+    elif [[ $av != $su ]]; then
+        alias_messages+=( "Changed alias $i: is ($av) was ($su)" )
+    fi
+done
+for i in "${(k)available_aliases[@]}"; do
+    su=${_tmux_aliasmap[$i]}
+    av=${available_aliases[$i]}
+    if [[ -z $su ]]; then
+        alias_messages+=( "${fg[green]}New alias${reset_color}: $i ($av)" )
+    fi
+done
+if (( $#alias_messages > 0 )); then
+    differences=some
+    printf '\n%sDifferences with %s:%s\n' ${fg[yellow]} "aliases" $reset_color
+    for i in "${alias_messages[@]}"; do
+        printf '%s\n' $i
+    done
+fi
+
+if [[ $differences == none ]]; then
+    printf '\n... _tmux seems to be up to date!\n'
+else
+    printf '\n'
+fi
+exit 0
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 11/18] _tmux: Remove old sub-commands and their aliases
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (9 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 10/18] Add helper script to check state of _tmux completion Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 12/18] _tmux: Add new command aliases Frank Terbeck
                   ` (8 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 59 -------------------------------------------
 1 file changed, 59 deletions(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 18cbe27..55f6144 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -74,7 +74,6 @@ _tmux_aliasmap=(
     breakp      break-pane
     capturep    capture-pane
     displayp    display-panes
-    downp       down-pane
     findw       find-window
     joinp       join-pane
     killp       kill-pane
@@ -103,7 +102,6 @@ _tmux_aliasmap=(
     swapp       swap-pane
     swapw       swap-window
     unlinkw     unlink-window
-    upp         up-pane
 
     # key bindings
     bind        bind-key
@@ -127,7 +125,6 @@ _tmux_aliasmap=(
 
     # buffers
     clearhist   clear-history
-    copyb       copy-buffer
     deleteb     delete-buffer
     lsb         list-buffers
     loadb       load-buffer
@@ -340,41 +337,6 @@ function _tmux-confirm-before() {
     __tmux-lastarg ${state} 'command_and_args' 1 "command string"
 }
 
-function _tmux-copy-buffer() {
-    [[ -n ${tmux_describe} ]] && print "Copy session paste buffers" && return
-    local state session
-    local -a args
-    local -ax bopts
-
-    args=(
-        '-a[choose a source buffer index]:buffer:->srcbuf'
-        '-b[choose a destination buffer index]:buffer:->dstbuf'
-        '-s[choose a source session]:session:->srcsession'
-        '-t[choose a destination session]:session:->dstsession'
-    )
-    _arguments ${args}
-
-    case ${state} in
-        ((src|dst)session)
-            __tmux-sessions
-            return
-            ;;
-        (srcbuf)
-            session="$(__tmux-get-optarg -s "${words[@]}")"
-            ;;
-        (srcbuf)
-            session="$(__tmux-get-optarg -t "${words[@]}")"
-            ;;
-    esac
-    if [[ -n ${session} ]]; then
-        bopts=( -t ${session} )
-        __tmux-buffers
-        return
-    fi
-    bopts=()
-    __tmux-buffers
-}
-
 function _tmux-copy-mode() {
     [[ -n ${tmux_describe} ]] && print "Enter copy mode" && return
     local -a args
@@ -424,13 +386,6 @@ function _tmux-display-panes() {
     _arguments ${args}
 }
 
-function _tmux-down-pane() {
-    [[ -n ${tmux_describe} ]] && print "Move down a pane" && return
-    local -a args
-    args=('-t[choose a target pane]:panes:__tmux-panes')
-    _arguments ${args}
-}
-
 function _tmux-find-window() {
     [[ -n ${tmux_describe} ]] && print "Search for a pattern in windows" && return
     local curcontext="${curcontext}" state
@@ -893,13 +848,6 @@ function _tmux-select-pane() {
     _arguments ${args} && return
 }
 
-function _tmux-select-prompt() {
-    [[ -n ${tmux_describe} ]] && print "Open a prompt to enter a window index" && return
-    local -a args
-    args=('-t[choose a target client]:clients:__tmux-clients')
-    _arguments ${args} && return
-}
-
 function _tmux-select-window() {
     [[ -n ${tmux_describe} ]] && print "Select a window" && return
     local -a args
@@ -1178,13 +1126,6 @@ function _tmux-unlink-window() {
     _arguments ${args}
 }
 
-function _tmux-up-pane() {
-    [[ -n ${tmux_describe} ]] && print "Move up a pane" && return
-    local -a args
-    args=('-t[choose a target pane]:panes:__tmux-panes')
-    _arguments ${args}
-}
-
 function _tmux-wait-for() {
     [[ -n ${tmux_describe} ]] && print "Wait for an event or trigger it" && return
     local state
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 12/18] _tmux: Add new command aliases
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (10 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 11/18] _tmux: Remove old sub-commands and their aliases Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 13/18] _tmux: Fix options with changed scope Frank Terbeck
                   ` (7 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 55f6144..ce15e91 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -58,6 +58,8 @@ _tmux_aliasmap=(
     attach      attach-session
     detach      detach-client
     has         has-session
+    lockc       lock-client
+    locks       lock-session
     lsc         list-clients
     lscm        list-commands
     ls          list-sessions
@@ -90,6 +92,7 @@ _tmux_aliasmap=(
     next        next-window
     pipep       pipe-pane
     prev        previous-window
+    prevl       previous-layout
     renamew     rename-window
     resizep     resize-pane
     respawnp    respawn-pane
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 13/18] _tmux: Fix options with changed scope
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (11 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 12/18] _tmux: Add new command aliases Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 14/18] _tmux: Remove support for old options Frank Terbeck
                   ` (6 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index ce15e91..70a9f26 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1256,11 +1256,9 @@ function __tmux-option-guard() {
         options=(
             'base-index:'${int_guard}
             'bell-action:DESC:any none current'
-            'buffer-limit:'${int_guard}
             'default-command:MSG:command string'
             'default-path:MSG:path name'
             'default-shell:MSG:shell executable'
-            'default-terminal:MSG:terminal string'
             'display-panes-colour:__tmux-colours'
             'display-panes-active-colour:__tmux-colours'
             'display-panes-time:'${int_guard}
@@ -1272,7 +1270,6 @@ function __tmux-option-guard() {
             'message-attr:__tmux-attributes'
             'message-bg:__tmux-colours'
             'message-fg:__tmux-colours'
-            'message-limit:'${int_guard}
             'mouse-select-pane:DESC:on off'
             'pane-border-bg:__tmux-colours'
             'pane-border-fg:__tmux-colours'
@@ -1301,7 +1298,6 @@ function __tmux-option-guard() {
             'status-right-fg:__tmux-colours'
             'status-right-length:'${int_guard}
             'status-utf8:DESC:on off'
-            'terminal-overrides:MSG:overrides string'
             'update-environment:MSG:string listing env. variables'
             'visual-activity:DESC:on off'
             'visual-bell:DESC:on off'
@@ -1309,8 +1305,12 @@ function __tmux-option-guard() {
         )
     elif [[ ${mode} == 'server' ]]; then
         options=(
+            'buffer-limit:'${int_guard}
+            'default-terminal:MSG:terminal string'
             'escape-time:'${int_guard}
+            'message-limit:'${int_guard}
             'quiet:DESC:on off'
+            'terminal-overrides:MSG:overrides string'
         )
     else
         options=(
@@ -1372,11 +1372,9 @@ function __tmux-session-options() {
     tmux_session_options=(
         'base-index:define where to start numbering'
         'bell-action:set action on window bell'
-        'buffer-limit:number of buffers kept per session'
         'default-command:default command for new windows'
         'default-path:default working directory'
         'default-shell:default shell executable'
-        'default-terminal:default terminal definition string'
         'display-panes-colour:colour used for display-panes'
         'display-panes-active-colour:colour for active pane in display-panes'
         'display-panes-time:time (in msecs) of display-panes output'
@@ -1388,7 +1386,6 @@ function __tmux-session-options() {
         'message-attr:set status line message attributes'
         'message-bg:set status line message background colour'
         'message-fg:set status line message foreground colour'
-        'message-limit:set size of message log per client'
         'mouse-select-pane:make mouse clicks select window panes'
         'pane-border-bg:set pane border foreground colour'
         'pane-border-fg:set pane border background colour'
@@ -1417,7 +1414,6 @@ function __tmux-session-options() {
         'status-right-fg:foreground colour of the right part of the status bar'
         'status-right-length:maximum length of the right part of the status bar'
         'status-utf8:assume UTF-8 sequences to appear in status bar'
-        'terminal-overrides:override terminal descriptions'
         'update-environment:list of variables to be copied to a session'\''s environment'
         'visual-activity:display status line messages upon activity'
         'visual-bell:use visual bell instead of audible'
@@ -1470,8 +1466,12 @@ function __tmux-panes() {
 function __tmux-server-options() {
     local -a tmux_server_options
     tmux_server_options=(
+        'buffer-limit:number of buffers kept per session'
+        'default-terminal:default terminal definition string'
         'escape-time:set timeout to detect single escape characters (in msecs)'
+        'message-limit:set size of message log per client'
         'quiet:enable/disable the display of various informational messages'
+        'terminal-overrides:override terminal descriptions'
     )
     _describe -t tmux-server-options 'tmux server option' tmux_server_options
 }
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 14/18] _tmux: Remove support for old options
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (12 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 13/18] _tmux: Fix options with changed scope Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 15/18] _tmux: Add new session options Frank Terbeck
                   ` (5 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 60 -------------------------------------------
 1 file changed, 60 deletions(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 70a9f26..517342e 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1257,7 +1257,6 @@ function __tmux-option-guard() {
             'base-index:'${int_guard}
             'bell-action:DESC:any none current'
             'default-command:MSG:command string'
-            'default-path:MSG:path name'
             'default-shell:MSG:shell executable'
             'display-panes-colour:__tmux-colours'
             'display-panes-active-colour:__tmux-colours'
@@ -1267,41 +1266,23 @@ function __tmux-option-guard() {
             'lock-after-time:'${int_guard}
             'lock-command:MSG:command string'
             'lock-server:DESC:on off'
-            'message-attr:__tmux-attributes'
-            'message-bg:__tmux-colours'
-            'message-fg:__tmux-colours'
-            'mouse-select-pane:DESC:on off'
-            'pane-border-bg:__tmux-colours'
-            'pane-border-fg:__tmux-colours'
-            'pane-active-border-bg:__tmux-colours'
-            'pane-active-border-fg:__tmux-colours'
             'prefix:MSG:comma-seperated key list'
             'repeat-time:'${int_guard}
             'set-remain-on-exit:DESC:on off'
             'set-titles:DESC:on off'
             'set-titles-string:MSG:title format string'
             'status:DESC:on off'
-            'status-attr:__tmux-attributes'
-            'status-bg:__tmux-colours'
-            'status-fg:__tmux-colours'
             'status-interval:'${int_guard}
             'status-justify:DESC:left centre right'
             'status-keys:DESC:vi emacs'
             'status-left:MSG:format string'
-            'status-left-attr:__tmux-attributes'
-            'status-left-bg:__tmux-colours'
-            'status-left-fg:__tmux-colours'
             'status-left-length:'${int_guard}
             'status-right:MSG:format string'
-            'status-right-attr:__tmux-attributes'
-            'status-right-bg:__tmux-colours'
-            'status-right-fg:__tmux-colours'
             'status-right-length:'${int_guard}
             'status-utf8:DESC:on off'
             'update-environment:MSG:string listing env. variables'
             'visual-activity:DESC:on off'
             'visual-bell:DESC:on off'
-            'visual-content:DESC:on off'
         )
     elif [[ ${mode} == 'server' ]]; then
         options=(
@@ -1323,23 +1304,12 @@ function __tmux-option-guard() {
             'force-width:'${int_guard}
             'main-pane-height:'${int_guard}
             'main-pane-width:'${int_guard}
-            'mode-attr:__tmux-attributes'
-            'mode-bg:__tmux-colours'
-            'mode-fg:__tmux-colours'
             'mode-keys:DESC:vi emacs'
-            'mode-mouse:DESC:on off'
             'monitor-activity:DESC:on off'
-            'monitor-content:MSG:fnmatch(3) pattern'
             'remain-on-exit:DESC:on off'
             'synchronize-panes:DESC:on off'
             'utf8:DESC:on off'
-            'window-status-attr:__tmux-attributes'
-            'window-status-bg:__tmux-colours'
-            'window-status-current-attr:__tmux-attributes'
-            'window-status-current-bg:__tmux-colours'
-            'window-status-current-fg:__tmux-colours'
             'window-status-current-format:MSG:status format string'
-            'window-status-fg:__tmux-colours'
             'window-status-format:MSG:status format string'
             'xterm-keys:DESC:on off'
         )
@@ -1373,7 +1343,6 @@ function __tmux-session-options() {
         'base-index:define where to start numbering'
         'bell-action:set action on window bell'
         'default-command:default command for new windows'
-        'default-path:default working directory'
         'default-shell:default shell executable'
         'display-panes-colour:colour used for display-panes'
         'display-panes-active-colour:colour for active pane in display-panes'
@@ -1383,41 +1352,23 @@ function __tmux-session-options() {
         'lock-after-time:lock sessions after N seconds'
         'lock-command:command to run for locking a client'
         'lock-server:make lock-after-time lock the server instead of sessions'
-        'message-attr:set status line message attributes'
-        'message-bg:set status line message background colour'
-        'message-fg:set status line message foreground colour'
-        'mouse-select-pane:make mouse clicks select window panes'
-        'pane-border-bg:set pane border foreground colour'
-        'pane-border-fg:set pane border background colour'
-        'pane-active-border-bg:set active pane border foreground colour'
-        'pane-active-border-fg:set active pane border background colour'
         'prefix:comma seperated line of keys accepted as prefix key'
         'repeat-time:time for multiple commands without prefix-key presses'
         'set-remain-on-exit:set remain-on-exit window option'
         'set-titles:try to set xterm window titles'
         'set-titles-string:format used by set-titles'
         'status:show or hide the status bar'
-        'status-attr:status bar attributes'
-        'status-bg:status bar background colour'
-        'status-fg:status bar foreground colour'
         'status-interval:interval (in seconds) for status bar updates'
         'status-justify:position of the window list in status bar'
         'status-keys:mode to use in status bar modes (vi/emacs)'
         'status-left:format to use left in status bar'
-        'status-left-attr:attribute for the left part of the status bar'
-        'status-left-bg:background colour of the left part of the status bar'
-        'status-left-fg:foreground colour of the left part of the status bar'
         'status-left-length:maximum length of the left part of the status bar'
         'status-right:format to use right in status bar'
-        'status-right-attr:attribute for the right part of the status bar'
-        'status-right-bg:background colour of the right part of the status bar'
-        'status-right-fg:foreground colour of the right part of the status bar'
         'status-right-length:maximum length of the right part of the status bar'
         'status-utf8:assume UTF-8 sequences to appear in status bar'
         'update-environment:list of variables to be copied to a session'\''s environment'
         'visual-activity:display status line messages upon activity'
         'visual-bell:use visual bell instead of audible'
-        'visual-content:display status line messages upon content changes'
     )
     _describe -t tmux-options 'tmux session option' tmux_session_options
 }
@@ -1504,23 +1455,12 @@ function __tmux-window-options() {
         'force-width:force a windows to a certain width'
         'main-pane-height:set height for main-* layouts'
         'main-pane-width:set width for main-* layouts'
-        'mode-attr:set window modes attributes'
-        'mode-bg:set window modes background colour'
-        'mode-fg:set window modes foreground colour'
         'mode-keys:mode to use in copy and choice modes (vi/emacs)'
-        'mode-mouse:use mouse in modes'
         'monitor-activity:monitor window activity'
-        'monitor-content:monitor window contents for a fnmatch(3) pattern'
         'remain-on-exit:do not destroy windows after the program exits'
         'synchronize-panes:send input to all panes of a window'
         'utf8:assume UTF-8 sequences to appear in a window'
-        'window-status-attr:set status line attributes for a window'
-        'window-status-bg:set status line background for a window'
-        'window-status-current-attr:set status line attributes for active window'
-        'window-status-current-bg:set status line background for active window'
-        'window-status-current-fg:set status line foreground for active window'
         'window-status-current-format:set status line format for active window'
-        'window-status-fg:set status line foreground for a window'
         'window-status-format:set status line format for all but the active window'
         'xterm-keys:generate xterm-style function key sequences'
     )
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 15/18] _tmux: Add new session options
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (13 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 14/18] _tmux: Remove support for old options Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 16/18] _tmux: Add support for new server options Frank Terbeck
                   ` (4 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 517342e..6e8f0fa 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1254,10 +1254,14 @@ function __tmux-option-guard() {
     int_guard='_guard "[0-9]#" "'${opt}': numeric value"'
     if [[ ${mode} == 'session' ]]; then
         options=(
+            'assume-paste-time:'${int_guard}
             'base-index:'${int_guard}
             'bell-action:DESC:any none current'
+            'bell-on-alert:DESC:on off'
             'default-command:MSG:command string'
             'default-shell:MSG:shell executable'
+            'destroy-unattached:DESC:on off'
+            'detach-on-destroy:DESC:on off'
             'display-panes-colour:__tmux-colours'
             'display-panes-active-colour:__tmux-colours'
             'display-panes-time:'${int_guard}
@@ -1266,7 +1270,13 @@ function __tmux-option-guard() {
             'lock-after-time:'${int_guard}
             'lock-command:MSG:command string'
             'lock-server:DESC:on off'
+            'message-command-style:__tmux-style'
+            'message-style:__tmux-style'
+            'mouse:DESC:on off'
+            'mouse-utf8:DESC:on off'
             'prefix:MSG:comma-seperated key list'
+            'prefix2:MSG:secondary prefix key'
+            'renumber-windows:DESC:on off'
             'repeat-time:'${int_guard}
             'set-remain-on-exit:DESC:on off'
             'set-titles:DESC:on off'
@@ -1277,12 +1287,18 @@ function __tmux-option-guard() {
             'status-keys:DESC:vi emacs'
             'status-left:MSG:format string'
             'status-left-length:'${int_guard}
+            'status-left-style:__tmux-style'
+            'status-position:DESC:top bottom'
             'status-right:MSG:format string'
             'status-right-length:'${int_guard}
+            'status-right-style:__tmux-style'
+            'status-style:__tmux-style'
             'status-utf8:DESC:on off'
             'update-environment:MSG:string listing env. variables'
             'visual-activity:DESC:on off'
             'visual-bell:DESC:on off'
+            'visual-silence:DESC:on off'
+            'word-separators:MSG:separator string'
         )
     elif [[ ${mode} == 'server' ]]; then
         options=(
@@ -1340,10 +1356,14 @@ function __tmux-option-guard() {
 function __tmux-session-options() {
     local -a tmux_session_options
     tmux_session_options=(
+        'assume-paste-time:assume keys are pasted instead of typed if this fast'
         'base-index:define where to start numbering'
         'bell-action:set action on window bell'
+        'bell-on-alert:ring the terminal bell when an alert occurs'
         'default-command:default command for new windows'
         'default-shell:default shell executable'
+        'destroy-unattached:destroy session if no client is attached'
+        'detach-on-destroy:detach client if attached session is destroyed'
         'display-panes-colour:colour used for display-panes'
         'display-panes-active-colour:colour for active pane in display-panes'
         'display-panes-time:time (in msecs) of display-panes output'
@@ -1352,7 +1372,13 @@ function __tmux-session-options() {
         'lock-after-time:lock sessions after N seconds'
         'lock-command:command to run for locking a client'
         'lock-server:make lock-after-time lock the server instead of sessions'
+        'message-command-style:status line message command style'
+        'message-style:status line message style'
+        'mouse:enable mouse support'
+        'mouse-utf8:request utf8 mouse support'
         'prefix:comma seperated line of keys accepted as prefix key'
+        'prefix2:secondary prefix key'
+        'renumber-windows:renumber windows if a window is closed'
         'repeat-time:time for multiple commands without prefix-key presses'
         'set-remain-on-exit:set remain-on-exit window option'
         'set-titles:try to set xterm window titles'
@@ -1363,12 +1389,18 @@ function __tmux-session-options() {
         'status-keys:mode to use in status bar modes (vi/emacs)'
         'status-left:format to use left in status bar'
         'status-left-length:maximum length of the left part of the status bar'
+        'status-left-style:style of left part of status line'
+        'status-position:status line position'
         'status-right:format to use right in status bar'
         'status-right-length:maximum length of the right part of the status bar'
+        'status-right-style:style of right part of status line'
+        'status-style:style status line'
         'status-utf8:assume UTF-8 sequences to appear in status bar'
         'update-environment:list of variables to be copied to a session'\''s environment'
         'visual-activity:display status line messages upon activity'
         'visual-bell:use visual bell instead of audible'
+        'visual-silence:print a message if monitor-silence is on'
+        'word-separators:string of characters considered word separators'
     )
     _describe -t tmux-options 'tmux session option' tmux_session_options
 }
@@ -1443,6 +1475,10 @@ function __tmux-socket-name() {
     _wanted socket expl 'socket name' compadd ${expl} -- ${socks}
 }
 
+function __tmux-style() {
+    _message 'not implemented yet'
+}
+
 function __tmux-window-options() {
     local -a tmux_window_options
     tmux_window_options=(
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 16/18] _tmux: Add support for new server options
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (14 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 15/18] _tmux: Add new session options Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 17/18] _tmux: Add support for new window options Frank Terbeck
                   ` (3 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 6e8f0fa..36416b0 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1305,8 +1305,12 @@ function __tmux-option-guard() {
             'buffer-limit:'${int_guard}
             'default-terminal:MSG:terminal string'
             'escape-time:'${int_guard}
+            'exit-unattached:DESC:on off'
+            'focus-events:DESC:on off'
+            'history-file:_path-files -g "*(-.)"'
             'message-limit:'${int_guard}
             'quiet:DESC:on off'
+            'set-clipboard:DESC:on off'
             'terminal-overrides:MSG:overrides string'
         )
     else
@@ -1452,8 +1456,12 @@ function __tmux-server-options() {
         'buffer-limit:number of buffers kept per session'
         'default-terminal:default terminal definition string'
         'escape-time:set timeout to detect single escape characters (in msecs)'
+        'exit-unattached:make server exit if it has no attached clients'
+        'focus-events:request focus events from terminal'
+        'history-file:tmux command history file name'
         'message-limit:set size of message log per client'
         'quiet:enable/disable the display of various informational messages'
+        'set-clipboard:use esc sequences to set terminal clipboard'
         'terminal-overrides:override terminal descriptions'
     )
     _describe -t tmux-server-options 'tmux server option' tmux_server_options
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 17/18] _tmux: Add support for new window options
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (15 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 16/18] _tmux: Add support for new server options Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:27 ` [PATCH 18/18] _tmux: Update TODO Frank Terbeck
                   ` (2 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 36416b0..3b28125 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1316,8 +1316,10 @@ function __tmux-option-guard() {
     else
         options=(
             'aggressive-resize:DESC:on off'
+            'allow-rename:DESC:on off'
             'alternate-screen:DESC:on off'
             'automatic-rename:DESC:on off'
+            'automatic-rename-format:DESC:__tmux-format'
             'clock-mode-colour:__tmux-colours'
             'clock-mode-style:DESC:12 24'
             'force-height:'${int_guard}
@@ -1325,12 +1327,28 @@ function __tmux-option-guard() {
             'main-pane-height:'${int_guard}
             'main-pane-width:'${int_guard}
             'mode-keys:DESC:vi emacs'
+            'mode-style:__tmux-style'
             'monitor-activity:DESC:on off'
+            'monitor-silence:DESC:on off'
+            'other-pane-height:'${int_guard}
+            'other-pane-width:'${int_guard}
+            'pane-active-border-style:__tmux-style'
+            'pane-base-index:'${int_guard}
+            'pane-border-style:__tmux-style'
             'remain-on-exit:DESC:on off'
             'synchronize-panes:DESC:on off'
             'utf8:DESC:on off'
+            'window-active-style:__tmux-style'
+            'window-status-activity-style:__tmux-style'
+            'window-status-bell-style:__tmux-style'
             'window-status-current-format:MSG:status format string'
+            'window-status-current-style:__tmux-style'
             'window-status-format:MSG:status format string'
+            'window-status-last-style:__tmux-style'
+            'window-status-separator:MSG:separator string'
+            'window-status-style:__tmux-style'
+            'window-style:__tmux-style'
+            'wrap-seach:DESC:on off'
             'xterm-keys:DESC:on off'
         )
     fi
@@ -1491,8 +1509,10 @@ function __tmux-window-options() {
     local -a tmux_window_options
     tmux_window_options=(
         'aggressive-resize:aggressively resize windows'
+        'allow-rename:allow programs to change window titles'
         'alternate-screen:allow alternate screen feature to be used'
         'automatic-rename:attempt to automatically rename windows'
+        'automatic-rename-format:format for automatic renames'
         'clock-mode-colour:set clock colour'
         'clock-mode-style:set clock hour format (12/24)'
         'force-height:force a windows to a certain height'
@@ -1500,12 +1520,28 @@ function __tmux-window-options() {
         'main-pane-height:set height for main-* layouts'
         'main-pane-width:set width for main-* layouts'
         'mode-keys:mode to use in copy and choice modes (vi/emacs)'
+        'mode-style:set window modes style'
         'monitor-activity:monitor window activity'
+        'monitor-silence:monitor window for inactivity'
+        'other-pane-height:height of other panes'
+        'other-pane-width:width of other panes'
+        'pane-active-border-style:style of border of active pane'
+        'pane-base-index:integer at which to start indexing panes'
+        'pane-border-style:style of border pane'
         'remain-on-exit:do not destroy windows after the program exits'
         'synchronize-panes:send input to all panes of a window'
         'utf8:assume UTF-8 sequences to appear in a window'
+        'window-active-style:style of active window'
+        'window-status-activity-style:style of status bar activity tag'
+        'window-status-bell-style:style of status bar bell tag'
         'window-status-current-format:set status line format for active window'
+        'window-status-current-style:style of current window in status bar'
         'window-status-format:set status line format for all but the active window'
+        'window-status-last-style:style of last window in status bar'
+        'window-status-separator:separator drawn between windows in status line'
+        'window-status-style:general status bar style'
+        'window-style:style of window'
+        'wrap-search:search wrap around at the end of a pane'
         'xterm-keys:generate xterm-style function key sequences'
     )
     _describe -t tmux-window-options 'tmux window option' tmux_window_options
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 18/18] _tmux: Update TODO
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (16 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 17/18] _tmux: Add support for new window options Frank Terbeck
@ 2015-08-10 13:27 ` Frank Terbeck
  2015-08-10 13:52 ` [PATCH 00/18] Updates for _tmux Peter Stephenson
  2015-08-10 14:46 ` [PATCH 19/18] _tmux: Update bell-action and prefix options Frank Terbeck
  19 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 13:27 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 3b28125..d21fe0e 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -43,10 +43,11 @@
 #
 # TODO:
 #
-#   The way options (set/show etc) are handled needs to be reviewed.
-#   For example, set-option can set every type of option now. I hope
-#   this is rather simple to improve. Also, there are new options that
-#   need to be supported.
+#   - Implement __tmux-format
+#   - Implement __tmux-style (possibly using existing helpers like
+#     __tmux-attributes and __tmux-colours)
+#   - in _tmux-list-panes, use __tmux-windows or __tmux-sessions
+#     depending on -s is among the sub-commands current command line.
 
 # Global variables; setup the first time _tmux is called.
 # For $_tmux_commands[] generation, see the very end of this file.
@@ -201,7 +202,7 @@ function _tmux-break-pane() {
     local -a args
     args=(
         '-d[do not make the new window become the active one]'
-        '-F[specify format of output]:format:__tmux-format'
+        '-F[specify format of output]:format:__tmux-format__tmux-format'
         '-P[print information of new window after it has been created]'
         '-t[choose a target pane]:panes:__tmux-panes'
     )
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 00/18] Updates for _tmux
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (17 preceding siblings ...)
  2015-08-10 13:27 ` [PATCH 18/18] _tmux: Update TODO Frank Terbeck
@ 2015-08-10 13:52 ` Peter Stephenson
  2015-08-10 14:46 ` [PATCH 19/18] _tmux: Update bell-action and prefix options Frank Terbeck
  19 siblings, 0 replies; 25+ messages in thread
From: Peter Stephenson @ 2015-08-10 13:52 UTC (permalink / raw)
  To: zsh-workers

On Mon, 10 Aug 2015 15:27:20 +0200
Frank Terbeck <ft@bewatermyfriend.org> wrote:
> Since this is a fairly large update: Should I wait until 5.0.9 is out or do I
> go ahead and commit it right away? Bear in mind that the completion was quite
> out of date, but also that this is a rather large update... So I don't know.

My general philosophy of this is that it's disconnected from the core
code well enough that it's not really much of a risk putting it in, so
if you fell it's basically working, go ahead.

pws


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 19/18] _tmux: Update bell-action and prefix options
  2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
                   ` (18 preceding siblings ...)
  2015-08-10 13:52 ` [PATCH 00/18] Updates for _tmux Peter Stephenson
@ 2015-08-10 14:46 ` Frank Terbeck
  2015-08-10 14:46   ` [PATCH 20/18] _tmux: Fix \ooo display in completion list Frank Terbeck
  19 siblings, 1 reply; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 14:46 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index d21fe0e..ba1c03e 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -1257,7 +1257,7 @@ function __tmux-option-guard() {
         options=(
             'assume-paste-time:'${int_guard}
             'base-index:'${int_guard}
-            'bell-action:DESC:any none current'
+            'bell-action:DESC:any none current other'
             'bell-on-alert:DESC:on off'
             'default-command:MSG:command string'
             'default-shell:MSG:shell executable'
@@ -1275,7 +1275,7 @@ function __tmux-option-guard() {
             'message-style:__tmux-style'
             'mouse:DESC:on off'
             'mouse-utf8:DESC:on off'
-            'prefix:MSG:comma-seperated key list'
+            'prefix:MSG:primary prefix key'
             'prefix2:MSG:secondary prefix key'
             'renumber-windows:DESC:on off'
             'repeat-time:'${int_guard}
@@ -1399,7 +1399,7 @@ function __tmux-session-options() {
         'message-style:status line message style'
         'mouse:enable mouse support'
         'mouse-utf8:request utf8 mouse support'
-        'prefix:comma seperated line of keys accepted as prefix key'
+        'prefix:primary prefix key'
         'prefix2:secondary prefix key'
         'renumber-windows:renumber windows if a window is closed'
         'repeat-time:time for multiple commands without prefix-key presses'
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 20/18] _tmux: Fix \ooo display in completion list
  2015-08-10 14:46 ` [PATCH 19/18] _tmux: Update bell-action and prefix options Frank Terbeck
@ 2015-08-10 14:46   ` Frank Terbeck
  0 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 14:46 UTC (permalink / raw)
  To: zsh-workers

---
 Completion/Unix/Command/_tmux | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index ba1c03e..896fae7 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -215,7 +215,7 @@ function _tmux-capture-pane() {
     args=(
         '-a[use alternate screen]'
         '-b[choose target buffer]:target buffer:__tmux-buffers'
-        '-C[escape non-printable characters as octal \ooo]'
+        '-C[escape non-printable characters as octal \\ooo]'
         '-e[include escape sequences for attributes etc]'
         '-E[specify last line to capture. - means last line of pane]'
         '-J[join wrapped lines and preserver trailing space]'
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

* wrapping "local" (was: Re: [PATCH 10/18] Add helper script to check state of _tmux completion)
  2015-08-10 13:27 ` [PATCH 10/18] Add helper script to check state of _tmux completion Frank Terbeck
@ 2015-08-10 15:20   ` Frank Terbeck
  2015-08-10 15:32     ` Peter Stephenson
  0 siblings, 1 reply; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 15:20 UTC (permalink / raw)
  To: zsh-workers

Hi!

Could it be, that I can't write a wrapper around "local" anymore? In
this script:

Frank Terbeck wrote:
[...]
> +function _arguments () { }
> +function _describe () { }
> +function local () { }
> +
> +typeset -A rev
> +
> +source $func
> +__tmux-server-options
> +__tmux-session-options
> +__tmux-window-options

...I am using a trick: The __tmux-*-options() functions define variables
"$tmux_session_options" for example in local scope. I was injecting a
function called "local" so that the functions wouldn't put their
variables into local scope anymore. That way I could inspect these
variables later on in the script.

After pushing these changes, I also updated zsh on my system. Turns out
that with an updated zsh binary, the trick doesn't work anymore and I
end up with nothing.

Was this intended? Is it a bug? If not, is there a way to make the trick
work?


Regards, Frank


^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: wrapping "local" (was: Re: [PATCH 10/18] Add helper script to check state of _tmux completion)
  2015-08-10 15:20   ` wrapping "local" (was: Re: [PATCH 10/18] Add helper script to check state of _tmux completion) Frank Terbeck
@ 2015-08-10 15:32     ` Peter Stephenson
  2015-08-10 15:50       ` [PATCH] Disable ‘local’ keyword in script to make data retrieval work Frank Terbeck
  0 siblings, 1 reply; 25+ messages in thread
From: Peter Stephenson @ 2015-08-10 15:32 UTC (permalink / raw)
  To: zsh-workers

On Mon, 10 Aug 2015 17:20:59 +0200
Frank Terbeck <ft@bewatermyfriend.org> wrote:
> Could it be, that I can't write a wrapper around "local" anymore?

You need to disable the "local" reserved word, which takes precedence
over functions (this makes sense as it's parsed specially and
differently).

disable -r local

That means you can't use array assignments after the local,
but that's an obvious restriction of the function interface.

pws


^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH] Disable ‘local’ keyword in script to make data retrieval work
  2015-08-10 15:32     ` Peter Stephenson
@ 2015-08-10 15:50       ` Frank Terbeck
  0 siblings, 0 replies; 25+ messages in thread
From: Frank Terbeck @ 2015-08-10 15:50 UTC (permalink / raw)
  To: zsh-workers

---
 Util/check-tmux-state | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Util/check-tmux-state b/Util/check-tmux-state
index 7e29338..4cba360 100644
--- a/Util/check-tmux-state
+++ b/Util/check-tmux-state
@@ -40,6 +40,10 @@ differences=none
 # information. For that, we need to put a few stubs into place so sourcing the
 # file doesn't blow up in our face.
 
+# We need to disable the new "local" keyword to make our data retrieval trick
+# work:
+disable -r local
+
 function _arguments () { }
 function _describe () { }
 function local () { }
-- 
2.1.4


^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2015-08-10 15:50 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-10 13:27 [PATCH 00/18] Updates for _tmux Frank Terbeck
2015-08-10 13:27 ` [PATCH 01/18] _tmux: Update command line options Frank Terbeck
2015-08-10 13:27 ` [PATCH 02/18] _tmux: Update options for supported commands Frank Terbeck
2015-08-10 13:27 ` [PATCH 03/18] _tmux: Add support for new sub-commands Frank Terbeck
2015-08-10 13:27 ` [PATCH 04/18] _tmux: Remove dead code Frank Terbeck
2015-08-10 13:27 ` [PATCH 05/18] _tmux: Don't unset, set empty in local scope Frank Terbeck
2015-08-10 13:27 ` [PATCH 06/18] _tmux: No need to unset local variables Frank Terbeck
2015-08-10 13:27 ` [PATCH 07/18] _tmux: Replay all arguments when dispatching to new _tmux() Frank Terbeck
2015-08-10 13:27 ` [PATCH 08/18] _tmux: "local -x" serves no purpose Frank Terbeck
2015-08-10 13:27 ` [PATCH 09/18] _tmux: options => session_options Frank Terbeck
2015-08-10 13:27 ` [PATCH 10/18] Add helper script to check state of _tmux completion Frank Terbeck
2015-08-10 15:20   ` wrapping "local" (was: Re: [PATCH 10/18] Add helper script to check state of _tmux completion) Frank Terbeck
2015-08-10 15:32     ` Peter Stephenson
2015-08-10 15:50       ` [PATCH] Disable ‘local’ keyword in script to make data retrieval work Frank Terbeck
2015-08-10 13:27 ` [PATCH 11/18] _tmux: Remove old sub-commands and their aliases Frank Terbeck
2015-08-10 13:27 ` [PATCH 12/18] _tmux: Add new command aliases Frank Terbeck
2015-08-10 13:27 ` [PATCH 13/18] _tmux: Fix options with changed scope Frank Terbeck
2015-08-10 13:27 ` [PATCH 14/18] _tmux: Remove support for old options Frank Terbeck
2015-08-10 13:27 ` [PATCH 15/18] _tmux: Add new session options Frank Terbeck
2015-08-10 13:27 ` [PATCH 16/18] _tmux: Add support for new server options Frank Terbeck
2015-08-10 13:27 ` [PATCH 17/18] _tmux: Add support for new window options Frank Terbeck
2015-08-10 13:27 ` [PATCH 18/18] _tmux: Update TODO Frank Terbeck
2015-08-10 13:52 ` [PATCH 00/18] Updates for _tmux Peter Stephenson
2015-08-10 14:46 ` [PATCH 19/18] _tmux: Update bell-action and prefix options Frank Terbeck
2015-08-10 14:46   ` [PATCH 20/18] _tmux: Fix \ooo display in completion list Frank Terbeck

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).