diff --git a/completion/available/tmux.completion.bash b/completion/available/tmux.completion.bash index c872ec5f98..a1b8f06948 100644 --- a/completion/available/tmux.completion.bash +++ b/completion/available/tmux.completion.bash @@ -5,6 +5,90 @@ # Usage: Put "source bash_completion_tmux.sh" into your .bashrc # Based upon the example at http://paste-it.appspot.com/Pj4mLycDE + _tmux_cmds=" \ +attach-session \ +bind-key \ +break-pane \ +capture-pane \ +choose-client \ +choose-session \ +choose-window \ +clear-history \ +clock-mode \ +command-prompt \ +confirm-before \ +copy-buffer \ +copy-mode \ +delete-buffer \ +detach-client \ +display-message \ +display-panes \ +down-pane \ +find-window \ +has-session \ +if-shell \ +join-pane \ +kill-pane \ +kill-server \ +kill-session \ +kill-window \ +last-window \ +link-window \ +list-buffers \ +list-clients \ +list-commands \ +list-keys \ +list-panes \ +list-sessions \ +list-windows \ +load-buffer \ +lock-client \ +lock-server \ +lock-session \ +move-window \ +new-session \ +new-window \ +next-layout \ +next-window \ +paste-buffer \ +pipe-pane \ +previous-layout \ +previous-window \ +refresh-client \ +rename-session \ +rename-window \ +resize-pane \ +respawn-window \ +rotate-window \ +run-shell \ +save-buffer \ +select-layout \ +select-pane \ +select-prompt \ +select-window \ +send-keys \ +send-prefix \ +server-info \ +set-buffer \ +set-environment \ +set-option \ +set-window-option \ +show-buffer \ +show-environment \ +show-messages \ +show-options \ +show-window-options \ +source-file \ +split-window \ +start-server \ +suspend-client \ +swap-pane \ +swap-window \ +switch-client \ +unbind-key \ +unlink-window \ +up-pane" + _tmux_expand () { [ "$cur" != "${cur%\\}" ] && cur="$cur"'\'; @@ -34,12 +118,12 @@ _tmux_filedir () function _tmux_complete_client() { local IFS=$'\n' local cur="${1}" - COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux -q list-clients | cut -f 1 -d ':')" -- "${cur}") ) + COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux -q list-clients 2>/dev/null | cut -f 1 -d ':')" -- "${cur}") ) } function _tmux_complete_session() { local IFS=$'\n' local cur="${1}" - COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux -q list-sessions | cut -f 1 -d ':')" -- "${cur}") ) + COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux -q list-sessions 2>/dev/null | cut -f 1 -d ':')" -- "${cur}") ) } function _tmux_complete_window() { local IFS=$'\n' @@ -47,10 +131,10 @@ function _tmux_complete_window() { local session_name="$(echo "${cur}" | sed 's/\\//g' | cut -d ':' -f 1)" local sessions - sessions="$(tmux -q list-sessions | sed -re 's/([^:]+:).*$/\1/')" + sessions="$(tmux -q list-sessions 2>/dev/null | sed -re 's/([^:]+:).*$/\1/')" if [[ -n "${session_name}" ]]; then sessions="${sessions} -$(tmux -q list-windows -t "${session_name}" | sed -re 's/^([^:]+):.*$/'"${session_name}"':\1/')" +$(tmux -q list-windows -t "${session_name}" 2>/dev/null | sed -re 's/^([^:]+):.*$/'"${session_name}"':\1/')" fi cur="$(echo "${cur}" | sed -e 's/:/\\\\:/')" sessions="$(echo "${sessions}" | sed -e 's/:/\\\\:/')" @@ -102,8 +186,7 @@ _tmux() { if [[ $COMP_CWORD -le $cmd_index ]]; then # The user has not specified a command yet - local all_commands="$(tmux -q list-commands | cut -f 1 -d ' ')" - COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "${all_commands}" -- "${cur}") ) + COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "${_tmux_cmds}" -- "${cur}") ) else case ${cmd} in attach-session|attach)