summaryrefslogtreecommitdiffstats
path: root/Completion/Unix/Command/_tmux
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command/_tmux')
-rw-r--r--Completion/Unix/Command/_tmux110
1 files changed, 91 insertions, 19 deletions
diff --git a/Completion/Unix/Command/_tmux b/Completion/Unix/Command/_tmux
index b564c955d..f4e5619a0 100644
--- a/Completion/Unix/Command/_tmux
+++ b/Completion/Unix/Command/_tmux
@@ -125,6 +125,7 @@ _tmux_aliasmap=(
# status line
confirm confirm-before
+ menu display-menu
display display-message
# buffers
@@ -169,15 +170,16 @@ _tmux-attach-session() {
'-d[detach other clients attached to target session]' \
'-r[put the client into read-only mode]' \
'-t+[specify target session]:target session: __tmux-sessions-separately' \
- "-E[don't apply update-environment option]"
+ "-E[don't apply update-environment option]" \
+ '-x[with -d, send SIGHUP to the parent of the attached client]'
}
_tmux-bind-key() {
[[ -n ${tmux_describe} ]] && print "bind a key to a command" && return
_arguments -s -A "-*" \
- '-c[bind to command mode instead of normal mode]' \
'-n[make the binding work without the need for the prefix key]' \
'-r[the key may repeat]' \
+ '-N+[attach a note to the key]:note' \
'-T+[specify key table for the binding]:key table' \
'1:key' \
'*:::template:= _tmux'
@@ -202,7 +204,8 @@ _tmux-capture-pane() {
'-C[escape non-printable characters as octal \\ooo]' \
'-e[include escape sequences for attributes etc]' \
'-E[specify last line to capture]:line number (- means last line)' \
- '-J[join wrapped lines and preserve trailing space]' \
+ '(-N)-J[join wrapped lines and preserve trailing space]' \
+ '(-J)-N[preserve trailing space]' \
'-q[ignore errors when trying to access alternate screen]' \
'(-b)-p[print data to stdout]' \
'-P[only capture beginnings of as-yet incomplete escape sequences]' \
@@ -214,6 +217,8 @@ _tmux-choose-buffer() {
[[ -n ${tmux_describe} ]] && print "put a pane into buffer choice mode" && return
_arguments -s \
'-N[start without the preview]' \
+ '-Z[zoom the pane]' \
+ '-r[reverse sort order]' \
'-F+[specify format for each list item]:format:__tmux-formats' \
'-f+[filter items]:filter format:__tmux-formats' \
'-O+[initial sort order]:order:(time name size)' \
@@ -225,6 +230,8 @@ _tmux-choose-client() {
[[ -n ${tmux_describe} ]] && print "put a window into client choice mode" && return
_arguments -s \
'-N[start without the preview]' \
+ '-Z[zoom the pane]' \
+ '-r[reverse sort order]' \
'-F+[specify format for each list item]:format:__tmux-formats' \
'-f+[filter items]:filter format:__tmux-formats' \
'-O+[initial sort order]:order:(time name size)' \
@@ -237,6 +244,8 @@ _tmux-choose-tree() {
_arguments -s \
'-G[include all sessions in any session groups in the tree rather than only the first]' \
'-N[start without the preview]' \
+ '-Z[zoom the pane]' \
+ '-r[reverse sort order]' \
'-F+[specify format for each list item]:format:__tmux-formats' \
'-f+[filter items]:filter format:__tmux-formats' \
'-O+[initial sort order]:order:(time name size)' \
@@ -260,7 +269,8 @@ _tmux-command-prompt() {
[[ -n ${tmux_describe} ]] && print "open the tmux command prompt in a client" && return
_arguments -s \
'-1[only accept one key press]' \
- '-N' \
+ '-k[only accept one key press and translate it to a key name]' \
+ '-N[accept only numeric key presses]' \
'-i[execute the command every time the prompt input changes]' \
'-I+[specify list of initial inputs]:initial-text (comma-separated list)' \
'-p+[specify list of prompts]:prompts (comma-separated list)' \
@@ -280,6 +290,9 @@ _tmux-copy-mode() {
[[ -n ${tmux_describe} ]] && print "enter copy mode" && return
_arguments -s \
'-t+[specify target pane]:pane:__tmux-panes' \
+ '-e[scrolling to the bottom should exit copy mode]' \
+ '-H[hide the position indicator in the top right]' \
+ '-q[cancel copy mode and any other modes]' \
'-u[scroll up one page]' \
'-M[begin a mouse drag]'
}
@@ -299,16 +312,45 @@ _tmux-detach-client() {
'-t+[specify target client]:client:__tmux-clients'
}
+_tmux-display-menu() {
+ [[ -n ${tmux_describe} ]] && print "display a menu" && return
+ local curcontext="$curcontext" ret=1
+ local -a state line expl
+ _arguments -C -s -S -A "-*" \
+ '-c+[specify target client]:client:__tmux-clients' \
+ '-t+[specify target pane]:pane:__tmux-panes' \
+ '-T+[specify title]:title' \
+ '-x+[specify horizontal position]: : _alternative "columns\: \:_guard \[0-9\]\# column" "positions\:position\:((R\:right P\:bottom M\:mouse W\:window))"' \
+ '-y+[specify vertical position]: : _alternative "rows\: \:_guard \[0-9\]\# row" "positions\:position\:((P\:left M\:mouse S\:status\ line))"' \
+ '*::: :->options' && ret=0
+
+ if [[ -n $state ]]; then
+ case $(( CURRENT % 3 )) in
+ 1) _message -e options 'menu option' ;;
+ 2) _message -e keys 'shortcut key' ;;
+ 0)
+ compset -q
+ words=( menu "$words[@]" )
+ (( CURRENT++ ))
+ _tmux && ret=0
+ ;;
+ esac
+ fi
+
+ return ret
+}
+
_tmux-display-message() {
[[ -n ${tmux_describe} ]] && print "display a message in the status line" && return
_arguments -s -S -A "-*" \
'(-p -F :)-a[list the format variables and their values]' \
+ '-I[forward any input read from stdin to the target pane]' \
'-c+[specify target client]:client:__tmux-clients' \
'(-a)-p[print message to stdout]' \
'-t+[specify target pane]:pane:__tmux-panes' \
'(-a)-F+[specify output format]:format:__tmux-formats' \
- '(-a)-v[prints verbose logging as the format is parsed]' \
- ':message'
+ '(-a)-v[print verbose logging as the format is parsed]' \
+ ':message:__tmux-formats'
}
_tmux-display-panes() {
@@ -323,6 +365,7 @@ _tmux-display-panes() {
_tmux-find-window() {
[[ -n ${tmux_describe} ]] && print "search for a pattern in windows" && return
_arguments -s \
+ '-r[use regular expression matching]' \
'-C[match visible contents]' \
'-N[match window name]' \
'-T[match window title]' \
@@ -354,13 +397,15 @@ _tmux-if-shell() {
_tmux-join-pane() {
[[ -n ${tmux_describe} ]] && print "split a pane and move an existing one into the new space" && return
+ # -p removed from documentation but still works, or use -l and append %
_arguments -s \
'-b[join source pane left of or above target pane]' \
"-d[don't make the new window become the active one]" \
+ '(-l)-f[span the full size]' \
'-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'" \
+ "(-p)-l[define new pane's size]:size" \
+ "!(-f -l)-p+:size (percentage)" \
'-s+[specify source pane]:pane:__tmux-panes' \
'-t+[specify target pane]:pane:__tmux-panes'
}
@@ -397,6 +442,7 @@ _tmux-last-pane() {
_arguments -s \
'-d[disable input to the pane]' \
'-e[enable input to the pane]' \
+ '-Z[keep window zoomed if it was zoomed]' \
'-t+[specify session]:session:__tmux-sessions'
}
@@ -428,12 +474,16 @@ _tmux-list-clients() {
_tmux-list-commands() {
[[ -n ${tmux_describe} ]] && print "list supported sub-commands" && return
- _arguments '-F+[specify format]:format'
+ _arguments '-F+[specify format]:format:__tmux-formats' '1:sub-command:_tmux'
}
_tmux-list-keys() {
[[ -n ${tmux_describe} ]] && print "list all key-bindings" && return
_arguments -s \
+ '-1[list only the first matching key]' \
+ '-a[list the command for keys that do have a note]' \
+ '-N[list only keys with attached notes]' \
+ '-P+[specify a prefix to print before each key]:prefix' \
'-T+[specify key table]:key table'
}
@@ -512,10 +562,10 @@ _tmux-move-window() {
_tmux-new-session() {
[[ -n ${tmux_describe} ]] && print "create a new session" && return
_arguments -s -A "-*" -S \
- '-A[attach to existing session if it already exists]' \
'-c+[specify working directory for the session]:directory:_directories' \
+ '-A[attach to existing session if it already exists]' \
"-d[don't attach new session to current terminal]" \