zsh conclusão e comandos unknow bzr

3

A conclusão do Bazar do ZSH não oferece nenhuma expansão / conclusão quando não conhece o subcomando bzr que estou usando. No meu caso, eu uso bzr qlog , mas o /usr/share/zsh/5.0.2/functions/_bzr do ZSH não sabe sobre esse comando. Tanto quanto eu posso dizer que acaba retornando nada da função de conclusão:

(*)
    _message "unknown bzr command completion: $cmd"
    return 1
    ;;

Neste ponto, eu usei um hack como esse para torná-lo completo com nomes de arquivos:

(*)
    _message "unknown bzr command completion: $cmd"
    args+=( '*:FILE:_files' )
    #return 1
    ;;

Existe alguma maneira melhor de como fazer isso?

    
por wilx 11.12.2013 / 10:37

1 resposta

1

O tópico zsh-workers de 2011 “PATCH: Volte para a conclusão do arquivo se nada mais funcionar” (que discute o mesmo problema com o git) parece indicar que a função de conclusão precisa ser corrigida para suportar esse comportamento.

Você pode configurar o sistema de conclusão para tentar sistematicamente os arquivos, se o sistema de conclusão não encontrar nenhuma conclusão.

zstyle :completion::::: completer _complete _files

(Referência da documentação: zstyle builtin , é argumento padrão , o completer style ; aspirina vendida separadamente.

Infelizmente, esse estilo é global, você não pode restringi-lo a uma função específica. (Eu acho).

Você pode usar uma função personalizada que verifique o comando atual em vez de _files e só chame _files se notar que o comando é bzr .

Outra maneira de lidar com essa situação é ter uma chave separada para concluir os arquivos. Você pode usar o widget predefinido _bash_complete-word que conclui diferentes tipos de objetos no último caractere da seqüência de teclas.

bindkey '^X!' _bash_complete-word # commands
bindkey '^X$' _bash_complete-word # variables
bindkey '^X@' _bash_complete-word # hosts
bindkey '^X/' _bash_complete-word # files
bindkey '^X~' _bash_complete-word # users

Ou você pode definir seu próprio widget.

zle -C complete_files .complete-word _files
bindkey '^X/' complete_files
    
por 12.12.2013 / 02:16