Come posso controllare l'ortografia negli attributi HTML?


9

La funzione di controllo ortografico di Vim funziona alla grande nella maggior parte dei casi: è persino abbastanza intelligente da distinguere il codice dai letterali e dai commenti nella maggior parte delle lingue. Tuttavia, ho problemi con il controllo ortografico HTML:

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

Nell'esempio sopra divè evidenziato solo l'errore interno (n. 3). Sarebbe bello avere tutti gli attributi rilevanti controllati - almeno titlee data-*, idealmente - un elenco configurabile di attributi.

È realizzabile tramite configurazione o VimScript? Funzionerà anche il plug-in, ma idealmente dovrebbe essere configurabile per HTMLfile di tipo diverso (ad esempio, cshtmlfile ASP .NET MVC ).

Risposte:


5

Gli elementi della sintassi in cui Vim evidenzierà gli errori di ortografia sono definiti usando i cluster @Spelle @NoSpell. Vedere :help spell-syntax(e il resto dei file :help spelle :help syntax) per i dettagli completi.

La soluzione rapida e sporca per ottenere il risultato desiderato è creare un nuovo file nella directory di configurazione di Vim: .vim/after/syntax/html.vimcon il contenuto:

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

Queste linee definiscono l'evidenziazione della sintassi per gli attributi HTML e sono state copiate dal file html.vim incluso nei file di sintassi standard di Vim. Ho quindi aggiunto il @Spellcluster al containscampo per consentire il controllo ortografico all'interno di ciascun elemento di sintassi.

Per applicare questo solo agli attributi "title" e "data- *" è necessario perfezionare l'espressione regolare utilizzata per abbinare gli elementi e una modifica leggermente più ampia del modo in cui funziona l'evidenziazione HTML. Ecco una soluzione che funziona solo per gli attributi "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. L'espressione regolare ora include il nome titledell'attributo e un offset in modo che questa parte dell'elemento di sintassi non sia inclusa nell'evidenziazione. (Vedi :help syn-pattern-offset)
  2. L'elemento di sintassi ora ha il suo nome e quindi deve (i) essere containedintutti gli elementi di sintassi in cui sono contenute htmlStrings tramite le rispettive containsimpostazioni. (ii) applicare la propria evidenziazione.

1
Grazie! Aggiornato la mia risposta per aggiungere le righe a virgoletta singola. (Lavorando sulla correzione completa)
Rich

3

Da /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

Per aggiungere il supporto ortografico, dobbiamo aggiungere la @Spellparola chiave (vedi :help spell-syntax) in questo modo:

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

È necessario inserirlo in ~/.vim/after/syntax/html.vimmodo da sovrascrivere le regole di sintassi predefinite.

Suggerimento bonus:
la prima riga è per gli attributi nelle stringhe tra virgolette doppie ( attr="value") e la seconda se per le stringhe tra virgolette singole ( attr='value'). Puoi anche ignorare solo uno di questi, quindi puoi scegliere se hai il controllo ortografico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.