Adición de resaltado de sintaxis adicional a nvim; no se puede obtener la sintaxis .config / nvim / after / para cargar el archivo .vim
Estoy tratando de agregar resaltado de sintaxis adicional a un complemento que estoy usando para resaltado de sintaxis. Intenté agregar el archivo de sintaxis adicional fstrings.vim
a la ~/.config/nvim/after/syntax
carpeta, pero mi nvim no lo recoge.
Cosas que he probado:
- Verifique si
~/.config/nvim/after
y / o~/.config/nvim/after/syntax
se agrega a mi ruta de tiempo de ejecución.
- Solo
~/.config/nvim/after
se agrega a mi ruta, marcada con:set rtp
>>runtimepath=~...,...,~/.config/nvim/after
, sin embargo, no veo el archivo cargado:scriptnames
. ¿Cómo puedo cargar el archivo?
- Cambie la ubicación del archivo a en
~/.config/nvim/after
lugar de~/.config/nvim/after/syntax
- Esto tampoco funciona.
- Cargue manualmente el archivo.
- En realidad, esto hace el trabajo es sorprendente. Puedo cambiar manualmente la sintaxis del archivo usando
:set syntax=fstrings
, sin embargo, todo el resaltado de sintaxis original provisto por el complemento desaparece, y solofstrings.vim
se usa el resaltado provisto (vea la declaración de impresión en la imagen a continuación) . Esto me lleva a creer que la ruta está configurada correctamente, sin embargo, nvim no quiere cargarla durante el inicio y / o la ignora debido al complemento que se está utilizando.
Sé que la /after/
carpeta se usa para aplicar configuraciones después de configuraciones anteriores, en lugar de sobrescribir. Ya probé la solución aquí y aquí, pero no he podido hacer que funcione. Se agradecería cualquier ayuda sobre cómo depurar esto.
" ~/.config/nvim/after/syntax/fstrings.vim
syn match pythonEscape +{{+ contained containedin=pythonfString,pythonfDocstring
syn match pythonEscape +}}+ contained containedin=pythonfString,pythonfDocstring
syn region pythonfString matchgroup=pythonQuotes
\ start=+[fF]\@1<=\z(['"]\)+ end="\z1"
\ contains=@Spell,pythonEscape,pythonInterpolation
syn region pythonfDocstring matchgroup=pythonQuotes
\ start=+[fF]\@1<=\z('''\|"""\)+ end="\z1" keepend
\ contains=@Spell,pythonEscape,pythonSpaceError,pythonInterpolation,pythonDoctest
syn region pythonInterpolation contained
\ matchgroup=SpecialChar
\ start=+{{\@!+ end=+}}\@!+ skip=+{{+ keepend
\ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue,pythonDoctest
syn match pythonStringModifier /:\(.[<^=>]\)\?[-+ ]\?#\?0\?[0-9]*[_,]\?\(\.[0-9]*\)\?[bcdeEfFgGnosxX%]\?/ contained containedin=pythonInterpolation
syn match pythonStringModifier /![sra]/ contained containedin=pythonInterpolation
hi link pythonfString String
hi link pythonfDocstring String
hi link pythonStringModifier PreProc
Respuestas
Las reglas de sintaxis normalmente reciben el nombre del 'filetype'conjunto para el búfer, que a su vez se detecta normalmente (según la extensión del archivo, el nombre del archivo o el contenido del archivo) y generalmente se configura automáticamente.
Si desea extender el resaltado de sintaxis para Python, normalmente debe nombrar su secuencia de comandos después del tipo de "python"
archivo.
Cuando Vim carga reglas de sintaxis para Python, lo hará para archivos con nombre syntax/python.vim
o syntax/python/*.vim
(las reglas de ftplugin también lo permiten python_*.vim
, pero resulta que ese no es el caso de la sintaxis).
Por lo tanto, debe nombrar su archivo ~/.config/nvim/after/syntax/python.vim
(o ~/.config/nvim/after/syntax/python/fstrings.vim
) para que se cargue para los archivos de Python y después de que se carguen las reglas de tiempo de ejecución incluidas para Python.
Otra opción es configurar la 'syntax'opción para incluir varios tipos, separados por un punto. Por ejemplo, :setlocal syntax=python.fstrings
primero se cargará syntax/python.vim
y luego syntax/fstrings.vim
. Esto sería más útil si tuvieras una parte de la sintaxis que es algo genérica y puede tener sentido para varios idiomas separados (por ejemplo, ¿algún resaltado de sintaxis en un formato de documentación dentro de los comentarios?) No parece ser muy aplicable en este caso. , donde las cadenas f son esencialmente una sintaxis de Python. Mantener una 'syntax'
configuración separada de la anterior 'filetype'
también puede ser complicado, debe establecerse en la ubicación correcta (ni demasiado temprano ni demasiado tarde) para evitar que la configuración predeterminada lo golpee.
Mientras soluciona un problema de este tipo de un script suyo que no se carga, puede usar el :scriptnamescomando para verificar si *.vim
Vim realmente cargó su script en algún momento. Repita eso antes y después de abrir un archivo del tipo de archivo específico que busca para confirmar que fue activado por esa detección de tipo de archivo.