segunda-feira, 13 de abril de 2009

Fazendo o vim reconhecer um novo tipo de arquivo pelo conteúdo

Se o seu arquivo não pode ser reconhecido pelo nome do arquivo, você pode
faze-lo conhecido pelo seu conteúdo.

Por exemplo, muitos arquivos de script começam assim:
#!/bin/xyz
Para reconhecer esse script crie um arquivo 'scripts.vim' em seu diretório
runtime (no mesmo local aonde o 'filetype.vim' vai).
Ele fica assim:
if did_filetype()
  finish
endif
if getline(1) =~ '^#!.*[/\\]xyz\>'
    setf xyz
endif
O que primeiro teste com 'did_filetype()' é para evitar que você verifique o
conteúdo dos arquivos para os quais o tipo do arquivo foi detectado pelo nome do
arquivo. Isto evita perda de tempo em verificar um arquivo quando o comando 'setf' não
fará nada.
O arquivo 'scripts.vim' é sourced por um autocomando no arquivo 'filetype.vim'
default. Portanto, a ordem das verificações é:
1. arquivos 'filetype.vim' antes do '$VIMRUNTIME' no 'runtimepath'
2. primeira parte de '$VIMRUNTIME/filetype.vim'
3. todos os arquivos scripts.vim no 'runtimepath'
4. resto do '$VIMRUNTIME/filetype.vim'
5. os arquivos 'filetype.vim' depois do '$VIMRUNTIME' no 'runtimepath'

Se isso não é suficiente, adicione um autocomando que corresponde a todos
arquivos e faça source de um script ou execute uma função que verifique o
conteúdo do arquivo.

0 comentários:

Postar um comentário