/usr/share/zsh/5.5.1/functions
NameSizeModeActions
add-zle-hook-widget53820644editdlrm
add-zsh-hook19460644editdlrm
after13840644editdlrm
age21580644editdlrm
allopt7830644editdlrm
backward-kill-word-match6080644editdlrm
backward-word-match4500644editdlrm
bashcompinit50070644editdlrm
before13840644editdlrm
bracketed-paste-magic75030644editdlrm
bracketed-paste-url-magic11860644editdlrm
calendar117950644editdlrm
calendar_add82730755editdlrm
calendar_edit7940644editdlrm
calendar_lockfiles16290644editdlrm
calendar_parse61110644editdlrm
calendar_read12710644editdlrm
calendar_scandate291500644editdlrm
calendar_show10290644editdlrm
calendar_showdate14610644editdlrm
calendar_sort19300644editdlrm
capitalize-word-match3730644editdlrm
catch12500644editdlrm
cdr122400644editdlrm
checkmail8170755editdlrm
chpwd_recent_add5060644editdlrm
chpwd_recent_dirs15930644editdlrm
chpwd_recent_filehandler11760644editdlrm
colors34170644editdlrm
compaudit57380644editdlrm
compdump40920644editdlrm
compinit165760644editdlrm
compinstall616460644editdlrm
copy-earlier-word7950644editdlrm
cycle-completion-positions4970644editdlrm
define-composed-chars86810644editdlrm
delete-whole-word-match16840644editdlrm
down-case-word-match3760644editdlrm
down-line-or-beginning-search6230644editdlrm
edit-command-line11840644editdlrm
expand-absolute-path4730644editdlrm
forward-word-match9770644editdlrm
getjobs8270644editdlrm
harden960755editdlrm
history-beginning-search-menu34840644editdlrm
history-pattern-search21700644editdlrm
history-search-end8120644editdlrm
incarg10020644editdlrm
incremental-complete-word38700644editdlrm
insert-composed-char52370644editdlrm
insert-files10010644editdlrm
insert-unicode-char7150644editdlrm
is-at-least22790644editdlrm
keeper34490644editdlrm
keymap+widget26630644editdlrm
kill-word-match6060644editdlrm
match-word-context12620644editdlrm
match-words-by-style104380644editdlrm
mere20620644editdlrm
modify-current-argument27890644editdlrm
move-line-in-buffer4240644editdlrm
narrow-to-region50150644editdlrm
narrow-to-region-invisible2110644editdlrm
nslookup11250644editdlrm
pick-web-browser48750644editdlrm
predict-on47150644editdlrm
promptinit81960644editdlrm
promptnl33070644editdlrm
prompt_adam1_setup18290644editdlrm
prompt_adam2_setup41500644editdlrm
prompt_bart_setup80760644editdlrm
prompt_bigfade_setup18020644editdlrm
prompt_clint_setup17290644editdlrm
prompt_default_setup1120644editdlrm
prompt_elite2_setup15880644editdlrm
prompt_elite_setup14730644editdlrm
prompt_fade_setup17610644editdlrm
prompt_fire_setup19390644editdlrm
prompt_off_setup1260644editdlrm
prompt_oliver_setup14960644editdlrm
prompt_pws_setup6630644editdlrm
prompt_redhat_setup2780644editdlrm
prompt_restore_setup530644editdlrm
prompt_special_chars7880644editdlrm
prompt_suse_setup2600644editdlrm
prompt_walters_setup5280644editdlrm
prompt_zefram_setup5090644editdlrm
quote-and-complete-word14420644editdlrm
read-from-minibuffer13410644editdlrm
regexp-replace10390644editdlrm
relative8880644editdlrm
replace-argument11140644editdlrm
replace-string9700644editdlrm
replace-string-again18550644editdlrm
run-help30610755editdlrm
run-help-git1440644editdlrm
run-help-ip8620755editdlrm
run-help-openssl590644editdlrm
run-help-p4780644editdlrm
run-help-sudo560644editdlrm
run-help-svk420644editdlrm
run-help-svn420644editdlrm
select-bracketed16990644editdlrm
select-quoted17330644editdlrm
select-word-match39250644editdlrm
select-word-style22300644editdlrm
send-invisible26030644editdlrm
smart-insert-last-word43650644editdlrm
split-shell-arguments15750644editdlrm
sticky-note46980755editdlrm
surround21100644editdlrm
tcp_alias40930644editdlrm
tcp_close29810644editdlrm
tcp_command680644editdlrm
tcp_expect51000644editdlrm
tcp_fd_handler9700644editdlrm
tcp_log22850644editdlrm
tcp_open67940644editdlrm
tcp_output18560644editdlrm
tcp_point4430644editdlrm
tcp_proxy8490644editdlrm
tcp_read70530644editdlrm
tcp_rename8500644editdlrm
tcp_send19900644editdlrm
tcp_sess10390644editdlrm
tcp_shoot3240644editdlrm
tcp_spam29090644editdlrm
tcp_talk14720644editdlrm
tcp_wait4590644editdlrm
tetris54330644editdlrm
tetriscurses110160644editdlrm
throw10220644editdlrm
transpose-lines10880644editdlrm
transpose-words-match16800644editdlrm
up-case-word-match3770644editdlrm
up-line-or-beginning-search6010644editdlrm
url-quote-magic60830644editdlrm
vcs_info37060644editdlrm
VCS_INFO_adjust2460644editdlrm
VCS_INFO_bydir_detect8270644editdlrm
VCS_INFO_check_com2940644editdlrm
VCS_INFO_detect_bzr3260644editdlrm
VCS_INFO_detect_cdv3350644editdlrm
VCS_INFO_detect_cvs3250644editdlrm
VCS_INFO_detect_darcs3330644editdlrm
VCS_INFO_detect_fossil3410644editdlrm
VCS_INFO_detect_git6570644editdlrm
VCS_INFO_detect_hg6920644editdlrm
VCS_INFO_detect_mtn3360644editdlrm
VCS_INFO_detect_p423580644editdlrm
VCS_INFO_detect_svk14680644editdlrm
VCS_INFO_detect_svn3540644editdlrm
VCS_INFO_detect_tla3450644editdlrm
VCS_INFO_formats39500644editdlrm
VCS_INFO_get_cmd2330644editdlrm
VCS_INFO_get_data_bzr34920644editdlrm
VCS_INFO_get_data_cdv3050644editdlrm
VCS_INFO_get_data_cvs5120644editdlrm
VCS_INFO_get_data_darcs3110644editdlrm
VCS_INFO_get_data_fossil6540644editdlrm
VCS_INFO_get_data_git100240644editdlrm
VCS_INFO_get_data_hg80980644editdlrm
VCS_INFO_get_data_mtn4100644editdlrm
VCS_INFO_get_data_p411080644editdlrm
VCS_INFO_get_data_svk7280644editdlrm
VCS_INFO_get_data_svn21130644editdlrm
VCS_INFO_get_data_tla4790644editdlrm
VCS_INFO_hexdump3730644editdlrm
VCS_INFO_hook16780644editdlrm
vcs_info_hookadd4500644editdlrm
vcs_info_hookdel8820644editdlrm
vcs_info_lastmsg4920644editdlrm
VCS_INFO_maxexports4780644editdlrm
VCS_INFO_nvcsformats4230644editdlrm
VCS_INFO_patch2subject29060644editdlrm
vcs_info_printsys12970644editdlrm
VCS_INFO_quilt56300644editdlrm
VCS_INFO_realpath2500644editdlrm
VCS_INFO_reposub3130644editdlrm
VCS_INFO_set8650644editdlrm
VCS_INFO_set-patch-format28590644editdlrm
vcs_info_setsys5980644editdlrm
vi-pipe10920644editdlrm
which-command10310644editdlrm
xtermctl41850644editdlrm
zargs89420644editdlrm
zcalc122020755editdlrm
zcalc-auto-insert2670644editdlrm
zed29540755editdlrm
zed-set-file-name1450644editdlrm
zfanon19040644editdlrm
zfautocheck13180644editdlrm
zfcd19330644editdlrm
zfcd_match14020644editdlrm
zfcget20590644editdlrm
zfclose900644editdlrm
zfcput24590644editdlrm
zfdir33020644editdlrm
zffcache6620644editdlrm
zfgcp19540644editdlrm
zfget17750644editdlrm
zfget_match15320644editdlrm
zfgoto22500644editdlrm
zfhere1810644editdlrm
zfinit25500644editdlrm
zfls2080644editdlrm
zfmark14420644editdlrm
zfopen11860644editdlrm
zfparams6870644editdlrm
zfpcp13000644editdlrm
zfput14440644editdlrm
zfrglob21440644editdlrm
zfrtime13620644editdlrm
zfsession16440644editdlrm
zfstat20240644editdlrm
zftp_chpwd13860644editdlrm
zftp_progress20810644editdlrm
zftransfer15620644editdlrm
zftype5530644editdlrm
zfuget38980644editdlrm
zfuput26560644editdlrm
zkbd72880755editdlrm
zmathfunc5800644editdlrm
zmathfuncdef22790644editdlrm
zmv114030644editdlrm
zrecompile61840644editdlrm
zsh-mime-contexts4910644editdlrm
zsh-mime-handler91920644editdlrm
zsh-mime-setup113610644editdlrm
zsh-newuser-install300470644editdlrm
zsh_directory_name_cdr5270644editdlrm
zsh_directory_name_generic41760644editdlrm
zstyle+12670644editdlrm
ztodo14050644editdlrm
_a2ps28000644editdlrm
_a2utils4900644editdlrm
_aap26380644editdlrm
_absolute_command_paths10220644editdlrm
_acpi12720644editdlrm
_acpitool24350644editdlrm
_acroread35010644editdlrm
_adb149000644editdlrm
_add-zle-hook-widget9420644editdlrm
_add-zsh-hook6480644editdlrm
_alias7110644editdlrm
_aliases7080644editdlrm
_all_labels9200644editdlrm
_all_matches9700644editdlrm
_alternative19500644editdlrm
_analyseplugin6470644editdlrm
_ansible113770644editdlrm
_ant61760644editdlrm
_antiword11090644editdlrm
_apachectl1160644editdlrm
_apm16800644editdlrm
_approximate34720644editdlrm
_apt257470644editdlrm
_apt-file20050644editdlrm
_apt-move18630644editdlrm
_apt-show-versions7500644editdlrm
_aptitude42970644editdlrm
_arch_archives4130644editdlrm
_arch_namespace33080644editdlrm
_arguments175010644editdlrm
_arg_compile75690644editdlrm
_arp31960644editdlrm
_arping21610644editdlrm
_arrays840644editdlrm
_assign640644editdlrm
_at10360644editdlrm
_attr31760644editdlrm
_augeas25730644editdlrm
_auto-apt10810644editdlrm
_autocd850644editdlrm
_awk46300644editdlrm
_axi-cache8720644editdlrm
_basename7670644editdlrm
_bash_completions13580644editdlrm
_baudrates24880644editdlrm
_baz160190644editdlrm
_beadm20460644editdlrm
_beep16250644editdlrm
_be_name3410644editdlrm
_bibtex1600644editdlrm
_bindkey19940644editdlrm
_bind_addresses4160644editdlrm
_bison9230644editdlrm
_bittorrent48780644editdlrm
_bogofilter52480644editdlrm
_bpf_filters78590644editdlrm
_bpython12800644editdlrm
_brace_parameter57720644editdlrm
_brctl19260644editdlrm
_bsdconfig23850644editdlrm
_bsdinstall19340644editdlrm
_bsd_pkg88560644editdlrm
_btrfs117720644editdlrm
_bts96080644editdlrm
_bug48790644editdlrm
_builtin1780644editdlrm
_bzip222220644editdlrm
_bzr114340644editdlrm
_cabal2920644editdlrm
_cache_invalid7070644editdlrm
_caffeinate3950644editdlrm
_cal5470644editdlrm
_calendar14060644editdlrm
_call_function7370644editdlrm
_call_program8530644editdlrm
_canonical_paths36770644editdlrm
_cat21090644editdlrm
_ccal7780644editdlrm
_cd40840644editdlrm
_cdbs-edit-patch560644editdlrm
_cdcd21420644editdlrm
_cdr11970644editdlrm
_cdrdao81380644editdlrm
_cdrecord48620644editdlrm
_chattr10190644editdlrm
_chflags5740644editdlrm
_chkconfig7770644editdlrm
_chmod25030644editdlrm
_chown33080644editdlrm
_chrt25550644editdlrm
_chsh20120644editdlrm
_cksum19620644editdlrm
_clay17680644editdlrm
_cmdambivalent3910644editdlrm
_cmdstring1020644editdlrm
_cmp10780644editdlrm
_code23730644editdlrm
_column29150644editdlrm
_combination25000644editdlrm
_comm8160644editdlrm
_command3790644editdlrm
_command_names12500644editdlrm
_compadd22720644editdlrm
_compdef19630644editdlrm
_complete31670644editdlrm
_completers4000644editdlrm
_complete_debug10170644editdlrm
_complete_help26550644editdlrm
_complete_help_generic4120644editdlrm
_complete_tag20260644editdlrm
_compress14140644editdlrm
_comp_locale5720644editdlrm
_condition17790644editdlrm
_configure4440644editdlrm
_coreadm14860644editdlrm
_correct5180644editdlrm
_correct_filename19730644editdlrm
_correct_word3880644editdlrm
_cowsay9040644editdlrm
_cp41660644editdlrm
_cpio45890644editdlrm
_cplay3430644editdlrm
_cpupower42230644editdlrm
_cryptsetup66100644editdlrm
_cscope15940644editdlrm
_cssh7950644editdlrm
_csup11280644editdlrm
_ctags_tags1700644editdlrm
_cu6060644editdlrm
_curl2240644editdlrm
_cut23650644editdlrm
_cvs289970644editdlrm
_cvsup9370644editdlrm
_cygcheck20520644editdlrm
_cygpath26130644editdlrm
_cygrunsrv27720644editdlrm
_cygserver15390644editdlrm
_cygstart21780644editdlrm
_dak89730644editdlrm
_darcs12110644editdlrm
_date30610644editdlrm
_dates40660644editdlrm
_date_formats28000644editdlrm
_dbus35660644editdlrm
_dchroot11270644editdlrm
_dchroot-dsa10490644editdlrm
_dconf17870644editdlrm
_dcop29450644editdlrm
_dcut50530644editdlrm
_dd8160644editdlrm
_debbugs_bugnumber3880644editdlrm
_debchange50410644editdlrm
_debcheckout11980644editdlrm
_debdiff9060644editdlrm
_debfoster32200644editdlrm
_deborphan23460644editdlrm
_debsign6230644editdlrm
_deb_architectures3160644editdlrm
_deb_codenames3470644editdlrm
_deb_packages44090644editdlrm
_default6820644editdlrm
_defaults17260644editdlrm
_delimiters3300644editdlrm
_describe37010644editdlrm
_description30540644editdlrm
_devtodo46690644editdlrm
_df29360644editdlrm
_dhclient30440644editdlrm
_dhcpinfo12030644editdlrm
_dict21410644editdlrm
_dict_words12920644editdlrm
_diff900644editdlrm
_diffstat17560644editdlrm
_diff_options96750644editdlrm
_dig46070644editdlrm
_directories1300644editdlrm
_directory_stack14210644editdlrm
_dirs2620644editdlrm
_dir_list6800644editdlrm
_disable6830644editdlrm
_dispatch20570644editdlrm
_django60550644editdlrm
_dladm281500644editdlrm
_dlocate8930644editdlrm
_dmesg6380644editdlrm
_dmidecode13410644editdlrm
_dnf63440644editdlrm
_dns_types3310644editdlrm
_doas6560644editdlrm
_domains5850644editdlrm
_dpatch-edit-patch12750644editdlrm
_dpkg80840644editdlrm
_dpkg-buildpackage11410644editdlrm
_dpkg-cross11470644editdlrm
_dpkg-repack3210644editdlrm
_dpkg_source13180644editdlrm
_dput21530644editdlrm
_drill19580644editdlrm
_dsh17420644editdlrm
_dtrace21240644editdlrm
_du45880644editdlrm
_dumpadm8660644editdlrm
_dumper3770644editdlrm
_dupload7800644editdlrm
_dvi40410644editdlrm
_dynamic_directory_name3780644editdlrm
_ecasound85300644editdlrm
_echotc930644editdlrm
_echoti940644editdlrm
_elfdump13180644editdlrm
_elinks29580644editdlrm
_elm6530644editdlrm
_email_addresses56280644editdlrm
_emulate2740644editdlrm
_enable6920644editdlrm
_enscript76310644editdlrm
_entr5920644editdlrm
_env12100644editdlrm
_equal330644editdlrm
_espeak21690644editdlrm
_etags21350644editdlrm
_ethtool115800644editdlrm
_evince16480644editdlrm
_expand71240644editdlrm
_expand_alias20720644editdlrm
_expand_word3070644editdlrm
_extensions10180644editdlrm
_external_pwds10630644editdlrm
_fakeroot4860644editdlrm
_fbsd_architectures1350644editdlrm
_fc30720644editdlrm
_feh70110644editdlrm
_fetch32360644editdlrm
_fetchmail5540644editdlrm
_ffmpeg80230644editdlrm
_figlet15030644editdlrm
_files37780644editdlrm
_file_descriptors14740644editdlrm
_file_flags15290644editdlrm
_file_modes8620644editdlrm
_file_systems12630644editdlrm
_find55270644editdlrm
_find_net_interfaces13340644editdlrm
_finger21570644editdlrm
_fink53970644editdlrm
_first16310644editdlrm
_flac59180644editdlrm
_flasher16600644editdlrm
_flex31560644editdlrm
_floppy1100644editdlrm
_flowadm27540644editdlrm
_fmadm28720644editdlrm
_fmt19750644editdlrm
_fold7130644editdlrm
_fortune6010644editdlrm
_freebsd-update11440644editdlrm
_fsh5460644editdlrm
_fstat5340644editdlrm
_functions2330644editdlrm
_fuser25030644editdlrm
_fusermount6600644editdlrm
_fuse_arguments10780644editdlrm
_fuse_values16480644editdlrm
_fw_update2940644editdlrm
_gcc779700644editdlrm
_gcore14220644editdlrm
_gdb15890644editdlrm
_gem132260644editdlrm
_generic3280644editdlrm
_genisoimage20060644editdlrm
_getclip5320644editdlrm
_getconf22130644editdlrm
_getent17780644editdlrm
_getfacl15860644editdlrm
_getmail10800644editdlrm
_getopt11820644editdlrm
_git3479510644editdlrm
_git-buildpackage26320644editdlrm
_global31870644editdlrm
_global_tags1860644editdlrm
_globflags11090644editdlrm
_globquals67030644editdlrm
_globqual_delims4660644editdlrm
_gnome-gv1390644editdlrm
_gnupod56990644editdlrm
_gnutls116300644editdlrm
_gnu_generic1780644editdlrm
_go2560644editdlrm
_gpasswd7010644editdlrm
_gpg121150644editdlrm
_gphoto251430644editdlrm
_gprof13370644editdlrm
_gqview6190644editdlrm
_gradle69800644editdlrm
_graphicsmagick289020644editdlrm
_grep59290644editdlrm
_grep-excuses3150644editdlrm
_groff22500644editdlrm
_groups10070644editdlrm
_growisofs196180644editdlrm
_gs16180644editdlrm
_gsettings13490644editdlrm
_gstat4570644editdlrm
_guard1690644editdlrm
_guilt15520644editdlrm
_gv13490644editdlrm
_gzip42700644editdlrm
_hash11280644editdlrm
_have_glob_qual9100644editdlrm
_hdiutil225480644editdlrm
_head16880644editdlrm
_hexdump13290644editdlrm
_hg310460644editdlrm
_history14740644editdlrm
_history_complete_word34510644editdlrm
_history_modifiers20370644editdlrm
_hosts30000644editdlrm
_htop6400644editdlrm
_hwinfo19170644editdlrm
_iconv28610644editdlrm
_iconvconfig5080644editdlrm
_id18860644editdlrm
_ifconfig28800644editdlrm
_iftop9180644editdlrm
_ignored16470644editdlrm
_imagemagick281430644editdlrm
_inetadm4060644editdlrm
_initctl63300644editdlrm
_init_d31320644editdlrm
_install45060644editdlrm
_invoke-rc.d5550644editdlrm
_in_vared8130644editdlrm
_ionice11650644editdlrm
_iostat62580644editdlrm
_ip209300644editdlrm
_ipadm126080644editdlrm
_ipset61860644editdlrm
_iptables106020644editdlrm
_irssi13510644editdlrm
_ispell42100644editdlrm
_iwconfig23990644editdlrm
_jail24630644editdlrm
_jails7470644editdlrm
_java251940644editdlrm
_java_class6930644editdlrm
_jexec5440644editdlrm
_jls7050644editdlrm
_jobs19870644editdlrm
_jobs_bg270644editdlrm
_jobs_builtin3600644editdlrm
_jobs_fg310644editdlrm
_joe22410644editdlrm
_join11840644editdlrm
_jot25300644editdlrm
_jq21680644editdlrm
_kdeconnect19140644editdlrm
_kfmclient32670644editdlrm
_kill6780644editdlrm
_killall3650644editdlrm
_kld10270644editdlrm
_knock3040644editdlrm
_kpartx4460644editdlrm
_kvno6690644editdlrm
_last27560644editdlrm
_ldconfig25330644editdlrm
_ldd16490644editdlrm
_ld_debug11690644editdlrm
_less60580644editdlrm
_lha17510644editdlrm
_libvirt97630644editdlrm
_lighttpd4140644editdlrm
_limit1660644editdlrm
_limits1050644editdlrm
_links20910644editdlrm
_lintian47300644editdlrm
_list8220644editdlrm
_list_files14240644editdlrm
_lldb26020644editdlrm
_ln36540644editdlrm
_loadkeys5950644editdlrm
_locale28700644editdlrm
_localedef30910644editdlrm
_locales3490644editdlrm
_locate42510644editdlrm
_logical_volumes4550644editdlrm
_look9980644editdlrm
_losetup21240644editdlrm
_lp82810644editdlrm
_ls90510644editdlrm
_lsattr3350644editdlrm
_lsblk27320644editdlrm
_lscfg6580644editdlrm
_lsdev14270644editdlrm
_lslv3480644editdlrm
_lsof45530644editdlrm
_lspv4320644editdlrm
_lsusb11890644editdlrm
_lsvg5050644editdlrm
_ltrace22000644editdlrm
_lynx111660644editdlrm
_lzop39310644editdlrm
_mac_applications1390644editdlrm
_mac_files_for_application20000644editdlrm
_madison6440644editdlrm
_mail4670644editdlrm
_mailboxes60240644editdlrm
_main_complete109770644editdlrm
_make95270644editdlrm
_make-kpkg26570644editdlrm
_man43390644editdlrm
_match24290644editdlrm
_math4830644editdlrm
_math_params600644editdlrm
_matlab14340644editdlrm
_md5sum7370644editdlrm
_mdadm82160644editdlrm
_mdfind9910644editdlrm
_mdls4640644editdlrm
_mdutil7230644editdlrm
_members3900644editdlrm
_mencal10820644editdlrm
_menu5580644editdlrm
_mere570644editdlrm
_mergechanges1060644editdlrm
_message8400644editdlrm
_mh37640644editdlrm
_mii-tool8560644editdlrm
_mime_types11800644editdlrm
_mixerctl5760644editdlrm
_mkdir17190644editdlrm
_mkshortcut12740644editdlrm
_mktemp15490644editdlrm
_mkzsh3710644editdlrm
_module54780644editdlrm
_module-assistant20950644editdlrm
_module_math_func2210644editdlrm
_modutils50200644editdlrm
_mondo20010644editdlrm
_monotone23760644editdlrm
_moosic120270644editdlrm
_mosh17570644editdlrm
_most_recent_file8830644editdlrm
_mount392710644editdlrm
_mozilla47770644editdlrm
_mpc94110644editdlrm
_mplayer83500644editdlrm
_mt32120644editdlrm
_mtools40900644editdlrm
_mtr33220644editdlrm
_multi_parts83510644editdlrm
_mutt13830644editdlrm
_mv20210644editdlrm
_mysqldiff10570644editdlrm
_mysql_utils99790644editdlrm
_my_accounts450644editdlrm
_nautilus5380644editdlrm
_nbsd_architectures5020644editdlrm
_ncftp4290644editdlrm
_nedit28650644editdlrm
_netcat13210644editdlrm
_netscape29350644editdlrm
_netstat22760644editdlrm
_networkmanager89560644editdlrm
_net_interfaces2040644editdlrm
_newsgroups2100644editdlrm
_next_label6000644editdlrm
_next_tags34640644editdlrm
_ngrep17370644editdlrm
_nice2460644editdlrm
_nkf21460644editdlrm
_nl18720644editdlrm
_nm58260644editdlrm
_nmap34720644editdlrm
_normal10100644editdlrm
_nothing900644editdlrm
_notmuch22570644editdlrm
_npm1730644editdlrm
_nslookup56770644editdlrm
_numfmt15770644editdlrm
_nvram7930644editdlrm
_objdump104370644editdlrm
_object_classes1460644editdlrm
_object_files2170644editdlrm
_obsd_architectures1780644editdlrm
_od29740644editdlrm
_okular3320644editdlrm
_oldlist19150644editdlrm
_open11030644editdlrm
_openstack91920644editdlrm
_options1820644editdlrm
_options_set2990644editdlrm
_options_unset3090644editdlrm
_osascript9560644editdlrm
_osc41230644editdlrm
_other_accounts640644editdlrm
_otool22300644editdlrm
_pack3610644editdlrm
_parameter370644editdlrm
_parameters9750644editdlrm
_paste5750644editdlrm
_patch86760644editdlrm
_patchutils48580644editdlrm
_path_commands30560644editdlrm
_path_files279450644editdlrm
_pax27900644editdlrm
_pbcopy6140644editdlrm
_pbm258620644editdlrm
_pbuilder11000644editdlrm
_pdf4220644editdlrm
_pdftk13690644editdlrm
_perforce1028820644editdlrm
_perl53910644editdlrm
_perldoc23370644editdlrm
_perl_basepods7160644editdlrm
_perl_modules46780644editdlrm
_pfctl48910644editdlrm
_pfexec7510644editdlrm
_pgrep51430644editdlrm
_php31720644editdlrm
_physical_volumes1240644editdlrm
_pick_variant9180644editdlrm
_picocom21590644editdlrm
_pidof9240644editdlrm
_pids18350644editdlrm
_pine29450644editdlrm
_ping72660644editdlrm
_piuparts9760644editdlrm
_pkg-config31040644editdlrm
_pkg5124410644editdlrm
_pkgadd10120644editdlrm
_pkginfo6130644editdlrm
_pkgrm5510644editdlrm
_pkgtool24350644editdlrm
_pkg_instance3530644editdlrm
_plutil19000644editdlrm
_pon4430644editdlrm
_portaudit5630644editdlrm
_portlint7480644editdlrm
_portmaster39800644editdlrm
_ports2850644editdlrm
_portsnap10530644editdlrm
_postfix68160644editdlrm
_postscript3330644editdlrm
_powerd6280644editdlrm
_prcs68480644editdlrm
_precommand2050644editdlrm
_prefix16180644editdlrm
_print41450644editdlrm
_printenv1140644editdlrm
_printers32090644editdlrm
_procstat8980644editdlrm
_prompt2960644editdlrm
_prove25030644editdlrm
_prstat18310644editdlrm
_ps85420644editdlrm
_ps123457940644editdlrm
_pscp7160644editdlrm
_pspdf3340644editdlrm
_psutils37820644editdlrm
_ptree2090644editdlrm
_pump14410644editdlrm
_putclip5380644editdlrm
_pwgen15670644editdlrm
_pydoc8580644editdlrm
_python21600644editdlrm
_python_modules11140644editdlrm
_qdbus27480644editdlrm
_qemu26160644editdlrm
_qiv26470644editdlrm
_qtplay5250644editdlrm
_quilt88810644editdlrm
_raggle27400644editdlrm
_rake28490644editdlrm
_ranlib4030644editdlrm
_rar45740644editdlrm
_rcctl10440644editdlrm
_rcs7660644editdlrm
_rdesktop38000644editdlrm
_read9190644editdlrm
_readelf33100644editdlrm
_readshortcut10570644editdlrm
_read_comp38520644editdlrm
_rebootin7410644editdlrm
_redirect4210644editdlrm
_regex_arguments24960644editdlrm
_regex_words9360644editdlrm
_remote_files27190644editdlrm
_renice4240644editdlrm
_reprepro26390644editdlrm
_requested2680644editdlrm
_retrieve_cache7320644editdlrm
_retrieve_mac_apps33080644editdlrm
_ri37980644editdlrm
_rlogin18850644editdlrm
_rm20450644editdlrm
_route73870644editdlrm
_rpm113220644editdlrm
_rpmbuild33880644editdlrm
_rrdtool5910644editdlrm
_rsync137240644editdlrm
_rubber27260644editdlrm
_ruby57510644editdlrm
_run-help2090644editdlrm
_runit22030644editdlrm
_sablotron18030644editdlrm
_samba34360644editdlrm
_savecore2280644editdlrm
_say30310644editdlrm
_sccs61900644editdlrm
_sched4670644editdlrm
_schedtool9160644editdlrm
_schroot15990644editdlrm
_scl11230644editdlrm
_screen70730644editdlrm
_script24270644editdlrm
_scselect9410644editdlrm
_scutil20070644editdlrm
_sed21720644editdlrm
_sep_parts37970644editdlrm
_seq9300644editdlrm
_sequence13160644editdlrm
_service12150644editdlrm
_services9510644editdlrm
_set14730644editdlrm
_setfacl20490644editdlrm
_setopt5710644editdlrm
_setup22460644editdlrm
_setxkbmap24340644editdlrm
_set_command8150644editdlrm
_sh2900644editdlrm
_showmount4280644editdlrm
_shutdown20470644editdlrm
_signals11010644editdlrm
_signify12270644editdlrm
_sisu39380644editdlrm
_slrn11310644editdlrm
_smartmontools45060644editdlrm
_smit8560644editdlrm
_snoop14850644editdlrm
_socket10890644editdlrm
_sockstat11140644editdlrm
_softwareupdate23320644editdlrm
_sort37280644editdlrm
_source2260644editdlrm
_spamassassin4750644editdlrm
_split28720644editdlrm
_sqlite21900644editdlrm
_sqsh21590644editdlrm
_ss47750644editdlrm
_ssh276750644editdlrm
_sshfs24930644editdlrm
_ssh_hosts11010644editdlrm
_stat12800644editdlrm
_stdbuf6740644editdlrm
_stgit12930644editdlrm
_store_cache19290644editdlrm
_strace53610644editdlrm
_strftime2790644editdlrm
_strings24740644editdlrm
_strip28960644editdlrm
_stty7760644editdlrm
_su26900644editdlrm
_sublimetext6050644editdlrm
_subscript43260644editdlrm
_subversion165810644editdlrm
_sub_commands1360644editdlrm
_sudo32950644editdlrm
_suffix_alias_files5250644editdlrm
_surfraw181420644editdlrm
_SUSEconfig2790644editdlrm
_svcadm18300644editdlrm
_svccfg21180644editdlrm
_svcprop7930644editdlrm
_svcs11450644editdlrm
_svcs_fmri28970644editdlrm
_svn-buildpackage25830644editdlrm
_swaks19170644editdlrm
_swift59550644editdlrm
_sw_vers1860644editdlrm
_sysctl24580644editdlrm
_sysrc29710644editdlrm
_sysstat61520644editdlrm
_systat28810644editdlrm
_system_profiler13110644editdlrm
_sys_calls5450644editdlrm
_tags14660644editdlrm
_tail29250644editdlrm
_tar64860644editdlrm
_tardy6780644editdlrm
_tar_archive10270644editdlrm
_tcpdump85760644editdlrm
_tcpsys9250644editdlrm
_tcptraceroute5830644editdlrm
_telnet29130644editdlrm
_terminals2300644editdlrm
_tex19670644editdlrm
_texi1290644editdlrm
_texinfo165090644editdlrm
_tidy37200644editdlrm
_tiff72300644editdlrm
_tilde7320644editdlrm
_tilde_files7850644editdlrm
_timeout8150644editdlrm
_time_zone2220644editdlrm
_tin21960644editdlrm
_tla179990644editdlrm
_tmux552980644editdlrm
_todo.sh45910644editdlrm
_toilet8630644editdlrm
_toolchain-source3280644editdlrm
_top69110644editdlrm
_topgit1770644editdlrm
_totd2870644editdlrm
_touch15620644editdlrm
_tpb9750644editdlrm
_tpconfig11200644editdlrm
_tput4880644editdlrm
_tr15070644editdlrm
_tracepath3200644editdlrm
_trap1010644editdlrm
_tree27950644editdlrm
_truss31210644editdlrm
_ttyctl1130644editdlrm
_ttys4740644editdlrm
_tune2fs22050644editdlrm
_twidge17050644editdlrm
_twisted13710644editdlrm
_typeset54900644editdlrm
_ulimit10200644editdlrm
_uml52610644editdlrm
_umountable14680644editdlrm
_unace4720644editdlrm
_uname30280644editdlrm
_unexpand11300644editdlrm
_unhash4000644editdlrm
_uniq15340644editdlrm
_unison55160644editdlrm
_units28150644editdlrm
_update-alternatives17710644editdlrm
_update-rc.d6370644editdlrm
_urls60500644editdlrm
_urpmi135700644editdlrm
_urxvt28290644editdlrm
_uscan10370644editdlrm
_users2400644editdlrm
_users_on2530644editdlrm
_user_admin62720644editdlrm
_user_at_host7290644editdlrm
_user_expand37640644editdlrm
_user_math_func1880644editdlrm
_uzbl3040644editdlrm
_valgrind50110644editdlrm
_value16430644editdlrm
_values38200644editdlrm
_vared4320644editdlrm
_vars5040644editdlrm
_vcsh23830644editdlrm
_vim57300644editdlrm
_vim-addons19090644editdlrm
_vmctl21680644editdlrm
_vmstat49060644editdlrm
_vnc41570644editdlrm
_volume_groups870644editdlrm
_vorbis56990644editdlrm
_vorbiscomment6170644editdlrm
_vserver30050644editdlrm
_vux18120644editdlrm
_w14040644editdlrm
_w3m45350644editdlrm
_wait660644editdlrm
_wajig25180644editdlrm
_wakeup_capable_devices4390644editdlrm
_wanna-build20700644editdlrm
_wanted1830644editdlrm
_watch2050644editdlrm
_watch-snoop4000644editdlrm
_wc7930644editdlrm
_webbrowser2100644editdlrm
_wget109520644editdlrm
_whereis360644editdlrm
_which11910644editdlrm
_who24170644editdlrm
_whois48390644editdlrm
_widgets1930644editdlrm
_wiggle11200644editdlrm
_wipefs13350644editdlrm
_wpa_cli8250644editdlrm
_xargs27380644editdlrm
_xauth25800644editdlrm
_xautolock6310644editdlrm
_xclip10520644editdlrm
_xdvi17040644editdlrm
_xfig19720644editdlrm
_xft_fonts13540644editdlrm
_xloadimage39020644editdlrm
_xmlsoft68320644editdlrm
_xmlstarlet74600644editdlrm
_xmms253870644editdlrm
_xmodmap22740644editdlrm
_xournal1260644editdlrm
_xpdf17590644editdlrm
_xrandr24570644editdlrm
_xscreensaver8230644editdlrm
_xset52000644editdlrm
_xterm9390644editdlrm
_xt_arguments17440644editdlrm
_xt_session_id400644editdlrm
_xv24840644editdlrm
_xwit47430644editdlrm
_xxd21270644editdlrm
_xz44130644editdlrm
_x_arguments6000644editdlrm
_x_borderwidth1250644editdlrm
_x_color10070644editdlrm
_x_colormapid3960644editdlrm
_x_cursor4090644editdlrm
_x_display750644editdlrm
_x_extension4840644editdlrm
_x_font2860644editdlrm
_x_geometry1250644editdlrm
_x_keysym6150644editdlrm
_x_locale1200644editdlrm
_x_modifier1530644editdlrm
_x_name1160644editdlrm
_x_resource1240644editdlrm
_x_selection_timeout1300644editdlrm
_x_title1180644editdlrm
_x_utils64200644editdlrm
_x_visual2720644editdlrm
_x_window4020644editdlrm
_yafc18270644editdlrm
_yast6500644editdlrm
_yodl6580644editdlrm
_yp32580644editdlrm
_yum172930644editdlrm
_zargs20560644editdlrm
_zattr5970644editdlrm
_zcalc2170644editdlrm
_zcalc_line17420644editdlrm
_zcat1090644editdlrm
_zcompile9270644editdlrm
_zdump1120644editdlrm
_zed2030644editdlrm
_zfs181880644editdlrm
_zfs_dataset27570644editdlrm
_zfs_keysource_props4080644editdlrm
_zfs_pool510644editdlrm
_zftp25820644editdlrm
_zip97260644editdlrm
_zle27710644editdlrm
_zlogin4720644editdlrm
_zmodload28410644editdlrm
_zmv8050644editdlrm
_zoneadm40610644editdlrm
_zones2560644editdlrm
_zpool94920644editdlrm
_zpty20840644editdlrm
_zsh5900644editdlrm
_zsh-mime-handler7190644editdlrm
_zsocket3840644editdlrm
_zstyle195080644editdlrm
_ztodo5860644editdlrm
_zypper60930644editdlrm
Edit: /usr/share/zsh/5.5.1/functions/_tmux (55298B)
#compdef tmux # tmux completion for zsh . # # Configuration: # # - On some OSs, the directory for tmux's server sockets may not be # the default (which is /tmp/tmux-/), but say # /var/run/tmux/tmux-, in which case the completion for # 'tmux -L ' will not be able to find the sockets in the default # location (debian does this, for instance); tell _tmux the right place # to look: # % zstyle ':completion:*:*:tmux:*:sockets' socketdir "/var/run/tmux/tmux-${UID}" # # - tmux knows a *lot* of sub-commands, hence 'tmux ' returns a lot # of possible completions. _tmux knows about all commands and their aliases. # By default, both are offered. If you do not care about the aliases, do this: # % zstyle ':completion:*:*:tmux:*:subcommands' mode 'commands' # # The same can be done to only return aliases by setting the above style # to 'aliases'. The default value is 'both' (but actually every value # different from 'commands' and 'aliases' will have the same effect). # # 'lsw' is an alias for 'list-windows' for example; note that not all # commands have aliases. So probably, either the default 'both' or # 'commands' makes most sense for this style. # # - For finer grained control over what is suggested as possible completions, # the 'ignored-patterns' style may be used; suppose you think that only # '*-window' or '*-windows' are worth being completed. You would get that # behaviour like this: # % zstyle ':completion:*:*:tmux:*:subcommands' ignored-patterns '^*-window(|s)' # # Some tmux commands currently do not work if called from a shell prompt, # so it would make sense to ignore them per default (at the time of writing, # those commands are choose-{session,client,window}, confirm-before and # find-window. This would ignore them: # % zstyle ':completion:*:*:tmux:*:subcommands' ignored-patterns \ # 'choose-*' 'confirm-before' 'find-window' # # The configuration for subcommand completions may be done in # this context: ':completion:*:*:tmux-:*:*' # # TODO: # # - 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. typeset -ga _tmux_commands=() _tmux_aliases=() typeset -gA _tmux_aliasmap _tmux_aliasmap=( # clients and sessions attach attach-session detach detach-client has has-session lockc lock-client locks lock-session lsc list-clients lscm list-commands ls list-sessions new new-session refresh refresh-client rename rename-session showmsgs show-messages source source-file start start-server suspendc suspend-client switchc switch-client # windows and panes breakp break-pane capturep capture-pane displayp display-panes findw find-window joinp join-pane 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 next next-window pipep pipe-pane prev previous-window prevl previous-layout renamew rename-window resizep resize-pane respawnp respawn-pane respawnw respawn-window rotatew rotate-window selectl select-layout selectp select-pane selectw select-window splitw split-window swapp swap-pane swapw swap-window unlinkw unlink-window # key bindings bind bind-key lsk list-keys send send-keys unbind unbind-key # options set set-option setw set-window-option show show-options showw show-window-options # environment setenv set-environment showenv show-environment # status line confirm confirm-before display display-message # buffers clearhist clear-history deleteb delete-buffer lsb list-buffers loadb load-buffer pasteb paste-buffer saveb save-buffer setb set-buffer showb show-buffer # miscellaneous if if-shell lock lock-server run run-shell info server-info wait wait-for ) # --- Sub-command functions --- # These *must* be called _tmux-*(); The description generation relies on # them being named that way. *No* other functions may match that pattern. # Other utility functions should be named __tmux-*() (see below). # # Another thing, the description generation needs, is handling of # $tmux_describe: If that parameter is non-empty, the sub-command function # should only print a description of the sub-command it handles and return # immediately after doing so. # # To add support for a new sub-command, you only have to add a new # _tmux-() function below (preferably alphabetically sorted), that # behaves like described above; and add a alias->command pair in the # _tmux_aliasmap associative array above (if the command in fact has an # alias). The rest should just work[tm]. _tmux-attach-session() { [[ -n ${tmux_describe} ]] && print "attach or switch to a session" && return _arguments -s \ '-c+[specify working directory for the session]:directory:_directories' \ '-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]" } _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]' \ '-T+[specify key table for the binding]:key table' \ '1:key' \ '*:::template:= _tmux' } _tmux-break-pane() { [[ -n ${tmux_describe} ]] && print "break a pane from an existing into a new window" && return _arguments -s \ "-d[don't make the new window become the active one]" \ '-F+[specify output format]:format:__tmux-format' \ '-P[print information of new window after it has been created]' \ '-n+[specify window name]:name' \ '-s+[specify source pane]:pane:__tmux-panes' \ '-t+[specify destination window]:pane:__tmux-panes' } _tmux-capture-pane() { [[ -n ${tmux_describe} ]] && print "capture the contents of a pane to a buffer" && return _arguments -s \ '-a[use alternate screen]' \ '(-p)-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]:line number (- means last line)' \ '-J[join wrapped lines and 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]' \ '-S[specify start line to capture]:first line (- means start of scrollback)' \ '-t+[choose source pane]:source pane:__tmux-panes' } _tmux-choose-buffer() { [[ -n ${tmux_describe} ]] && print "put a pane into buffer choice mode" && return _arguments -s \ '-N[start without the preview]' \ '-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)' \ '-t+[specify target window]:session:__tmux-windows' \ '*:::template:= _tmux' } _tmux-choose-client() { [[ -n ${tmux_describe} ]] && print "put a window into client choice mode" && return _arguments -s \ '-N[start without the preview]' \ '-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)' \ '-t+[specify target window]:session:__tmux-windows' \ '*:::template:= _tmux' } _tmux-choose-tree() { [[ -n ${tmux_describe} ]] && print "put a window into tree choice mode" && return _arguments -s \ '-N[start without the preview]' \ '-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)' \ '-s[choose among sessions]' \ '-t+[specify target window]:session:__tmux-windows' \ '-w[choose among windows]' \ '*:::template:= _tmux' } _tmux-clear-history() { [[ -n ${tmux_describe} ]] && print "remove and clear history for a pane" && return _arguments '-t+[specify target pane]:pane:__tmux-panes' } _tmux-clock-mode() { [[ -n ${tmux_describe} ]] && print "enter clock mode" && return _arguments '-t+[specify target pane]:pane:__tmux-panes' } _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' \ '-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)' \ '-t+[specify target client]:client:__tmux-clients' \ '*:::template:= _tmux' } _tmux-confirm-before() { [[ -n ${tmux_describe} ]] && print "run a command but ask for confirmation before" && return _arguments -s \ '-p+[specify prompt]:prompt string' \ '-t+[specify target client]:client:__tmux-clients' \ '*:::command:= _tmux' } _tmux-copy-mode() { [[ -n ${tmux_describe} ]] && print "enter copy mode" && return _arguments -s \ '-t+[specify target pane]:pane:__tmux-panes' \ '-u[scroll up one page]' \ '-M[begin a mouse drag]' } _tmux-delete-buffer() { [[ -n ${tmux_describe} ]] && print "delete a paste buffer" && return _arguments '-b+[specify target buffer name]:buffer:__tmux-buffers' } _tmux-detach-client() { [[ -n ${tmux_describe} ]] && print "detach a client from the server" && return _arguments -s \ '-a[kill all clients except for the named by -t]' \ '-P[send SIGHUP to parent process]' \ '-E+[run specified shell command to replace the client]:shell command:_cmdstring' \ '-s+[specify target session and kill its clients]:session:__tmux-sessions-attached' \ '-t+[specify target client]:client:__tmux-clients' } _tmux-display-message() { [[ -n ${tmux_describe} ]] && print "display a message in the status line" && return _arguments -s -S \ '-c+[specify target client]:client:__tmux-clients' \ '-p[print message to stdout]' \ '-t+[specify target client]:client:__tmux-clients' \ '-F+[specify output format]:format:__tmux-formats' \ ':message' } _tmux-display-panes() { [[ -n ${tmux_describe} ]] && print "display an indicator for each visible pane" && return _arguments -S \ '-d+[time to show indicator for]:duration (ms)' \ '-t+[specify target client]:client:__tmux-clients' \ '*:::command:= _tmux' } _tmux-find-window() { [[ -n ${tmux_describe} ]] && print "search for a pattern in windows" && return _arguments -s \ '-C[match visible contents]' \ '-N[match window name]' \ '-T[match window title]' \ '-t+[specify target window]:window:__tmux-windows' \ ':window search pattern' } _tmux-has-session() { [[ -n ${tmux_describe} ]] && print "check and report if a session exists on the server" && return _arguments '-t+[specify target session]:session:__tmux-sessions' } _tmux-if-shell() { [[ -n ${tmux_describe} ]] && print "execute a tmux command if a shell-command succeeded" && return local curcontext="$curcontext" state line ret=1 _arguments -C -s \ '-b[run shell command in background]' \ "-F[don't execute shell command but use it as a string-value]" \ '-t+[specify target pane]:pane:__tmux-panes' \ '1:shell command:_cmdstring' \ '2:tmux command (success):->tmuxcmd' \ '3:tmux command (failure):->tmuxcmd' && ret=0 if [[ -n $state ]]; then compset -q _tmux && ret=0 fi } _tmux-join-pane() { [[ -n ${tmux_describe} ]] && print "split a pane and move an existing one into the new space" && return _arguments -s \ '-b[join source pane left of or above target pane]' \ "-d[don't 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+[specify source pane]:pane:__tmux-panes' \ '-t+[specify target pane]:pane:__tmux-panes' } _tmux-kill-pane() { [[ -n ${tmux_describe} ]] && print "destroy a given pane" && return _arguments -s \ '-a[kill all panes except the one specified by -t]' \ '-t+[specify target pane]:pane:__tmux-panes' } _tmux-kill-server() { [[ -n ${tmux_describe} ]] && print "kill clients, sessions and server" && return __tmux-nothing-else } _tmux-kill-session() { [[ -n ${tmux_describe} ]] && print "destroy a given session" && return _arguments -s \ '-a[kill all session except the one specified by -t]' \ '-t+[specify target session]:session:__tmux-sessions' \ '-C[clear alerts (bell, activity, silence) in all windows linked to the session]' } _tmux-kill-window() { [[ -n ${tmux_describe} ]] && print "destroy a given window" && return _arguments -s \ '-a[kill all windows except the one specified by -t]' \ '-t+[specify target window]:window:__tmux-windows' } _tmux-last-pane() { [[ -n ${tmux_describe} ]] && print "select the previously selected pane" && return _arguments -s \ '-d[disable input to the pane]' \ '-e[enable input to the pane]' \ '-t+[specify session]:session:__tmux-sessions' } _tmux-last-window() { [[ -n ${tmux_describe} ]] && print "select the previously selected window" && return _arguments '-t+[specify session]:session:__tmux-sessions' } _tmux-link-window() { [[ -n ${tmux_describe} ]] && print "link a window to another" && return _arguments -s \ "-d[don't make the new window become the active one]" \ '-k[kill the target window if it exists]' \ '-s+[specify source window]:window:__tmux-windows' \ '-t+[specify destination window]:window:__tmux-windows' } _tmux-list-buffers() { [[ -n ${tmux_describe} ]] && print "list paste buffers of a session" && return _arguments '-F+[specify output format]:format:__tmux-formats' } _tmux-list-clients() { [[ -n ${tmux_describe} ]] && print "list clients attached to server" && return _arguments -s \ '-F+[specify output format]:format:__tmux-formats' \ '-t+[specify session]:session:__tmux-sessions' } _tmux-list-commands() { [[ -n ${tmux_describe} ]] && print "list supported sub-commands" && return _arguments '-F+[specify format]:format' } _tmux-list-keys() { [[ -n ${tmux_describe} ]] && print "list all key-bindings" && return _arguments -s \ '-T+[specify key table]:key table' } _tmux-list-panes() { [[ -n ${tmux_describe} ]] && print "list panes of a window" && return local -a args if (( ${+words[(r)-*s*]} )); then args=( '-t+[specify target session]:session:__tmux-sessions' ) else args=( '-t+[specify target window]:window:__tmux-windows' ) fi _arguments -s $args \ '-a[list all panes the server possesses]' \ '-F+[specify output format]:format:__tmux-formats' \ '-s[if specified, -t chooses a session]' } _tmux-list-sessions() { [[ -n ${tmux_describe} ]] && print "list sessions managed by server" && return _arguments '-F+[specify output format]:format:__tmux-formats' } _tmux-list-windows() { [[ -n ${tmux_describe} ]] && print "list windows of a session" && return _arguments -s \ '-a[list all windows the tmux server possesses]' \ '-F[specify output format]:format:__tmux-formats' \ '-t+[specify session]:session:__tmux-sessions' } _tmux-load-buffer() { [[ -n ${tmux_describe} ]] && print "load a file into a paste buffer" && return _arguments -A "-*" -S \ '-b+[specify target buffer name]:buffer:__tmux-buffers' \ '1:file:_files' } _tmux-lock-client() { [[ -n ${tmux_describe} ]] && print "lock a client" && return _arguments '-t+[specify client]:client:__tmux-clients' } _tmux-lock-server() { [[ -n ${tmux_describe} ]] && print "lock all clients attached to the server" && return __tmux-nothing-else } _tmux-lock-session() { [[ -n ${tmux_describe} ]] && print "lock all clients attached to a session" && return _arguments '-t+[specify session]:session:__tmux-sessions' } _tmux-move-pane() { [[ -n ${tmux_describe} ]] && print "move a pane into a new space" && return _arguments -s \ '-b[join source pane left of or above target pane]' \ "-d[don't make the new window become the active one]" \ '-h[split horizontally]' \ '-v[split vertically]' \ "-l+[define new pane's size]:numeric value" \ "-p+[define new pane's size in percent]:numeric value" \ '-s+[specify source pane]:pane:__tmux-panes' \ '-t+[specify target pane]:pane:__tmux-panes' } _tmux-move-window() { [[ -n ${tmux_describe} ]] && print "move a window to another" && return _arguments -s \ "-d[don't make the new window become the active one]" \ '-k[kill the target window if it exists]' \ '-s+[specify source window]:window:__tmux-windows' \ '-r[renumber windows in session in sequential order]' \ '-t+[specify destination window]:window:__tmux-windows' } _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' \ "-d[don't attach new session to current terminal]" \ "-D[in case of -A behave like attach-session's -d]" \ "-E[don't apply update-environment option]" \ '-F+[specify output format]:format:__tmux-formats' \ '-n+[specify initial window name]:window name' \ '-P[print information about new session after it is created]' \ '-s+[name the session]:session name:__tmux-sessions' \ '-t+[specify target session]:session:__tmux-sessions' \ '-x[specify width]:width' \ '-y[specify height]:height' \ '*:: :_cmdambivalent' } _tmux-new-window() { [[ -n ${tmux_describe} ]] && print "create a new window" && return _arguments -s -A "-*" -S \ '-a[insert new window at next free index from -t]' \ '-c+[specify working directory for the session]:directory:_directories' \ "-d[don't make the new window become the active one]" \ '-F+[specify output format]:format:__tmux-formats' \ '-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]:window:__tmux-windows' \ '*:: :_cmdambivalent' } _tmux-next-layout() { [[ -n ${tmux_describe} ]] && print "move a window to the next layout" && return _arguments '-t+[specify target window]:window:__tmux-windows' } _tmux-next-window() { [[ -n ${tmux_describe} ]] && print "move to the next window in a session" && return _arguments -s \ '-a[move to the next window with an alert]' \ '-t+[specify target session]:session:__tmux-sessions' } _tmux-paste-buffer() { [[ -n ${tmux_describe} ]] && print "insert a paste buffer into the window" && return _arguments -s \ '-b+[specify buffer]:source buffer:__tmux-buffers' \ '-d[remove buffer from stack after pasting]' \ '-p[use bracketed paste mode if the application requested it]' \ "-r[don't replace LF with CR when pasting]" \ '-s+[specify separator]:separator' \ '-t+[specify target window]:window:__tmux-windows' } _tmux-pipe-pane() { [[ -n ${tmux_describe} ]] && print "pipe output from a pane to a shell command" && return _arguments -s -A "-*" -S \ '-o[only open a pipe if none is currently opened]' \ '-t+[specify target pane]:pane:__tmux-panes' \ ':shell command:_cmdstring' } _tmux-previous-layout() { [[ -n ${tmux_describe} ]] && print "move a window to the previous layout" && return _arguments '-t+[specify target window]:window:__tmux-windows' } _tmux-previous-window() { [[ -n ${tmux_describe} ]] && print "move to the previous window in a session" && return _arguments -s \ '-a[move to the previous window with an alert]' \ '-t+[specify target session]:session:__tmux-sessions' } _tmux-refresh-client() { [[ -n ${tmux_describe} ]] && print "refresh a client" && return _arguments -s \ "-S[only update the client's status bar]" \ '-t+[specify target client]:client:__tmux-clients' \ '-C+:size' } _tmux-rename-session() { [[ -n ${tmux_describe} ]] && print "rename a session" && return _arguments -s -A "-*" -S \ '-t+[specify target session]:session:__tmux-sessions' \ ':new session name' } _tmux-rename-window() { [[ -n ${tmux_describe} ]] && print "rename a window" && return _arguments -s -A "-*" -S \ '-t+[specify target window]:window:__tmux-windows' \ ':new window name' } _tmux-resize-pane() { [[ -n ${tmux_describe} ]] && print "resize a pane" && return _arguments -s -A "-*" -S \ '-D[resize downward]' \ '-L[resize to the left]' \ '-M[begin mouse resizing]' \ '-R[resize to the right]' \ '-U[resize upward]' \ '-t+[specify target pane]:pane:__tmux-panes' \ '-x+[specify width]:width' \ '-y+[specify height]:height' \ '-Z[toggle zoom of pane]' \ ':adjustment' } _tmux-respawn-pane() { [[ -n ${tmux_describe} ]] && print "reuse a pane in which a command has exited" && return _arguments -s -A "-*" -S \ '-c+[specify a new working directory for the pane]:directory:_directories' \ '-k[kill window if it is in use]' \ '-t+[specify target pane]:pane:__tmux-pane' \ ':command:_cmdambivalent' } _tmux-respawn-window() { [[ -n ${tmux_describe} ]] && print "reuse a window in which a command has exited" && return _arguments -s -A "-*" -S \ '-c+[specify a new working directory for the window]:directory:_directories' \ '-k[kill window if it is in use]' \ '-t+[specify target window]:window:__tmux-windows' \ ':command:_cmdambivalent' } _tmux-rotate-window() { [[ -n ${tmux_describe} ]] && print "rotate positions of panes in a window" && return _arguments -s \ '-D[rotate downward]' \ '-U[rotate upward]' \ '-t+[specify target window]:window:__tmux-windows' } _tmux-run-shell() { [[ -n ${tmux_describe} ]] && print "execute a command without creating a new window" && return _arguments -s -A "-*" -S \ '-b[run shell command in background]' \ '-t+[specify target pane]:pane:__tmux-panes' \ ':command:_cmdstring' } _tmux-save-buffer() { [[ -n ${tmux_describe} ]] && print "save a paste buffer to a file" && return _arguments -s \ '-a[append to rather than overwriting file]' \ '-b+[specify a target buffer index]:buffer:__tmux-buffers' } _tmux-select-layout() { [[ -n ${tmux_describe} ]] && print "choose a layout for a window" && return _arguments -s -A "-*" -S \ '-n[behave like next-layout]' \ '-o[revert to previous layout]' \ '-p[behave like previous-layout]' \ '-t+[specify a target window]:target window:__tmux-windows' \ ':layout:(even-horizontal even-vertical main-horizontal main-vertical tiled)' } _tmux-select-pane() { [[ -n ${tmux_describe} ]] && print "make a pane the active one in the window" && return _arguments -s \ '-D[move to the pane below target]' \ '-d[disable input to the pane]' \ '-e[enable input to the pane]' \ '-g[show current pane style]' \ '-l[behave like last-pane]' \ '-L[move to the pane left of target]' \ '-M[clear marked pane]' \ '-m[set marked pane]' \ '-R[move to the pane right of target]' \ '-U[move to the pane above target]' \ '-P+[set pane style]:style:__tmux-style' \ '-T+[set the pane title]:title' \ '-t+[specify target pane]:pane:__tmux-panes' } _tmux-select-window() { [[ -n ${tmux_describe} ]] && print "select a window" && return _arguments -s \ '-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+[specify target window]:window:__tmux-windows' } _tmux-send-keys() { [[ -n ${tmux_describe} ]] && print "send key(s) to a window" && return _arguments -s -A "-*" -S \ '-l[disable key name lookup and send data literally]' \ '-R[reset terminal state]' \ '-M[pass through a mouse event]' \ '-X[send a command into copy mode]' \ '-N+[specify repeat count]:repeat count' \ '-t+[specify target pane]:pane:__tmux-panes' \ '*:key' } _tmux-send-prefix() { [[ -n ${tmux_describe} ]] && print "send the prefix key to a window" && return _arguments -s \ '-2[send secondary prefix key]' \ '-t+[specify target pane]:pane:__tmux-panes' } _tmux-server-info() { [[ -n ${tmux_describe} ]] && print "show server information" && return __tmux-nothing-else } _tmux-set-buffer() { [[ -n ${tmux_describe} ]] && print "set contents of a paster buffer" && return _arguments -s -A "-*" -S \ '-a[append to rather than overwriting target buffer]' \ '-b+[specify target buffer index]:pane:__tmux-buffers' \ '-n+[specify new buffer name]:buffer-name' \ ':data' } _tmux-set-environment() { [[ -n ${tmux_describe} ]] && print "(un)set an environment variable" && return local mode=session action=add local curcontext="$curcontext" state line ret=1 typeset -A opt_args _arguments -C -s -A "-*" -S : \ '(-t)-g[modify global environment]' \ '(-u)-r[remove variable before starting new processes]' \ '(-r)-u[unset a variable]' \ '(-g)-t[specify target session]:target session:__tmux-sessions' \ ': :->name' '(-u -r)2: :->value' && ret=0 if (( ${+opt_args[-g]} )); then mode=global fi if (( ${+opt_args[-u]} )); then action=unset fi if (( ${+opt_args[-r]} )); then action=remove fi # TODO: the exclusion "(-g -r)2:" doesn't work, so simulate it here if [[ $action == (remove|unset) ]] && [[ $state == value ]]; then __tmux-nothing-else else __tmux-environment-variables $mode $state $action && ret=0 fi return ret } _tmux-set-option() { [[ -n ${tmux_describe} ]] && print "set a session option" && return local mode=session local curcontext="$curcontext" state line ret=1 typeset -A opt_args _arguments -C -s : \ '-a[append to string options]' \ '-F[expand formats in the option value]' \ '-g[set a global session option]' \ '-o[prevent setting of an option that is already set]' \ '-q[suppress errors about unknown or ambiguous options]' \ '-u[unset a non-global option]' \ '-w[change window (not session) options]' \ '-s[change server (not session) options]' \ '-t+[specify target session]:target session:__tmux-sessions' \ '*:: :->name_or_value' && ret=0 if (( ${+opt_args[-w]} )); then mode=window elif (( ${+opt_args[-s]} )); then mode=server fi __tmux-options-complete ${mode} ${state} && ret=0 return ret } _tmux-set-window-option() { [[ -n ${tmux_describe} ]] && print "set a window option" && return local curcontext="$curcontext" state line ret=1 typeset -A opt_args _arguments -C -s : \ '-a[append to string options]' \ '-F[expand formats in the option value]' \ '-g[set a global window option]' \ '-o[prevent setting of an option that is already set]' \ '-q[suppress errors about unknown or ambiguous options]' \ '-u[unset a non-global option]' \ '-t+[specify target window]:target window:__tmux-windows' \ '*:: :->name_or_value' && ret=0 __tmux-options-complete window ${state} && ret=0 return ret } _tmux-set-hook() { [[ -n ${tmux_describe} ]] && print "set a hook to a command" && return _arguments -s \ '-g[add hook to global list]' \ '-u[unset a hook]' \ '-t+[specify target session]:session:__tmux-sessions' \ ':hook name:_tmux_hooks' \ '*:::command:= _tmux' } _tmux-show-hooks() { [[ -n ${tmux_describe} ]] && print "show the global list of hooks" && return _arguments -s -S -A "-*" \ '-g[show global list of hooks]' \ '-t+[specify target session]:session:__tmux-sessions' \ } _tmux-show-buffer() { [[ -n ${tmux_describe} ]] && print "display the contents of a paste buffer" && return _arguments '-b[specify target buffer index]:pane:->buffer' } _tmux-show-environment() { [[ -n ${tmux_describe} ]] && print "display the environment" && return local mode=session local curcontext="$curcontext" state line ret=1 typeset -A opt_args _arguments -C -A "-*" -s : \ '(-t)-g[show global environment]' \ '-s[format output as Bourne shell commands]' \ '(-g)-t+[specify target session]:target session:__tmux-sessions' \ '1:: :->name' && ret=0 if (( ${+opt_args[-g]} )); then mode=global fi __tmux-environment-variables $mode $state show && ret=0 return ret } _tmux-show-messages() { [[ -n ${tmux_describe} ]] && print "show client's message log" && return _arguments -s \ '-J[show debugging information about running jobs]' \ '-T[show debugging information about involved terminals]' \ '-t+[specify target client]:client:__tmux-clients' } _tmux-show-options() { [[ -n ${tmux_describe} ]] && print "show session options" && return local mode=session local curcontext="$curcontext" state line ret=1 typeset -A opt_args _arguments -C -s : \ '-g[show global options]' \ '-q[suppress errors about unknown or ambiguous options]' \ '-s[show server options]' \ '-v[show only the option value, not the name]' \ '-w[show window options]' \ '-t+[specify target session]:target session:__tmux-sessions' \ '*:: :->name_or_value' && ret=0 if (( ${+opt_args[-w]} )); then mode=window elif (( ${+opt_args[-s]} )); then mode=server fi __tmux-options-complete ${mode} ${state} && ret=0 return ret } _tmux-show-window-options() { [[ -n ${tmux_describe} ]] && print "show window options" && return local curcontext="$curcontext" state line ret=1 typeset -A opt_args _arguments -C -s : \ '-g[show global options]' \ '-v[show only the option value, not the name]' \ '-t+[specify target window]:target window:__tmux-windows' \ '*:: :->name_or_value' && ret=0 __tmux-options-complete window ${state} && ret=0 return ret } _tmux-source-file() { [[ -n ${tmux_describe} ]] && print "execute tmux commands from a file" && return _arguments \ "-q[don't report error if path doesn't exist]" \ '*:path:_directories' } _tmux-split-window() { [[ -n ${tmux_describe} ]] && print "splits a pane into two" && return _arguments -s \ '-b[create new pane left of or above target pane]' \ "-d[don't make the new window become the active one]" \ '-F+[specify output format]:format:__tmux-formats' \ '-f[create new pane spanning full window width or height]' \ '-h[split horizontally]' \ '-v[split vertically]' \ "-l[define new pane's size]:size" \ "-p[define new pane's size in percent]:size (percentage)" \ '-t+[specify target pane]:pane:__tmux-panes' \ ':command:_cmdambivalent' # 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. } _tmux-start-server() { [[ -n ${tmux_describe} ]] && print "start a tmux server" && return __tmux-nothing-else } _tmux-suspend-client() { [[ -n ${tmux_describe} ]] && print "suspend a client" && return _arguments '-t+[specify destination client]:client:__tmux-clients' } _tmux-swap-pane() { [[ -n ${tmux_describe} ]] && print "swap two panes" && return _arguments -s \ '-D[move pane down]' \ '-U[move pane up]' \ "-d[don't change the active pane]" \ '-s+[specify source pane]:pane:__tmux-panes' \ '-t+[specify destination pane]:pane:__tmux-panes' } _tmux-swap-window() { [[ -n ${tmux_describe} ]] && print "swap two windows" && return _arguments -s \ "-d[don't make the new window become the active one]" \ '-s+[specify source window]:window:__tmux-windows' \ '-t+[specify destination window]:window:__tmux-windows' } _tmux-switch-client() { [[ -n ${tmux_describe} ]] && print "switch the client to another session" && return _arguments -s \ '-c+[specify a target client]:client:__tmux-clients' \ "-E[don't apply update-environment option]" \ '-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+[specify target window]:window:__tmux-windows' } _tmux-unbind-key() { [[ -n ${tmux_describe} ]] && print "unbind a key" && return local curcontext="$curcontext" state line keytable local -a ow ow=( "${words[@]}" ) _arguments -C -s \ '-a[remove all key bindings]' \ '-n[remove a non-prefix binding]' \ '-T[specify key table]:key table' \ '*:: :->boundkeys' [[ ${state} != 'boundkeys' ]] && return keytable="$(__tmux-get-optarg -t "${ow[@]}")" if [[ -n ${keytable} ]]; then __tmux-bound-keys -t ${keytable} return fi __tmux-bound-keys } _tmux-unlink-window() { [[ -n ${tmux_describe} ]] && print "unlink a window" && return _arguments -s \ '-k[kill the window if it is only in one session]' \ '-t+[specify target window]:target window:__tmux-windows' } _tmux-wait-for() { [[ -n ${tmux_describe} ]] && print "wait for an event or trigger it" && return _arguments -s \ '-L[lock the named channel]' \ '-S[send signal to channel]' \ '-U[unlock the named channel]' \ ':event channel' } # --- Utility functions --- # They should be called __tmux-*() and kept separate from the # sub-command functions. function __tmux-attributes() { local -a attr already attr=( default bright bold dim underscore blink reverse hidden italics ) compset -P '*,' already=( ${(s<,>)IPREFIX} ) _describe -t tmux-attribute 'tmux attribute' attr -S, -F already -q } function __tmux-buffers() { local expl local -a buffers if [[ ${(t)bopts} != *array* ]]; then local -a bopts; bopts=() fi buffers=( ${${(f)"$(command tmux 2> /dev/null list-buffers "${bopts[@]}")"}/:[ $'\t']##/:} ) _describe -t buffers 'buffers' buffers } function __tmux-bound-keys() { local expl local -a keys keys=( ${${${${(f)"$(command tmux 2> /dev/null list-keys "$@")"}/:[ $'\t']##/:}/(#s)[ $'\t']##/}/(#s):/\\:} ) _describe -t keys 'keys' keys } function __tmux-clients() { local expl local -a clients clients=( ${${(f)"$(command tmux 2> /dev/null list-clients)"}/:[ $'\t']##/:} ) _describe -t clients 'clients' clients } function __tmux-environment-variables() { local mode="$1" state="$2" action="$3" local -a dash_g case $mode in (global) dash_g=(-g);; (session) dash_g=();; (*) return 1;; # bug in the caller esac local hint case $action in (add|remove) hint=" (or specify a new one)";; (unset|show) hint="";; (*) return 1;; # bug in the caller esac case ${state} in (name) local -a vars_and_vals=( ${(@f)"$(command tmux 2>/dev/null show-env $dash_g)"} ) local -a descriptions local k_v k v for k_v in $vars_and_vals; do k=${k_v%%=*} if [[ $k == -* ]]; then k=${k#-} v='(remove)' else v=${k_v#*=} fi descriptions+=( "${k//:/\\:}:$v" ) done # TODO: this if/else is because '_describe ${hint:+"-x"}' prints the "No matches" error in addition to the message. local msg="${dash_g[1]:+"global "}environment variables${hint}" if _describe -t parameters $msg descriptions; then : elif [[ -n $hint ]]; then _message $msg fi ;; (value) local var_and_val=${(@f)"$(command tmux 2>/dev/null show-env $dash_g -- ${(Q)words[-2]})"} # TODO: this if/else is because '_description -x' prints the "No matches" error in addition to the message. if [[ -n $var_and_val ]]; then local -a expl _description -x parameter-values expl "Value for ${words[-2]}" compadd "$expl[@]" - ${var_and_val#*=} else _message "Value for ${words[-2]}" fi ;; (*) return 1 ;; esac } __tmux-formats() { _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" ) compset -P 'colour*' if [[ -z ${IPREFIX} ]]; then _describe -t tmux-colours 'colour' colnames else _message 'colour number 0..255' fi } _tmux_hooks() { _alternative \ 'hooks:hook name:(alert-activity alert-bell alert-silence client-attached client-detached client-resized client-session-changed pane-died pane-exited pane-set-clipboard session-created session-closed session-renamed window-linked window-renamed window-unlinked)' \ 'post-hooks:command post-hook:compadd - after-${_tmux_aliasmap}' } function __tmux-get-optarg() { local opt="$1" local -i i shift for (( i = 1; i <= $#; i++ )); do if [[ ${argv[$i]} == ${opt} ]]; then if [[ ${argv[$(( i + 1 ))]} != -* ]]; then print -- ${argv[$(( i + 1 ))]} fi return fi done } __tmux-nothing-else() { _message "no further arguments" } function __tmux-option-guard() { local mode opt guard int_guard mode="$1" opt="$2" shift; shift local -a options desc 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 other' '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} 'display-time:'${int_guard} 'history-limit:'${int_guard} 'lock-after-time:'${int_guard} 'lock-command:MSG:command string' 'message-command-style:__tmux-style' 'message-style:__tmux-style' 'mouse:DESC:on off' 'prefix:MSG:primary prefix key' 'prefix2:MSG:secondary prefix key' 'renumber-windows:DESC:on off' 'repeat-time:'${int_guard} 'set-titles:DESC:on off' 'set-titles-string:MSG:title format string' 'status:DESC:on off' 'status-interval:'${int_guard} 'status-justify:DESC:left centre right' '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' '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=( '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 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} 'force-width:'${int_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-format:MSG:pane border status string' 'pane-border-status:DESC:off top bottom' 'pane-border-style:__tmux-style' 'remain-on-exit:DESC:on off' 'synchronize-panes: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-search:DESC:on off' 'xterm-keys:DESC:on off' ) fi guard=${(M)options:#$opt:*} if [[ -z ${guard} ]]; then _message "unknown ${mode} option: ${opt}" return fi _message "${mode} option value" guard=${guard#*:} case ${guard} in ('') ;; (MSG:*) _message ${guard#*:} ;; (DESC:*) eval "desc=( ${guard#*:} )" _describe -t "tmux-${mode}-option-value" "${opt}" desc ;; (*) eval ${guard} ;; esac } 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' 'display-time:time (in msecs) messages are displayed' 'history-limit:number of copy-mode lines per window' 'key-table:default key table' 'lock-after-time:lock sessions after N seconds' 'lock-command:command to run for locking a client' 'message-command-style:status line message command style' 'message-style:status line message style' 'mouse:enable mouse support' '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' 'set-titles:try to set xterm window titles' 'set-titles-string:format used by set-titles' 'status:show or hide the status bar' '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-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' "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 } function __tmux-options-complete() { local mode="$1" state="$2" case ${state} in name_or_value) if (( CURRENT == 1 )) && [[ ${mode} == 'session' ]]; then __tmux-session-options elif (( CURRENT == 1 )) && [[ ${mode} == 'server' ]]; then __tmux-server-options elif (( CURRENT == 1 )) && [[ ${mode} == 'window' ]]; then __tmux-window-options elif (( CURRENT == 2 )); then __tmux-option-guard ${mode} ${words[1]} else __tmux-nothing-else fi ;; esac } function __tmux-panes() { local expl line local -i num local -a panes opts compset -P '*.' if [[ -n ${IPREFIX} ]]; then opts=( -t "${IPREFIX%.}" ) else opts=( ) fi num=0 command tmux 2> /dev/null list-panes "${opts[@]}" | while IFS= read -r line; do panes+=( $(( num++ )):${line//:/} ) done _describe -t panes 'panes' panes "$@" if [[ ${IPREFIX} != *. ]]; then _wanted windows expl 'windows' __tmux-windows -S. fi } 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)' '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 } function __tmux-sessions() { local -a sessions sessions=( ${${(f)"$(command tmux 2> /dev/null list-sessions)"}/:[ $'\t']##/:} ) _describe -t sessions 'sessions' sessions "$@" } function __tmux-sessions-attached() { local -a sessions sessions=( ${${(f)"$(command tmux 2> /dev/null list-sessions)"}/:[ $'\t']##/:} ) sessions=( ${(M)sessions:#*"(attached)"} ) _describe -t sessions 'attached sessions' sessions "$@" } # Complete attached-sessions and detached-sessions as separate tags. function __tmux-sessions-separately() { local ret=1 local -a sessions detached_sessions attached_sessions sessions=( ${${(f)"$(command tmux 2> /dev/null list-sessions)"}/:[ $'\t']##/:} ) detached_sessions=( ${sessions:#*"(attached)"} ) attached_sessions=( ${(M)sessions:#*"(attached)"} ) # ### This seems to work without a _tags loop but not with it. I suspect # ### that has something to do with _describe doing its own _tags loop. _tags detached-sessions attached-sessions # Placing detached before attached means the default behaviour of this # function better suits its only current caller, _tmux-attach-session(). _requested detached-sessions && _describe -t detached-sessions 'detached sessions' detached_sessions "$@" && ret=0 _requested attached-sessions && _describe -t attached-sessions 'attached sessions' attached_sessions "$@" && ret=0 return ret } function __tmux-socket-name() { local expl sdir local curcontext="${curcontext}" local -a socks zstyle -s ":completion:${curcontext}:sockets" socketdir sdir || sdir="${TMUX_TMPDIR:-/tmp}/tmux-${UID}" socks=(${sdir}/*(=:t)) _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=( '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' '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-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-format:set pane border format string' 'pane-border-status:turn border status off or set its position' 'pane-border-style:style of border pane' "remain-on-exit:don't destroy windows after the program exits" 'synchronize-panes:send input to all panes of 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 } function __tmux-windows() { local expl local -a wins opts compset -P '*:' if [[ -n ${IPREFIX} ]]; then opts=( -t "${IPREFIX%:}" ) else opts=( ) fi wins=( ${${(M)${(f)"$(command tmux 2> /dev/null list-windows "${opts[@]}")"}:#<->*}/:[ $'\t']##/:} ) _describe -t windows 'windows' wins "$@" if [[ ${IPREFIX} != *: ]]; then _wanted sessions expl 'sessions' __tmux-sessions -S: fi } # And here is the actual _tmux(), that puts it all together: _tmux() { local curcontext="${curcontext}" state line ret=1 local mode local tmuxcommand local tmux_describe _arguments -C -s -w \ '-2[force using 256 colours]' \ '-c[execute a shell command]:command name:_command_names' \ '-C[start tmux in control 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' \ '-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' && ret=0 [[ -z $state ]] && return ret if (( CURRENT == 1 )); then zstyle -s ":completion:${curcontext}:subcommands" mode mode || mode='both' if [[ ${mode} == 'commands' ]]; then _describe -t subcommands 'tmux commands' _tmux_commands && ret=0 elif [[ ${mode} == 'aliases' ]]; then _describe -t subcommands 'tmux aliases' _tmux_aliases && ret=0 else _describe -t subcommands 'tmux commands and aliases' _tmux_commands -- _tmux_aliases && ret=0 fi else tmuxcommand="${words[1]}" if [[ -n ${_tmux_aliasmap[$tmuxcommand]} ]] ; then tmuxcommand="${_tmux_aliasmap[$tmuxcommand]}" fi if ! (( ${+functions[_tmux-$tmuxcommand]} )); then local low high low=$_tmux_commands[(i)$tmuxcommand*] high=$_tmux_commands[(I)$tmuxcommand*] if (( low == high )); then tmuxcommand=${_tmux_commands[low]%%:*} elif (( low < high )); then _message "ambiguous command $tmuxcommand" else _message "subcommand $tmuxcommand not known" _normal && ret=0 fi fi curcontext="${curcontext%:*}-${tmuxcommand}:" _call_function ret _tmux-${tmuxcommand} fi return ret } # description generation follows; only done on 1st _tmux call. local f desc local -A rev local tmux_describe tmux_describe='yes, please' for f in ${(k)_tmux_aliasmap} ; do rev+=( ${_tmux_aliasmap[$f]} $f ) done for f in ${(M)${(k)functions}:#_tmux-*} ; do desc="$($f)" _tmux_commands+=( "${f#_tmux-}${desc:+:$desc}" ) [[ -n ${rev[${f#_tmux-}]} ]] && _tmux_aliases+=( "${rev[${f#_tmux-}]}${desc:+:$desc}" ) done _tmux "$@"