Ajout de surbrillance de syntaxe supplémentaire à nvim; impossible d'obtenir la syntaxe .config / nvim / after / pour charger le fichier .vim
J'essaie d'ajouter une coloration syntaxique supplémentaire à un plugin que j'utilise pour la coloration syntaxique. J'ai essayé d'ajouter le fichier de syntaxe supplémentaire fstrings.vim
au ~/.config/nvim/after/syntax
dossier mais mon nvim ne le récupère pas.
Les choses que j'ai essayées:
- Vérifiez si
~/.config/nvim/after
et / ou~/.config/nvim/after/syntax
est ajouté à mon chemin d'exécution.
- Seul
~/.config/nvim/after
est ajouté à mon chemin - vérifié avec:set rtp
>>runtimepath=~...,...,~/.config/nvim/after
- mais je ne vois pas le fichier chargé:scriptnames
. Comment puis-je charger le fichier?
- Remplacez l'emplacement du fichier par au
~/.config/nvim/after
lieu de~/.config/nvim/after/syntax
- Cela ne fonctionne pas non plus.
- Chargez manuellement le fichier.
- Cela fonctionne en fait de manière surprenante. Je peux modifier manuellement la syntaxe du fichier en utilisant
:set syntax=fstrings
cependant, toute la coloration syntaxique d'origine fournie par le plugin disparaît, et seule la mise en évidence fournie (voir l'instruction d'impression dans l'image ci-dessous) par lefstrings.vim
est utilisée. Cela me porte à croire que le chemin est correctement configuré, mais nvim ne veut pas le charger au démarrage et / ou l'ignore à cause du plugin utilisé.
Je sais que le /after/
dossier est utilisé pour appliquer les paramètres après les paramètres précédents, plutôt que pour l'écrasement. J'ai déjà essayé la solution ici et ici mais je n'ai pas réussi à la faire fonctionner. Toute aide sur la façon de déboguer ceci serait appréciée.
" ~/.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
Réponses
Les règles de syntaxe sont généralement nommées d'après l' 'filetype'ensemble du tampon, qui à son tour est généralement détecté (en fonction de l'extension de fichier, du nom de fichier ou du contenu du fichier) et généralement définies automatiquement.
Si vous souhaitez étendre la coloration syntaxique pour Python, vous devez généralement nommer votre script après le type de "python"
fichier.
Lorsque Vim charge les règles de syntaxe pour Python, il le fera pour les fichiers nommés syntax/python.vim
ou syntax/python/*.vim
(les règles ftplugin le permettent également python_*.vim
, mais il s'avère que ce n'est pas le cas pour la syntaxe.)
Vous devez donc nommer votre fichier ~/.config/nvim/after/syntax/python.vim
(ou ~/.config/nvim/after/syntax/python/fstrings.vim
) afin de le charger pour les fichiers Python et après le chargement des règles d'exécution groupées pour Python.
Une autre option consiste à définir l' 'syntax'option pour inclure plusieurs types, séparés par un point. Par exemple, :setlocal syntax=python.fstrings
va d'abord charger syntax/python.vim
, puis syntax/fstrings.vim
. Cela serait plus utile si vous aviez un morceau de syntaxe qui est quelque peu générique et qui peut avoir du sens pour plusieurs langues distinctes (par exemple, une coloration syntaxique d'un format de documentation dans des commentaires?) Cela ne semble pas très applicable dans ce cas , où les f-strings sont essentiellement une syntaxe Python. Maintenir un 'syntax'
paramètre séparé de celui- 'filetype'
ci peut également être délicat, il doit être défini au bon endroit (ni trop tôt ni trop tard) pour éviter d'être écrasé par le paramètre par défaut.
Lors du dépannage d'un tel problème de non-chargement de :scriptnamesvotre *.vim
script , vous pouvez utiliser la commande pour vérifier si votre script a réellement été chargé par Vim à un moment donné. Répétez cela avant et après l'ouverture d'un fichier du type de fichier spécifique que vous recherchez pour confirmer qu'il a été déclenché par cette détection de type de fichier.