quinta-feira, 16 de abril de 2009

Simplificando definições de item com clusters no arquivo de sintaxe

Uma das coisas que você notará quando começar a escrever um arquivo de sintaxe
você acabará gerando um monte de grupos de sintaxe. O Vim permite que você
defina uma coleção de grupos de sintaxe chamada de 'cluster'.

Suponha que você tem uma linguagem que contém loops 'for', comandos 'if', loops
'while', e funções. Cada uma delas contém os mesmos elementos de sintaxe:
números e identificadores. Você define-os assim:
:syntax match xFor /^for.*/ contains=xNumber,xIdent
:syntax match xIf /^if.*/ contains=xNumber,xIdent
:syntax match xWhile /^while.*/ contains=xNumber,xIdent
Você tem que repetir a mesma clausula 'contains=' a cada vez. Se você quiser
adicionar outro item contido, você tem que adiciona-lo três vezes. Os clusters
de sintaxe simplificam esta definições ao permitir que você tenha um cluster
pronto para diversos grupos de sintaxe.

Para definir um cluster para os dois itens que os três grupos contém, use o
seguinte comando:
:syntax cluster xState contains=xNumber,xIdent
Os clusters são usados dentro de outros itens de sintaxe exatamente como
qualquer outro grupo de sintaxe.
Seus nomes começam com '@'. Assim, você pode definir os três grupos assim:
:syntax match xFor /^for.*/ contains=@xState
:syntax match xIf /^if.*/ contains=@xState
:syntax match xWhile /^while.*/ contains=@xState
Você pode adicionar novos nomes de grupo para este cluster com o argumento
'add':
:syntax cluster xState add=xString
Você pode remover grupos de sintaxe desta lista também:
:syntax cluster xState remove=xNumber

0 comentários:

Postar um comentário