sexta-feira, 17 de abril de 2009

Layout portável de um arquivo de sintaxe

Siga essas orientações para fazer arquivos de sintaxe acessíveis para todos.
Comece com um header que explique para que é o arquivo de sintaxe, quem o mantém
e quando foi sua última atualização. Não inclua muita informação sobre o
histórico de mudanças, poucas pessoas irão le-la.
Exemplo:
" Vim syntax file
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2001 Jun 18
" Remark: Included by the C++ syntax.
Use o mesmo layout que os outros arquivos de sintaxe. Usar um arquivo de sintaxe
existente irá lhe economizar um monte de tempo.

Escolha um bom e descritivo nome para seu arquivo de sintaxe. Use letras
minusculas e dígitos. Não faça-o muito longo, ele é usado em muitos lugares: O
nome do arquivo de sintaxe 'nome.vim', 'filetype', use 'b:current_syntax' no início
de cada grupo de sintaxe (nameType, nameStatement, nameString, etc).

Comece com um teste do 'b:current_syntax'. Se estiver definido, algum outro
arquivo de sintaxe, mais no início do 'runtimepath' já foi carregado:
if exists("b:current_syntax")
    finish
endif
Para ser compatível com o Vim 5.8 use:
if version < 600
  syntax clear
elseif exists("b:current_syntax")
  finish
endif
Defina 'b:current_syntax' para o nome da sintaxe no final. Não esqueça que
arquivos incluídos fazem isto também, você pode ter que redefinir
'b:current_syntax' se você incluir dois arquivos.

Se você quiser que seu arquivo de sintaxe funcione com Vim 5.x, adicione um
teste do v:version. Veja 'yacc.vim' por um exemplo.

Não inclua qualquer coisa que é uma preferencia do usuário. Não, define
'tabstop', 'expandtab', etc. Estes pertencem ao filetype plugin.

Não inclua mapeamentos ou abreviaçoes. Somente inclua a definição de 'iskeyword'
se for realmente necessária para reconhecimento de palavras-chave.

Para permitir que os próprios usuários selecionem sua cores preferidas, faça um
nome de grupo diferente para cada tipo de item colorizado. Então associe cada um
deles para um dos grupos de colorização padrão. Isto fará com que trabalhe com
qualquer esquema de cores.
Se você selecionar cores específicas ele irá parecer ruim com alguns esquemas de
cores. E não esqueça que algumas pessoas usam uma cor de fundo diferente, ou só
tem oito cores disponíveis.

Para a associação use 'hi def link', para que o usuário possa selecionar
colorização diferente antes que seu arquivo de sintaxe seja carregado. Exemplo:
hi def link nameString  String
hi def link nameNumber Number
hi def link nameCommand Statement
          ... etc ...
Adicione o argumento 'display' para itens que não serão usados quando
sincronizando, para acelerar a rolagem para trás e o Ctrl-L.

0 comentários:

Postar um comentário