Cómo ignorar PATH con la terminación `source`

No puedo encontrar ninguna documentation 'detallada' sobre zstyle , y me sorprende que nadie haya enfrentado este problema antes:

esto es lo que obtengo con la finalización de tabs:

 source l<TAB> l2ping* lefty* libwmf-fontmap* locate* lpq.cups 

este es ciertamente / obviamente los files ejecutables de mi $PATH . Sin embargo, me gustaría usar la source con un file local , pero no puedo entender cómo cambiarlo.

Básicamente, el file command se completa como espero, por lo que me gustaría decirle a zstyle que use las mismas reglas.

Supongo que podría adaptarme :completion:*:killall:* 'ps -u $USER -o cmd h' , para hacer el trabajo, pero esto sería bastante feo y estoy buscando una opción zstyle-built-in.

Pensé que podría adaptar algo como ':completion:*:cd:*' ignore-parents parent pwd to source , pero el resultado final nunca cambia …


para información:

 $ zsh --version zsh 4.3.17 (x86_64-networkinghat-linux-gnu) $ zstyle cache-path :completion::complete:* /home/kevin/.oh-my-zsh/cache/ command :completion:*:*:*:*:processes 'ps -u kevin -o pid,user,comm -w -w' :completion:*:killall:* 'ps -u $USER -o cmd h' hosts :completion:*:hosts 192.168.0.101 git.bri.st.com crx672 bastion.inrialpes.fr 192.168.0.5 idrouille 129.88.69.73 idrouille.imag.fr koguis 192.168.1.4 127.0.0.1 koguis.imag.fr localhost crx672.cro.st.com 192.168.1.100 github.com 192.168.1.101 sourceware.org gnx2034.gnb.st.com gnx2528.gnb.st.com ctf.stri.pe 10.0.0.2 127.0.0.1 kevin localhost.localdomain localhost ::1 kevin localhost6.localdomain6 localhost6 kevin localhost ignonetworking-patterns :completion:*:*:*:users adm amanda apache avahi beaglidx bin cacti canna clamav daemon dbus distcache dovecot fax ftp games gdm gkrellmd gopher hacluster haldaemon halt hsqldb ident junkbust ldap lp mail mailman mailnull mldonkey mysql nagios named netdump news nfsnobody nobody nscd ntp nut nx openvpn operator pcap postfix postgres privoxy pulse pvm quagga radvd rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs :completion:*:functions '_*' list-colors :completion:*:*:kill:*:processes '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01' :completion:* '' menu :completion:*:*:*:*:* select single-ignonetworking * show tag-order :completion:*:cd:* local-directories directory-stack path-directories url-globbers (eval) :url-quote-magic 'zmodload -i zsh/parameter; reply=( noglob ${(k)galiases[(R)(* |)(noglob|urlglobber|globurl) *]:-} ${(k)aliases[(R)(* |)(noglob|urlglobber|globurl) *]:-} )' url-local-schema :urlglobber ftp file url-metas :url-quote-magic:* '*?[]^(|)~#{}=' url-other-schema :urlglobber http https ftp url-seps (eval) :url-quote-magic:* 'reply=(";&<>${histchars[1]}")' use-cache :completion::complete:* 1 user-commands :completion:*:*:git:* 'flow:description for foo' 

A partir de zsh 4.3.10, la source es completada por _source que no busca ningún zstyle. Podría ser posible establecer un estilo utilizado por _files , pero sería un hackish, incluso para los estándares de zsh.

Sugiero que reescribas la function _source a tu gusto, no es muy larga. Algo como:

 _my_source () { if [[ CURRENT -ge 3 ]]; then compset -n 2 _normal elif [[ $service = . ]]; then _files -W path else _files fi } compdef _my_source source