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 = 1
Hinweis: 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