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

2

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.

    
por sa125 14.12.2010 / 13:39

1 resposta

2

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

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

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

Em seguida, modifiquei o arquivo _hg substituindo a função _hg_tags () por

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

Para fazer com que o zsh carregue, modifique ~/.zshrc e adicione hg à seção plugins=(... hg) .

Você pode querer modificar outras funções para usar _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'
}
    
por 30.03.2017 / 13:04