Blog

LISTAR TODOS OS POSTS - Assine os feeds dos posts e comentários

Plugin do Vim para o Git

Publicado/atualizado em 05/06/2008 18:39

Logo do Git

Aproveitando o embalo do post anterior sobre o Git, fiquei meio encafifado no modo que fiz o Vim mostrar as branches e no jeito que ele funciona e resolvi dar uma fuçada na coisa. Acabei fazendo o plugin Git Branch Info, que permite um pouco mais de customização e flexibilidade, além de já estar deixando o bicho com algumas pontas soltas para adicionar mais features. E de quebra já estreei a minha conta no Github colocando o código do dito cujo lá.

O plugin faz o seguinte: apresenta informações das branches do repositório corrente na linha de status do Vim. O coração do sistema é a função GitBranchInfoTokens que retorna uma List (um array, no esquema de scripting do Vim) com três elementos (sendo que os dois últimos são Lists também): a branch corrente, as outras branchs locais e as branchs remotas. A partir daí temos algumas opções de customização, através da declaração de algumas variáveis:

  • let g:git_branch_status_head_current=1 Se essa variável for declarada, o plugin nem vai ter o trabalho de procurar as outras branches e só vai se importar em verificar qual a branch corrente. Se é só essa informação que você deseja, declare essa variável.
  • let g:git_branch_status_text="text" O texto que vai ser apresentado antes da informação das branches. Se você não especificar nada, o valor default vai ser, dã, "Git". Você pode definir o texto como vazio utilizando "".
  • let g:git_branch_status_nogit="Circulando!" Esse é o texto que vai ser apresentado se o diretório corrente não conter um repositório do Git. Se você não especificar nada, o valor default vai ser "No Git.". Você pode definir o texto como vazio utilizando "".
  • let g:git_branch_status_around="" Esses vão ser os caracteres que vão ficar em volta (no ínicio e no final) das informações das branches. Tem que ser um valor com dois caracteres para funcionar. Por exemplo, se você definir como "<>" as branches vão ser mostradas como por exemplo <master><temp,work>
  • let g:git_branch_status_ignore_remotes=1 Essa opção vai fazer com que o plugin nem se importe de procurar por informações das branches remotas. Se você não estiver interessado, indicando isso para o plugin vai economizar um pouco de processamento.

Configurando ou não essas variáveis, depois é só informar que desejamos ver as informações na linha de status do Vim utilizando algo como:

:set statusline=%{GitBranchInfoString()}

Claro que essa é uma opção de linha de status bem simplista, e se você já tem algumas opções para a linha de status no seu .vimrc, é só inserir o %{GitBranchInfoString()} no final e fica tudo certo. Algumas combinações interessantes podem ser feitas, como:

set statusline=%#StatusLineNC#\ Git\ %#ErrorMsg#\ %{GitBranchInfoTokens()[0]}\ %#StatusLine#

Isso vai mostrar o texto " Git " na cor do esquema de cores StatusLineNC (mais sobre isso digite :help highlight-groups no Vim) e o primeiro token retornado da função GitBranchInfoTokens no esquema de cores ErroMsg, o que me dá a primeira parte cinza e a outra com fundo vermelho e letras brancas. As minhas opções atuais são

let g:git_branch_status_ignore_remotes=1
let g:git_branch_status_text=""
set statusline=%-80F\ %03n\ 0x%02B\ %06l\/\/%06L\ %06v\ %m%#Normal#
\ Git\ %#ErrorMsg#\ %{GitBranchInfoString()}\ %#StatusLine#

O que me dá uma linha de status como essa:

Linha de status

Por último mas não menos importante um mea culpa: a primeira versão do plugin, que utilizava uma chamada à função system() do Vim, ficou uma grande porcaria em relação à performance, tanto que refiz o código hoje mesmo utilizando recursos do próprio scripting do Vim para refazer a consulta às branches. Antes durante a edição a coisa ficava meio lenta, mas agora ficou mais decente de usar. Agora é colocar mais algumas features e ir consertando se forem aparecendo bugs, conforme o uso e o aprendizado do Git. Se alguém achar algum bug por favor me informe! :-)

Tags:

Permalink: http://eustaquiorangel.com/posts/plugin_do_vim_para_o_git

salvar no del.icio.ussalvar no diggsalvar no rec6 Veja o que estão dizendo sobre isso.

Comente

Linhas em branco viram saltos de linha. Se você quiser mostrar algum código, por favor use o pastebin e informe a URL.

*

*

Responda: Qual a cor de um carro preto?  
Clique aqui se não souber essa resposta!

* campos obrigatórios

Comentários

Anterior Próximo Últimos Índice