vim-lsp-cxx-highlight est un plugin vim qui fournit une mise en évidence sémantique C/C++/Cuda/ObjC à l'aide du protocole de serveur de langage.
Ce projet a été archivé car il n'est plus nécessaire pour réaliser la mise en évidence car la plupart des serveurs et clients LSP prennent désormais en charge les jetons sémantiques.
Le but initial de ce projet était d'apporter une bonne mise en évidence sémantique à vim/nvim pour C++ bien avant qu'il ne soit standardisé en analysant les extensions non standard de cquery et ccls.
Il est plus logique qu'un client LSP (intégré ou un plugin séparé) implémente la mise en évidence car elle est désormais standardisée.
Comment ce plugin se différencie-t-il de color_coded et chromatica ?
vim-lsp-cxx-highlight n'effectue aucune compilation/analyse des fichiers sources. Il reçoit toutes ses données de mise en évidence sémantique via le protocole du serveur de langue. Le principal avantage de ce plugin est qu’il est entièrement écrit en vimscript.
L'idée est venue de vscode-cquery et de la façon dont il utilise cquery pour fournir une mise en évidence sémantique.
Gauche : Pas de plugin, Droite : vim-lsp-cxx-highlight + ccls
Le plugin nécessite vim
ou neovim
. Pour vim
+timers
et +byte_offset
sont recommandés mais pas obligatoires.
De plus, un serveur de langue et un client de serveur de langue compatibles sont requis.
Les serveurs de langage et extensions de protocole suivants sont pris en charge :
requête
$cquery/publishSemanticHighlighting
- mise en évidence sémantique$cquery/setInactiveRegions
- régions ignorées par le préprocesseurccls
$ccls/publishSemanticHighlight
- mise en évidence sémantique$ccls/publishSkippedRegions
- régions ignorées par le préprocesseurclangd
Les clients de serveur de langue suivants sont pris en charge :
Utiliser vim-plug (Ou utilisez le gestionnaire de plugins de votre choix)
Plug ' prabirshrestha/vim-lsp ' " vim-lsp
" or
Plug ' autozimu/LanguageClient-neovim ' " LanguageClient-neovim
" or
Plug ' neoclide/coc.nvim ' " coc.nvim
" or
Plug ' neovim/nvim-lsp ' " nvim-lsp
Plug ' jackguo380/vim-lsp-cxx-highlight '
Utilisation du gestionnaire de packages natif de vim8 (exécutez cette commande dans un terminal)
git clone https://github.com/jackguo380/vim-lsp-cxx-highlight.git ~ /.vim/pack/vendor/start/vim-lsp-cxx-highlight
Pour cquery
les options d'initialisation suivantes sont nécessaires :
{
"highlight" : { "enabled" : true },
"emitInactiveRegions" : true
}
Pour ccls
les options d'initialisation suivantes sont nécessaires :
{
"highlight" : { "lsRanges" : true }
}
Pour clangd
coc-settings.json
doit avoir :
{
"clangd.semanticHighlighting" : true ,
"coc.preferences.semanticTokensHighlights" : false
}
Pour un exemple de configuration vim-lsp, voir ceci
Pour un exemple de configuration LanguageClient-neovim, voir ceci
Pour un exemple de coc.nvim coc-settings.json, voir ceci
Pour un exemple de configuration nvim-lsp, voir ceci
Le plugin devrait fonctionner sans aucune configuration supplémentaire. Mais si vous n'aimez pas les paramètres par défaut, consultez :help vim-lsp-cxx-highlight
vim-lsp-cxx-highlight prend désormais en charge les propriétés de texte de Vim 8.1 (voir :help textprop
).
Ce que l'utilisation des propriétés de texte améliore :
La prise en charge de cette fonctionnalité a été testée sur Vim version 8.1.1722
, les anciennes versions peuvent rencontrer des problèmes. Il est recommandé de mettre à niveau vers cette version ou une version plus récente.
Pour activer :
let g: lsp_cxx_hl_use_text_props = 1
Remarque : Ceci est désormais automatiquement activé pour la version 8.2 de vim ou une version ultérieure.
Il s’agit d’une fonctionnalité expérimentale, elle peut donc être assez boguée. Veuillez déposer des rapports de bogues !
Licence MIT