vim-lsp-cxx-highlight は、言語サーバー プロトコルを使用して C/C++/Cuda/ObjC セマンティック ハイライトを提供する vim プラグインです。
ほとんどの LSP サーバーとクライアントがセマンティック トークンをサポートするようになったため、このプロジェクトはハイライト表示を行う必要がなくなったため、アーカイブされました。
このプロジェクトの本来の目的は、cquery および ccls からの非標準拡張機能を解析して標準化されるずっと前に、C++ の vim/nvim に適切なセマンティック ハイライトを提供することでした。
現在標準化されているハイライト表示は、LSP クライアント (組み込みまたは別個のプラグイン) で実装する方が合理的です。
このプラグインは color_coded や chromatica とどのように区別されますか?
vim-lsp-cxx-highlight はソース ファイルのコンパイル/分析を行いません。すべてのセマンティック ハイライト データを言語サーバー プロトコル経由で受信します。このプラグインの主な利点は、完全に vimscript で記述されていることです。
このアイデアは、vscode-cquery が cquery を使用してセマンティック強調表示を提供する方法を観察したことから生まれました。
左: プラグインなし、右: vim-lsp-cxx-highlight + ccls
プラグインにはvim
またはneovim
必要です。 vim
の場合、 +timers
と+byte_offset
が推奨されますが、必須ではありません。
さらに、互換性のある言語サーバーと言語サーバー クライアントが必要です。
次の言語サーバーとプロトコル拡張がサポートされています。
クエリー
$cquery/publishSemanticHighlighting
- セマンティック強調表示$cquery/setInactiveRegions
- プリプロセッサがスキップした領域ccls
$ccls/publishSemanticHighlight
- セマンティック強調表示$ccls/publishSkippedRegions
- プリプロセッサのスキップされた領域カランカラン
次の言語サーバー クライアントがサポートされています。
vim-plug の使用 (または、選択したプラグイン マネージャーを使用)
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 '
vim8 のネイティブ パッケージ マネージャーの使用 (ターミナルでこのコマンドを実行)
git clone https://github.com/jackguo380/vim-lsp-cxx-highlight.git ~ /.vim/pack/vendor/start/vim-lsp-cxx-highlight
cquery
の場合、次の初期化オプションが必要です。
{
"highlight" : { "enabled" : true },
"emitInactiveRegions" : true
}
ccls
の場合、次の初期化オプションが必要です。
{
"highlight" : { "lsRanges" : true }
}
clangd
の場合、 coc-settings.json
には次のものが必要です。
{
"clangd.semanticHighlighting" : true ,
"coc.preferences.semanticTokensHighlights" : false
}
vim-lsp 構成のサンプルについては、これを参照してください。
LanguageClient-neovim 構成のサンプルについては、これを参照してください。
coc.nvim coc-settings.json のサンプルについては、これを参照してください。
nvim-lsp 構成のサンプルについては、これを参照してください。
プラグインは追加の構成を行わなくても機能するはずです。ただし、デフォルト設定が気に入らない場合は:help vim-lsp-cxx-highlight
参照してください。
vim-lsp-cxx-highlight は Vim 8.1 のテキスト プロパティをサポートするようになりました ( :help textprop
参照)。
text-property を使用すると次のことが改善されます。
この機能のサポートは Vim バージョン8.1.1722
でテストされており、古いバージョンでは問題が発生する可能性があります。このバージョン以降にアップグレードすることをお勧めします。
有効にするには:
let g: lsp_cxx_hl_use_text_props = 1
注:これは vim バージョン 8.2 以降で自動的に有効になります。
これは実験的な機能なので、かなりバグがある可能性があります。バグレポートを提出してください。
MITライセンス