vim-lsp-cxx-highlight ist ein Vim-Plugin, das C/C++/Cuda/ObjC-semantische Hervorhebung mithilfe des Sprachserverprotokolls bereitstellt.
Dieses Projekt wurde archiviert, da es für die Hervorhebung nicht mehr benötigt wird, da die meisten LSP-Server und -Clients jetzt semantische Token unterstützen.
Der ursprüngliche Zweck dieses Projekts bestand darin, eine gute semantische Hervorhebung in vim/nvim für C++ zu bringen, lange bevor es standardisiert wurde, indem nicht standardmäßige Erweiterungen von cquery und ccls analysiert wurden.
Es ist sinnvoller, dass ein LSP-Client (eingebaut oder ein separates Plugin) die Hervorhebung implementiert, da sie jetzt standardisiert ist.
Wie unterscheidet sich dieses Plugin von color_coded und chromatica?
vim-lsp-cxx-highlight führt keine Kompilierung/Analyse von Quelldateien durch. Es empfängt alle semantischen Hervorhebungsdaten über das Sprachserverprotokoll. Der Hauptvorteil dieses Plugins besteht darin, dass es vollständig in Vimscript geschrieben ist.
Die Idee dazu kam von vscode-cquery und sah, wie es cquery verwendet, um semantische Hervorhebung bereitzustellen.
Links: Kein Plugin, Rechts: vim-lsp-cxx-highlight + ccls

Das Plugin erfordert vim oder neovim . Für vim werden +timers und +byte_offset empfohlen, sind aber nicht erforderlich.
Darüber hinaus ist ein kompatibler Sprachserver und Sprachserver-Client erforderlich.
Die folgenden Sprachserver und Protokollerweiterungen werden unterstützt:
cquery
$cquery/publishSemanticHighlighting – semantische Hervorhebung$cquery/setInactiveRegions – vom Präprozessor übersprungene Regionenccls
$ccls/publishSemanticHighlight – semantische Hervorhebung$ccls/publishSkippedRegions – vom Präprozessor übersprungene Regionenklirrend
Die folgenden Sprachserver-Clients werden unterstützt:
Verwenden von vim-plug (oder verwenden Sie den Plugin-Manager Ihrer Wahl)
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 'Verwenden des nativen Paketmanagers von vim8 (Führen Sie diesen Befehl in einem Terminal aus)
git clone https://github.com/jackguo380/vim-lsp-cxx-highlight.git ~ /.vim/pack/vendor/start/vim-lsp-cxx-highlight Für cquery werden folgende initializationOptions benötigt:
{
"highlight" : { "enabled" : true },
"emitInactiveRegions" : true
} Für ccls werden die folgenden Initialisierungsoptionen benötigt:
{
"highlight" : { "lsRanges" : true }
} Für clangd muss coc-settings.json Folgendes haben:
{
"clangd.semanticHighlighting" : true ,
"coc.preferences.semanticTokensHighlights" : false
}Eine Beispielkonfiguration für vim-lsp finden Sie hier
Eine Beispielkonfiguration für LanguageClient-neovim finden Sie hier
Ein Beispiel für coc.nvim coc-settings.json finden Sie hier
Eine Beispielkonfiguration für nvim-lsp finden Sie hier
Das Plugin sollte ohne zusätzliche Konfiguration funktionieren. Wenn Ihnen die Standardeinstellungen jedoch nicht gefallen, lesen Sie :help vim-lsp-cxx-highlight
vim-lsp-cxx-highlight unterstützt jetzt die Texteigenschaften von Vim 8.1 (siehe :help textprop ).
Was die Verwendung von Texteigenschaften verbessert:
Die Unterstützung dieser Funktion wurde in der Vim-Version 8.1.1722 getestet, bei älteren Versionen können Probleme auftreten. Es wird empfohlen, auf diese oder eine neuere Version zu aktualisieren.
So aktivieren Sie:
let g: lsp_cxx_hl_use_text_props = 1Hinweis: Dies ist jetzt automatisch für vim Version 8.2 oder höher aktiviert
Dies ist eine experimentelle Funktion und kann daher ziemlich fehlerhaft sein. Bitte melden Sie Fehler!
MIT-Lizenz