diff options
| author | Frank Terbeck <ft@bewatermyfriend.org> | 2015-08-10 15:27:22 +0200 |
|---|---|---|
| committer | Frank Terbeck <ft@bewatermyfriend.org> | 2015-08-10 16:50:49 +0200 |
| commit | 742f4da3d9d4006e843a55535f9b4ec0f0175a8a (patch) | |
| tree | 9e5f7a43008e6a2018720214a73b6c4bf7053ed5 /Completion/Unix/Command/_tmux | |
| parent | 36046: _tmux: Update command line options (diff) | |
| download | zsh-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/_tmux | 339 |
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} ]] && |
