¿A dónde pertenecen las reglas de resaltado personalizadas?

11

Ocasionalmente, quiero anular la sintaxis predeterminada para resaltar colores y estilos con mis propias preferencias.

Me imagino que la forma más adecuada de hacer esto sería crear mi propio esquema de colores. Sin embargo, tengo un par de preguntas.

  1. Si quiero establecer un resaltado para un grupo de sintaxis específico en un idioma específico, ¿pertenece a mi esquema de colores o sería mejor ubicarlo after/syntax/[filetype].vim?

    highlight jsAssignExpIdent cterm=bold gui=bold
    

    Parece un poco extraño colocar reglas oscuras específicas del idioma en el esquema de colores, ya que se cargarán en cualquier idioma en el que esté trabajando, pero parece aún peor colocar reglas resaltadas en el archivo de sintaxis.

  2. A veces creo nuevas reglas de sintaxis para un idioma específico, en after/syntax/[filetype].vim. En caso de que otros usuarios quieran emplear estas extensiones, ¿sería apropiado para mí proporcionar reglas de resaltado predeterminadas allí que enlacen a grupos de resaltado predeterminados comunes? Si otro usuario desea anular ese color de resaltado, ¿cómo debería hacerlo?

    ::::: after/syntax/asm.vim :::::
    
    syn match asmHexNumber /\(0x\|\$\)[0-9A-Fa-f]\+/
    highlight default link asmHexNumber Number
    
joeytwiddle
fuente

Respuestas:

9

Primera pregunta

Las definiciones destacadas pertenecen a su esquema de colores. El hecho de que estén cargados para cada búfer, sin importar su idioma, no debería ser un problema en absoluto.

Si no desea editar su esquema de colores, puede poner esas definiciones destacadas en plugin/myhighlights.vim:

function! MyHighlights()
    highlight ...
    highlight ...
endfunction

augroup MyHighlights
    autocmd!
    autocmd ColorScheme * call MyHighlights()
augroup END

Segunda pregunta

Su muestra es exactamente cómo debe hacerlo y cómo funciona cada script de sintaxis. Este método permite que el desarrollador del complemento defina valores predeterminados sanos sin forzar colores específicos en la garganta de sus usuarios.

romainl
fuente
Gracias por la confirmación. Pero me preocupa si pongo highlight link ...comandos en un archivo de sintaxis que sobrescribirán la configuración del esquema de colores cada vez que se cargue un archivo con ese tipo de archivo. ¿Debería hacerlo solohighlight link ... después de comprobar que no existe una regla de resaltado para ese nombre?
joeytwiddle
Ah, no necesito preocuparme. Los documentos de Vim dicen: Si ya hay configuraciones resaltadas para {from-group}, el enlace no está hecho, a menos que '!' es dado. Para un comando ": resaltar enlace" en un archivo de origen, no recibe un mensaje de error. Esto se puede usar para omitir enlaces para grupos que ya tienen configuraciones.
joeytwiddle
Pero para las personas que modifican sus esquemas de colores, un highlight linken el esquema de colores podría sobrescribirse más adelante con un highlight linken un archivo de sintaxis. Para evitar esto, se pueden usar argumentos reales (ctermbg, guifg, ...) en lugar de un enlace.
joeytwiddle
El usuario debe tener la última palabra sobre qué colores se utilizan para un grupo de resaltado determinado. A tal efecto, no es raro ver definiciones de resaltado específicas del idioma en esquemas de colores. Solo debe usarlo highlight link ...en su secuencia de comandos de sintaxis y permitir que sus usuarios lo anulen si lo desean.
romainl
Mi preocupación era que si los usuarios usan highlight link ...su esquema de colores, el archivo de sintaxis podría restablecerlo más tarde con el suyo highlight link .... Ahora veo que buenos archivos de sintaxis evitan esto mediante el uso highlight default link .... Eso probablemente debería ser una corrección a la asmHexNumberregla en mi pregunta.
joeytwiddle