domingo, 29 de março de 2009

Executando autocomandos

O comando 'doautocmd' simula um evento:
:doautocmd grupo evento nome-do-arquivo
Ele executa o autocomando 'grupo' se fazendo de arquivo 'nome-de-arquivo' simulando o evento 'evento'.

Se 'grupo' for omitido, todos os grupos são usados.
Se 'nome-de-arquivo' for omitido, o nome corrente é usado.
O 'evento' é obrigatório.

Exemplo:
Suponhamos que você tem um tipo de arquivo 'cx' que você gostaria que usasse os
mesmos autocomandos do tipo de arquivo 'c'.
Você faria assim:
:doautocmd cprograms FileReadPost foo.c
Isso faz com que execute o autocomando 'cprograms' como se o arquivo se chamasse 'foo.c' no evento 'FileReadPost'.

Um autocomando disparando outro autocomando:
:autocmd BufReadPost *.new execute "doautocmd BufReadPost " . expand(":r")
Isto define um autocomando que é disparado quando de uma nova edição. O nome do
arquivo deve terminar com '*.new'.
O comando 'execute' avalia a expressão para formar um novo comando e executa-lo.

Quando for editar um arquivo 'tryout.c.new' o comando executado será:
:doautocmd BufReadPost tryout.c

A função 'expand()' leva o argumento '', o qual tem o nome do arquivo que
o autocomando foi executado, e leva a raíz do nome do arquivo com ':r':

':doautocmd' executa sobre o buffer corrente.
':doautoall' executa em todos buffers.

0 comentários:

Postar um comentário