summaryrefslogtreecommitdiffstats
path: root/Completion/Unix/Command/_tmux
diff options
context:
space:
mode:
authorFrank Terbeck <ft@bewatermyfriend.org>2015-08-10 15:27:22 +0200
committerFrank Terbeck <ft@bewatermyfriend.org>2015-08-10 16:50:49 +0200
commit742f4da3d9d4006e843a55535f9b4ec0f0175a8a (patch)
tree9e5f7a43008e6a2018720214a73b6c4bf7053ed5 /Completion/Unix/Command/_tmux
parent36046: _tmux: Update command line options (diff)
downloadzsh-742f4da3d9d4006e843a55535f9b4ec0f0175a8a.tar
zsh-742f4da3d9d4006e843a55535f9b4ec0f0175a8a.tar.gz
zsh-742f4da3d9d4006e843a55535f9b4ec0f0175a8a.tar.bz2
zsh-742f4da3d9d4006e843a55535f9b4ec0f0175a8a.tar.lz
zsh-742f4da3d9d4006e843a55535f9b4ec0f0175a8a.tar.xz
zsh-742f4da3d9d4006e843a55535f9b4ec0f0175a8a.tar.zst
zsh-742f4da3d9d4006e843a55535f9b4ec0f0175a8a.zip
36048: _tmux: Update options for supported commands
This also adds a little TODO on top about what is missing.
Diffstat (limited to 'Completion/Unix/Command/_tmux')
-rw-r--r--Completion/Unix/Command/_tmux339
1 files changed, 194 insertions, 145 deletions
diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index 7e192ab13..7fb328e3e 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} ]] &&