Como ignorar o PATH com conclusão de 'origem'

2

Não consigo encontrar nenhuma documentação 'detalhada o suficiente' sobre zstyle e estou surpreso que ninguém tenha enfrentado esse problema antes:

aqui é o que recebo com a conclusão da tabulação:

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

isto é certamente / obviamente os arquivos executáveis do meu $PATH . No entanto, gostaria de usar source com um arquivo local , mas não consigo entender como alterá-lo.

Basicamente, o comando file está completo como esperado, por isso gostaria de dizer a zstyle para usar as mesmas regras.

Eu acho que eu poderia adaptar :completion:*:killall:* 'ps -u $USER -o cmd h' , para fazer o trabalho, mas isso seria muito feio e eu estou procurando por uma opção embutida em zstyle.

Eu pensei que eu poderia adaptar algo como ':completion:*:cd:*' ignore-parents parent pwd a source , mas o resultado da conclusão nunca muda ...

para informações:

$ zsh --version
zsh 4.3.17 (x86_64-redhat-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
ignored-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-ignored
        * 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'
    
por Kevin 24.04.2012 / 11:30

1 resposta

4

A partir do zsh 4.3.10, source é completado por _source , que não procura nenhum zstyle. Pode ser possível definir um estilo usado por _files , mas isso seria hackish, mesmo pelos padrões zsh.

Eu sugiro que você reescreva a função _source ao seu gosto, não é muito longa. 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
    
por 25.04.2012 / 02:15