¿Cómo puedo verificar la ortografía en los atributos HTML?


9

La función de corrección ortográfica de Vim funciona muy bien en la mayoría de los casos: incluso es lo suficientemente inteligente como para distinguir el código de los literales y los comentarios en la mayoría de los idiomas. Sin embargo, tengo problemas con la corrección ortográfica de HTML:

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

En el ejemplo anterior, solo divse resalta el error interno (# 3). Sería genial tener todos los atributos relevantes verificados, al menos titlee data-*, idealmente, una lista de atributos configurables.

¿Se puede lograr a través de la configuración o VimScript? El complemento también funcionará, pero idealmente debería ser configurable para HTMLarchivos similares (por ejemplo, cshtmlarchivos ASP .NET MVC ).

Respuestas:


5

Los elementos de sintaxis dentro de los cuales Vim resaltará los errores de ortografía se definen usando los clústeres @Spelly @NoSpell. Ver :help spell-syntax(y el resto de los archivos :help spelly :help syntax) para más detalles.

La solución rápida y sucia para obtener el resultado deseado es crear un nuevo archivo en su directorio de configuración de Vim: .vim/after/syntax/html.vimcon el contenido:

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

Estas líneas definen el resaltado de sintaxis para los atributos HTML y se copiaron del archivo html.vim que se incluye en los archivos de sintaxis estándar de Vim. Luego agregué el @Spellclúster al containscampo para permitir la corrección ortográfica dentro de cada elemento de sintaxis.

Para aplicar esto solo a los atributos "título" y "datos- *" se requiere ajustar la expresión regular utilizada para hacer coincidir los elementos, y una edición un poco más amplia de la forma en que funciona el resaltado HTML. Aquí hay una solución que funciona solo para atributos de "título":

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

nótese bien

  1. La expresión regular ahora incluye el nombre del titleatributo y un desplazamiento para que esta parte del elemento de sintaxis no se incluya en el resaltado. (Ver :help syn-pattern-offset)
  2. El elemento de sintaxis ahora tiene su propio nombre y, por lo tanto, debe (i) ser containedintodos los elementos de sintaxis en los que htmlStrings están contenidos a través de sus respectivas containsconfiguraciones. (ii) tener su propio resaltado aplicado.

1
¡Gracias! Actualicé mi respuesta para agregar las líneas de comillas simples. (Trabajando en la solución completa)
Rich

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 agregar compatibilidad con la ortografía, debemos agregar la @Spellpalabra clave (ver :help spell-syntax) así:

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

Debe poner esto ~/.vim/after/syntax/html.vimpara que anule las reglas de sintaxis predeterminadas.

Consejo adicional:
la primera línea es para atributos en cadenas de comillas dobles ( attr="value"), y la segunda si es para cadenas de comillas simples ( attr='value'). También puede anular solo uno de estos, por lo que puede elegir si tiene un corrector ortográfico.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.