1. Compilador no VIm?
  2. Como instalar?
  3. Usando o compilador
  4. Configurando
  5. Resumão
  6. Para Contribuir
  7. Créditos
  8. Copyright
  9. Referências

1. Compilador no VIm?

Foi exatamente isso que o Aurelio falou quando eu falei pra ele que havia feito um compilador do txt2tags para o vim :P. Pois bem, no Vim existe um modo chamado quickfix que facilita bastante o ciclo de edição-compilação-edição dentro do vim. Os compiladores são scripts vim que são carregados manualmente com o comando :compiler. Uma vez carregado basta digitar :make que o compilador é chamado e as mensagens de erro ou debug são jogadas para um arquivo temporário que o vim utiliza para fazer a magia negra de ficar pulando de erro em erro.

A magia negra depende somente de duas opções: makeprg e errorformat. O makeprg nada mais é do que a linha de comando que é executada quando se digita :make. A opção errorformat tem uma configuração bastante complexa, é nela que se configuram os padrões que vão casar com as mensagens de erro e destas esperasse extrair informações relevantes como a linha em que o erro ocorreu, a mensagem de erro, o nome do arquivo e etc. Como cada compilador gera mensagens da forma que bem entende, imagina como deve ser legal configurar essa variável :-/. Mas felizmente o txt2tags não gera mesagens de erro que justifiquem o laborioso trabalho de configurar essa opção :P.

Se quiser ver um ambiente de desenvolvimento mais realista integrado com o vim de um olhada no projeto Agide. Esse projeto é do Bram Moolennar o cara do Vim.

2. Como instalar?

Pra instalar comece baixando o arquivo txt2tags.vim e colocando no diretório correto (veja tabela).

sistema diretório de compiladores
Unix ~/.vim/compiler/
PC and OS/2 $HOME/vimfiles/compiler ou $[Vim http://www.vim.org]/vimfiles/compiler
Macintosh $[Vim http://www.vim.org]:vimfiles:compiler
Mac OS X ~/.vim/compiler/

Depois digite :compiler, vai aparecer uma listagem com todos os compiladores disponíveis, veja se o txt2tags.vim aparece lá.

:compiler
/home/wnfreitas/.vim/compiler/txt2tags.vim
/usr/share/vim/vim62/compiler/ant.vim
/usr/share/vim/vim62/compiler/bcc.vim
/usr/share/vim/vim62/compiler/checkstyle.vim
/usr/share/vim/vim62/compiler/cs.vim
/usr/share/vim/vim62/compiler/fortran_F.vim
/usr/share/vim/vim62/compiler/fortran_cv.vim
/usr/share/vim/vim62/compiler/fortran_elf90.vim
/usr/share/vim/vim62/compiler/fortran_g77.vim
/usr/share/vim/vim62/compiler/fortran_lf95.vim
/usr/share/vim/vim62/compiler/hp_acc.vim
/usr/share/vim/vim62/compiler/irix5_c.vim
/usr/share/vim/vim62/compiler/irix5_cpp.vim
/usr/share/vim/vim62/compiler/jikes.vim
/usr/share/vim/vim62/compiler/mips_c.vim
/usr/share/vim/vim62/compiler/mipspro_c89.vim
/usr/share/vim/vim62/compiler/mipspro_cpp.vim
/usr/share/vim/vim62/compiler/modelsim_vcom.vim
/usr/share/vim/vim62/compiler/msvc.vim
/usr/share/vim/vim62/compiler/pyunit.vim
/usr/share/vim/vim62/compiler/ruby.vim
/usr/share/vim/vim62/compiler/splint.vim
/usr/share/vim/vim62/compiler/tex.vim
/usr/share/vim/vim62/compiler/tidy.vim
/usr/share/vim/vim62/compiler/xmllint.vim

Se não aparecer veja a opção runtimepath, o diretório ~/.vim deve estar presente nela.

:set runtimepath
  runtimepath=~/.vim,/usr/share/vim/vimfiles,/usr/share/vim/vim62,/usr/share/vim/vimfiles/after,~/.vim/after

2.1. Editando o ~/.vimrc

Insira as seguintes linhas no seu ~/.vimrc. Pode ser no final dele mesmo ;).

augroup txt2tags
  au!
  autocmd FileType txt2tags compiler txt2tags
augroup END

Isso ai quer dizer que toda vez que a opção filetype for setada para txt2tags ele vai executar o comando :compiler txt2tags, configurando as opções makeprg e errorformat e alguns key mappings.

3. Usando o compilador

Uma vez instalado e carregado corretamente o compilador ja está pronto para uso. Você tem os seguintes comandos a sua disposição:

atalho comando vim descrição
<F8> :make executa o comando de compilação
<F4> :copen abre a janela de mensagens de erro ou debug
<F3> :cclose fecha a janela de mensagens de erro ou debug

Agora pra compilar basta digitar <F8>, ai se quiser ver se correu tudo bem digita <F4> pra abrir a janela de mensagens. Pode manter a janela de mensagens aberta e ficar cutucando <F8> que ela é atualizada.

Outra coisa importante é a opção autowrite, se ela estiver on qualquer buffer que tiver sido alterado vai ser salvo antes do makeprg ser executado, portanto aconselho manter essa opção ligada, ela não é setada pelo compilador ;). Pra habilitar é só colocar

set autowrite

no seu ~/.vimrc.

4. Configurando

O objetivo aqui é tornar mais eficiente o uso do vim com o txt2tags e não enche de firulas e magiquinhas de sumir e aparecer com arquivos. O lance é ser simples mas com alguma flexibilidade. No começo eu pegava o txt2tags direto do PATH mas com o aparecimento dos primeiros betas da versão 2.0 vi que precisava tornar isso customizavel então criei a variável g:txt2tags_executable. Seguindo embalo vi que também poderia ser interessante configurar as opções de linha de comando para o txt2tags (inicialmente isso era configurado no próprio arquivo com a diretiva %!options) então surgiu g:txt2tags_options, que hoje eu acho bloat mas vou deixar por enquanto.

4.1. g:txt2tags_executable

O compilador usa por default o txt2tags em /usr/bin/txt2tags, mas é possível configurar qual txt2tags usar através da variável g:txt2tags_executable, para isso é só:

:let g:txt2tags_executable = "~/local/bin/txt2tags-2.0-beta3.py"
:compiler txt2tags

ou para grandes projetos txt2tags:

:let g:txt2tags_executable = "make -f ~/public_html/makefile"
:compiler txt2tags

é necessário carregar o compilador manualmente para que as opções makeprg e errorformat seja atualizadas.

4.2. g:txt2tags_options

As opções de de linha de comando para o txt2tags são configuradas através da variável g:txt2tags_options, seguindo o mesmo esquema:

:let g:txt2tags_options = "-vvv"
:compiler txt2tags

sempre carregando o compilador em seguida.

Como essas variáveis não são alteradas frequentemente aconselho coloca-las no ~/.vimrc.

augroup txt2tags
	au!
	autocmd FileType txt2tags let g:txt2tags_executable = "/home/wnfreitas/local/bin/txt2tags-2.0-beta3.py"
	autocmd FileType txt2tags let g:txt2tags_options = "-v"
	autocmd FileType txt2tags compiler txt2tags
augroup END

5. Resumão

5.1. Comandos

comando vim descrição
:compiler lista todos os compiladores disponíveis
:compiler txt2tags carrega as opções pra compilar com txt2tags
:make executa o comando de compilação
:copen abre a janela de mensagens de erro ou debug
:cclose fecha a janela de mensagens de erro ou debug

5.2. Atalhos

atalho comando vim
<F8> :make
<F4> :copen
<F3> :cclose

5.3. Variáveis

atalho descrição
g:txt2tags_executable programa usardo para compilar arquivos .t2t
g:txt2tags_options opções de linha de comando do txt2tags

6. Para Contribuir

Esse documento, assim como muitos outros software livres, foi criado por voluntários. Se existe algum tópico a respeito do tema que esse documento não contempla, por favor ajude a manter esse documento completo enviando essas informações ou escrevendo você mesmo uma seção ou trcho de alguma seção.

Atente para o fato de que esse documento é livre e qualquer conteúdo adicionado a ele também deverá ser.

Se você realmente quiser contribuir, envie um email para Wilson Freitas <wilson freitas (a) econofisica com br>.

Obrigado.

7. Créditos

Agora eu vou falar sobre os que ou o que tornou esse documento possível:

E todos os que eu espero que leiam e ajudem a contribuir com esse documento.

8. Copyright

vim's txt2tags compiler plugin (C) 2004 Wilson Freitas.

È permitido distribuir cópias deste manual desde que forneça o Copyright em todas as cópias.

Se você pretende incluir este documento em alguma publicação, por favor contate o responsável e nós trabalharemos para garantir que todo documento esteja atualizada e de acordo com as informações disponíveis.

9. Referências