Blog do TaQ

Plugin do Vim para o Git

Publicado em Developer

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:

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:


Comentários

comments powered by Disqus

Twitter