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
يوصى باستخدامهما ولكنهما غير مطلوبين.
بالإضافة إلى ذلك، يلزم وجود خادم لغة متوافق وعميل خادم اللغة.
يتم دعم خوادم اللغات وملحقات البروتوكول التالية:
com.cquery
$cquery/publishSemanticHighlighting
- تسليط الضوء على الدلالات$cquery/setInactiveRegions
- المناطق التي تجاوزها المعالج المسبقcom.ccls
$ccls/publishSemanticHighlight
- تسليط الضوء على الدلالات$ccls/publishSkippedRegions
- المناطق التي تم تخطيها بواسطة المعالج المسبقclangd
يتم دعم عملاء خادم اللغة التاليين:
استخدام 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 أو الأحدث
هذه ميزة تجريبية، لذا قد تكون بها أخطاء كبيرة. يرجى تقديم تقارير الأخطاء!
رخصة معهد ماساتشوستس للتكنولوجيا