Questão Nomes de ramificação não exibidos na conclusão da guia do Mercurial


Eu tenho uma máquina de desenvolvimento rodando o mercurial 1.6.3. O preenchimento de tabulação no bash funciona muito bem para completar comandos, tags e nomes de filiais. Eu configurei uma nova máquina com a mesma versão mercurial (ambos rodando o python 2.6), mas quando eu tento usar a conclusão de tabulação, eu só recebo comandos e tags hg para mostrar - nenhum nome de ramificação. Há alguma coisa que eu preciso configurar para ter nomes de ramificação também? obrigado.


2


origem




Respostas:


Eu tive o mesmo problema no OSX El Capitan e no Ubuntu 16.04.

No Ubuntu eu originalmente remendado manualmente /usr/share/zsh/functions/Completion/Unix/_hg. Mas como arquivos do sistema foram protegidos no OSX eu configuração oh-meu-zsh o que é provavelmente uma solução melhor, em seguida, tocar arquivos do sistema zsh. Você pode fazer essas modificações diretamente no _hg arquivo se você não quiser usar zsh.

Depois de instalar oh-my-zsh eu copiei /usr/share/zsh/functions/Completion/Unix/_hg para ~/.oh-my-zsh/custom/plugins/hg/_hg.

Então modifiquei o _hg arquivo substituindo a função _hg_tags () com

_hg_tags() {
  local expl
  typeset -a hglabels
  hglabels=( ${(f)"$(_hg_cmd debugnamecomplete -q 2>/dev/null)"} )
  _wanted labels expl 'labels' compadd -a - hglabels
}

Para obter o zsh para carregá-lo, modifique ~/.zshrc e adicione hg ao plugins=(... hg) seção.

Você pode querer modificar outras funções para usar o _hg_tags. Eu encontrei depois de usá-lo um pouco _hg_cmd_merge precisava ser atualizado para usar _hg_tags.

_hg_cmd_merge() {
  _arguments -s -w : $_hg_global_opts \
  '(--force -f)'{-f,--force}'[force a merge with outstanding changes]' \
  '(--rev -r 1)'{-r,--rev}'[revision to merge]:revision:_hg_tags' \
  '(--preview -P)'{-P,--preview}'[review revisions to merge (no merge is performed)]' \
  ':revision:_hg_tags'
}

2