vim-lsp-cxx-highlight เป็นปลั๊กอิน vim ที่ให้การเน้นความหมายแบบ C/C++/Cuda/ObjC โดยใช้โปรโตคอลเซิร์ฟเวอร์ภาษา
โปรเจ็กต์นี้ถูกเก็บถาวรแล้วเนื่องจากไม่จำเป็นต้องทำการไฮไลต์อีกต่อไป เนื่องจากเซิร์ฟเวอร์และไคลเอนต์ LSP ส่วนใหญ่รองรับโทเค็นความหมายแล้ว
วัตถุประสงค์ดั้งเดิมของโปรเจ็กต์นี้คือเพื่อนำการเน้นความหมายที่ดีมาสู่ vim/nvim สำหรับ C++ ก่อนที่จะถูกทำให้เป็นมาตรฐานโดยการแยกวิเคราะห์ส่วนขยายที่ไม่ได้มาตรฐานจาก cquery และ ccls
มันสมเหตุสมผลกว่าสำหรับไคลเอนต์ 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/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
)
สิ่งที่ใช้คุณสมบัติข้อความปรับปรุง:
การสนับสนุนสำหรับคุณสมบัตินี้ได้รับการทดสอบบน Vim เวอร์ชัน 8.1.1722
เวอร์ชันเก่าอาจมีปัญหา ขอแนะนำให้อัปเกรดเป็นเวอร์ชันนี้หรือใหม่กว่า
หากต้องการเปิดใช้งาน:
let g: lsp_cxx_hl_use_text_props = 1
หมายเหตุ: ตอนนี้เปิดใช้งานโดยอัตโนมัติสำหรับ vim เวอร์ชัน 8.2 หรือสูงกว่า
นี่เป็นคุณลักษณะทดลอง ดังนั้นจึงอาจมีข้อผิดพลาดค่อนข้างมาก กรุณายื่นรายงานข้อผิดพลาด!
ใบอนุญาตเอ็มไอที