quinta-feira, 16 de abril de 2009

Incluindo um arquivo de sintaxe dentro de outro

A linguagem C++ é um superconjunto da linguagem C. Como você não vai querer criar dois arquivos de sintaxe, você pode colocar o arquivo de sintaxe do C++ dentro do C com o seguinte comando:
:runtime! syntax/c.vim
O comando ':runtime!' procura no 'runtimepath' por todos arquivos 'syntax/c.vim'.
Isto faz a sintaxe C++ ser definida parecida com os arquivos C.

Se você mudou o arquivo de sintaxe 'c.vim', ou adicionou itens com um arquivo
extra, estes serão carregados também.

Depois de carregados os itens de sintaxe C os itens específicos de C++ podem ser
definidos. Por exemplo, adicionar palavras-chave que não são usadas no C:
:syntax keyword cppStatement new delete this friend using
Isto funciona exatamente como qualquer outro arquivo de sintaxe.

Agora considere a linguagem Perl. Ela consiste de duas partes distintas: um
parte de documentação no formato POD, e um programa escrito no próprio Perl.

A seção POD começa com '=head' e termina com '=cut'.
Você quer definir a sintaxe POD em um arquivo, e usa-lo a partir do arquivo
de sintaxe do Perl.

Para o Perl, os comandos são :
:syntax include @Pod <sfile>:p:h/pod.vim
:syntax region perlPOD start=/^=head/ end=/^=cut/ contains=@Pod
Quando '=head' é encontrado em um arquivo Perl, a região 'PerlPOD' começa.
Nesta região o cluster @POD está contido. Todos os itens definidos como itens
nível do topo nos arquivos de sintaxe 'pod.vim' serão localizados aqui. Quando
'=cut' é encontrado, a região termina e nos voltamos para os itens definidos
para o arquivo Perl.

O comando ':syntax include' é esperto o suficiente para ignorar um comando
':syntax clear' no arquivo incluído. E um argumento tal como 'contains=all'
somente conterão itens definidos no arquivo incluído, não no arquivo que o
inclui.

A parte ':p:h/' usa o nome do arquivo corrente (<sfile>), o expande
o path completo (:p), e então tira a parte da frente (:head).

Isto resulta no nome do diretório do arquivo. Isto faz com que o arquivo 'pod.vim'
no mesmo diretório seja incluído.

0 comentários:

Postar um comentário