* [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).