Como posso verificar a ortografia nos atributos HTML?

9

O recurso de verificação ortográfica do Vim funciona muito bem na maioria dos casos - é inteligente o suficiente para distinguir código de literais e comentários na maioria dos idiomas. No entanto, tenho problemas com a verificação ortográfica HTML:

  <div title="text with mistaek #1" data-text="text with mistaek #2">text with mistaek #3</div>

No exemplo acima, apenas o erro interno divé destacado (nº 3). Seria ótimo ter todos os atributos relevantes verificados - pelo menos titlee data-*, idealmente - lista de atributos configurável.

É possível via configuração ou VimScript? O plug-in também funciona, mas, idealmente, deve ser configurável para HTMLarquivos diferentes (por exemplo, cshtmlarquivos ASP .NET MVC ).

Jarlax
fonte

Respostas:

5

Os itens de sintaxe nos quais o Vim destacará erros de ortografia são definidos usando os clusters @Spelle @NoSpell. Consulte :help spell-syntax(e o restante dos arquivos :help spelle :help syntax) para obter detalhes completos.

A solução rápida e suja para obter o resultado desejado é criar um novo arquivo no diretório de configuração do Vim: .vim/after/syntax/html.vimcom o conteúdo:

syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell
syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell

Essas linhas definem o destaque da sintaxe dos atributos HTML e foram copiadas do arquivo html.vim incluído nos arquivos de sintaxe padrão do Vim. Em seguida, adicionei o @Spellcluster ao containscampo para ativar a verificação ortográfica em cada item de sintaxe.

Para aplicar isso apenas aos atributos "title" e "data- *", é necessário ajustar a expressão regular usada para corresponder os itens e editar um pouco mais extensamente a maneira como o destaque HTML funciona. Aqui está uma solução que funciona apenas para os atributos "title":

syn region htmlStringSpell contained start=+title=["']+hs=s+6 end=+["']+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell containedin=htmlTag,ScriptTag
hi def link htmlStringSpell String

NB

  1. A expressão regular agora inclui o nome do titleatributo e um deslocamento para que essa parte do item de sintaxe não seja incluída no destaque. (Veja :help syn-pattern-offset)
  2. O item de sintaxe agora tem seu próprio nome e, portanto, precisa (i) ser containedintodos os itens de sintaxe em que htmlStrings estão contidos por meio de suas respectivas containsconfigurações. (ii) ter seu próprio destaque aplicado.
Rico
fonte
11
Obrigado! Atualizei minha resposta para adicionar as linhas de aspas simples. (Trabalhando na correção integral)
Rico
3

De /usr/share/vim/vim74/syntax/html.vim:

syn region  htmlString   contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
syn region  htmlString   contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc

Para adicionar suporte ortográfico, precisamos adicionar a @Spellpalavra - chave (consulte :help spell-syntax) da seguinte forma:

syn region  htmlString   contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell
syn region  htmlString   contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell

Você precisa colocar isso ~/.vim/after/syntax/html.vimpara que ele substitua as regras de sintaxe padrão.

Dica de bônus:
a primeira linha é para atributos em cadeias de caracteres duplas ( attr="value"), e a segunda se for para cadeias de caracteres simples ( attr='value'). Você também pode substituir apenas um deles, para poder escolher se tem verificação ortográfica.

Martin Tournoij
fonte