Plugin do Vim para o Git
Publicado em Developer
git vim
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:
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! :-)
Comentários
Comentários fechados.
Artigos anteriores
- Pull requests em modo raiz - sex, 22 de dezembro de 2023, 09:57:09 -0300
- Qual a idade do seu repositório? - ter, 27 de dezembro de 2022, 12:50:35 -0300
- Utilizando ctags em projetos Rails mais recentes - qui, 24 de junho de 2021, 08:23:43 -0300
- Fazendo o seu projeto brotar - seg, 15 de julho de 2019, 08:57:05 -0300
- Learn Functional Programming with Elixir - sex, 02 de março de 2018, 18:47:13 -0300
- Ambiente mínimo - Driver Driven Development - qua, 23 de agosto de 2017, 15:15:03 -0300
- Ambiente mínimo - repositórios de código - dom, 16 de abril de 2017, 13:02:14 -0300
- Ambiente mínimo - terminal e navegador - dom, 02 de abril de 2017, 21:43:29 -0300
- Utilizando muitas gems no seu projeto? - sáb, 29 de outubro de 2016, 11:57:55 -0200
- Desenvolvedores e inteligência artificial - seg, 11 de julho de 2016, 09:09:38 -0300
Já sei que vai escrever o capítulo sobre criação de scripts do vim :)