vim-lsp-cxx-highlight adalah plugin vim yang menyediakan penyorotan semantik C/C++/Cuda/ObjC menggunakan protokol server bahasa.
Proyek ini telah diarsipkan karena tidak lagi diperlukan untuk mencapai penyorotan karena sebagian besar server dan klien LSP sekarang mendukung Token Semantik.
Tujuan awal dari proyek ini adalah untuk memberikan penyorotan semantik yang baik pada vim/nvim untuk C++ jauh sebelum distandarisasi dengan menguraikan ekstensi non-standar dari cquery dan ccls.
Lebih masuk akal bagi klien LSP (plugin bawaan atau terpisah) untuk mengimplementasikan penyorotan seperti yang sudah distandarisasi sekarang.
Bagaimana plugin ini membedakan dirinya dari color_coded dan chrometica?
vim-lsp-cxx-highlight tidak melakukan kompilasi/analisis file sumber. Ia menerima semua data penyorotan semantik melalui protokol server bahasa. Keuntungan utama plugin ini adalah seluruhnya ditulis dalam vimscript.
Ide untuk ini datang dari vscode-cquery dan melihat bagaimana ia menggunakan cquery untuk memberikan penyorotan semantik.
Kiri: Tanpa Plugin, Kanan: vim-lsp-cxx-highlight + ccls
Plugin ini memerlukan vim
atau neovim
. Untuk vim
+timers
dan +byte_offset
direkomendasikan tetapi tidak wajib.
Selain itu, diperlukan server bahasa dan klien server bahasa yang kompatibel.
Server bahasa dan ekstensi protokol berikut ini didukung:
permintaan
$cquery/publishSemanticHighlighting
- penyorotan semantik$cquery/setInactiveRegions
- praprosesor melewatkan wilayahccl
$ccls/publishSemanticHighlight
- penyorotan semantik$ccls/publishSkippedRegions
- praprosesor melewatkan wilayahdentang
Klien server bahasa berikut ini didukung:
Menggunakan vim-plug (Atau gunakan pengelola plugin pilihan Anda)
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 '
Menggunakan manajer paket asli vim8 (Jalankan perintah ini di terminal)
git clone https://github.com/jackguo380/vim-lsp-cxx-highlight.git ~ /.vim/pack/vendor/start/vim-lsp-cxx-highlight
Untuk cquery
inisialisasi Opsi berikut diperlukan:
{
"highlight" : { "enabled" : true },
"emitInactiveRegions" : true
}
Untuk ccls
inisialisasi Opsi berikut diperlukan:
{
"highlight" : { "lsRanges" : true }
}
Untuk clangd
coc-settings.json
harus memiliki:
{
"clangd.semanticHighlighting" : true ,
"coc.preferences.semanticTokensHighlights" : false
}
Untuk contoh konfigurasi vim-lsp lihat ini
Untuk contoh konfigurasi LanguageClient-neovim lihat ini
Untuk contoh coc.nvim coc-settings.json lihat ini
Untuk contoh konfigurasi nvim-lsp lihat ini
Plugin seharusnya berfungsi tanpa konfigurasi tambahan apa pun. Tetapi jika Anda tidak menyukai pengaturan default, lihat :help vim-lsp-cxx-highlight
vim-lsp-cxx-highlight sekarang memiliki dukungan untuk properti teks Vim 8.1 (Lihat :help textprop
).
Apa yang ditingkatkan dengan menggunakan properti teks:
Dukungan untuk fitur ini telah diuji pada Vim versi 8.1.1722
, versi yang lebih lama mungkin mengalami masalah. Disarankan untuk meningkatkan ke versi ini atau yang lebih baru.
Untuk mengaktifkan:
let g: lsp_cxx_hl_use_text_props = 1
Catatan: Ini sekarang diaktifkan secara otomatis untuk vim versi 8.2 atau lebih tinggi
Ini adalah fitur eksperimental, jadi mungkin cukup bermasalah. Silakan ajukan laporan bug!
Lisensi MIT