ملاحظة: تمت أرشفة هذا المشروع وتم استبداله بالتمييز المستند إلى LSP، وهو أقل تعقيدًا وأقل استهلاكًا للموارد. لا شك أن color_coded كان رائدًا في هذا المجال وأنا ممتن لجميع الرموز المميزة التي تم تلوينها في محررينا منذ ذلك الحين.
color_coded هو مكون إضافي لـ vim يوفر تمييزًا فوريًا (سريعًا) للتعليمات البرمجية بدون علامات لـ C++ وC وObjective C باستخدام libclang.
قبل color_coded | بعد color_coded |
---|---|
قبل تثبيت color_coded على OS X، يرجى قراءة ما يلي. إن vim الذي يأتي مع OS X (حتى الأحدث) ليس جديدًا بما يكفي لدعم color_coded. علاوة على ذلك، فإن macvim الافتراضي من homebrew لا يحتوي على lua ممكّنًا. للتأكد من أن لديك تثبيت macvim صالح على OS X، يرجى القيام بما يلي:
brew update
brew install macvim --with-lua --with-override-system-vim
brew linkapps macvim
brew install xz cmake
# Spawn a new shell to use the new system vim
للحصول على التمييز المناسب، ستحتاج أيضًا إلى أدوات سطر أوامر Xcode، والتي ستمنحك رؤوس النظام المناسبة:
xcode-select --install
أولاً، قم بتثبيت كافة التبعيات المطلوبة.
[sudo] apt-get install build-essential libclang-3.9-dev libncurses-dev libz-dev cmake xz-utils libpthread-workqueue-dev libtinfo-5
بالنسبة لـ lua، يجب عليك تثبيت الإصدار الذي تم تجميع إصدار vim الخاص بك من أجله.
vim --version | grep lua
ابحث عن رقم الإصدار -llua5.x
واستخدمه لتثبيت الإصدار الصحيح.
[sudo] apt-get install liblua5.x-dev lua5.x
تحتاج أيضًا إلى التأكد من حصولك على مستوى مجلس التعاون الخليجي 4.9 (أو أعلى). إذا لم تقم بذلك، يمكنك تجربة ما يلي (تم اختباره على Ubuntu 14.04).
# Install GCC 4.9
[sudo] add-apt-repository ppa:ubuntu-toolchain-r/test
[sudo] apt-get update
[sudo] apt-get install g++-4.9
# Prefer 4.9 to other versions
[sudo] update-alternatives --remove-all g++
[sudo] update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 50
(تم الاختبار في FreeBSD 11.1)
$ [sudo] pkg install llvm40 cmake
$ cd ~ /.vim/bundle/color_coded
$ mkdir build && cd build
$ cmake -DCUSTOM_CLANG=1 -DLLVM_ROOT_DIR=/usr/local/llvm40 ..
$ make && make install
تم اختبار التثبيت باستخدام vundle، ولكن يجب أن يكون متوافقًا أيضًا مع مسببات الأمراض. للتثبيت باستخدام vundle (أضف السطر إلى ~/.vimrc
، وأعد تشغيل vim، وقم بتشغيل :PluginInstall
):
Plugin ' jeaye/color_coded '
التثبيت باستخدام NeoBundle يدعم إنشاء البرنامج الإضافي وتحميله ببطء تلقائيًا:
NeoBundleLazy ' jeaye/color_coded ' , {
' build ' : {
' unix ' : ' rm -f CMakeCache.txt && cmake . && make && make install ' ,
},
' autoload ' : { ' filetypes ' : [ ' c ' , ' cpp ' , ' objc ' , ' objcpp ' ] },
' build_commands ' : [ ' cmake ' , ' make ' ]
}
نظرًا لأن color_coded يحتوي على مكون مترجم، فستحتاج إلى التجميع يدويًا عند التثبيت والتحديث (ما لم يقم مدير حزم vim بذلك نيابةً عنك). يعمل التجميع على النحو التالي، بافتراض استخدام vundle (راجع قسم التبعيات للتأكد من أنه يمكنك make
بشكل صحيح):
cd ~ /.vim/bundle/color_coded
rm -f CMakeCache.txt
mkdir build && cd build
cmake ..
make && make install # Compiling with GCC is preferred, ironically
# Clang works on OS X, but has mixed success on Linux and the BSDs
# Cleanup afterward; frees several hundred megabytes
make clean && make clean_clang
لأسباب توافقية مختلفة، سيحاول color_coded تنزيل إصدار معروف من clang. قد يضيف هذا وقتًا إلى عملية التكوين الخاصة بك، ولكنه يوفر المزيد من الاستقرار عبر منصات متعددة. إن تجنب ذلك غير مدعوم رسميًا، ولكنه موثق هنا.
ملاحظة أخرى: color_coded لا يدعم luajit بشكل موثوق. والأكثر إفادة، أن luajit لا يدعم بشكل موثوق تضمينه في المكتبات المشتركة.
بمجرد تثبيت color_coded وتجميعه، سيبدأ العمل تلقائيًا في المرة التالية التي تبدأ فيها تشغيل vim. لكي يعرف color_coded كيفية تجميع التعليمات البرمجية الخاصة بك، قد تحتاج إلى إنشاء ملف يصف خيارات المترجم المطلوبة. لاحظ أن color_coded يفترض إعدادات افتراضية معقولة ويحاول السماح بالاستخدام الفوري.
ومع ذلك، في أي حالة غير تافهة، ستجد نفسك بحاجة إلى توفير ملف .color_coded
لمشروعك. بالنسبة لكل ملف، سيبحث color_coded من دليل الملف وصولاً إلى جذر نظام الملفات بحثًا عن ملف .color_coded
أو ملف .color_coded_foo
(حيث foo
هو نوع الملف؛ على سبيل المثال c
، cpp
، وما إلى ذلك). وهذا يجعل من الممكن أن يكون لديك واحد في دليلك الرئيسي، على سبيل المثال، ثم في كل دليل من أدلة مشاريعك. إذا لم تحدد واحدًا في دليل المشروع، فسيتم استخدام الدليل الموجود في دليلك الرئيسي. كما أنه يجعل من الممكن توفير إشارات مختلفة لأنواع ملفات مختلفة (C، C++، إلخ) وكذلك العمل في المشاريع الفرعية ذات العلامات المختلفة. مرة أخرى، إذا لم يتم العثور على مثل هذه الملفات، فسيتم تطبيق الإعدادات الافتراضية المعقولة.
سيبذل color_coded قصارى جهده لتسليط الضوء على الكود الخاص بك، حتى لو كانت هناك أخطاء في وحدة الترجمة. يتيح ذلك تمييزًا أفضل أثناء الكتابة وتمييز التعليمات البرمجية الصالحة عندما لا يعرف color_coded كل شيء عن مشروعك.
محتويات ملف .color_coded
أو .color_coded_foo
هي ببساطة قائمة مفصولة بأسطر من خيارات المترجم. على سبيل المثال، الملف .color_coded
لـ color_coded هو (يضع color_coded الباقي بشكل افتراضي عندما يكتشف ملفات C أو C++):
-Iinclude
-Ilib/jest/include
يمكن إنشاء الملف .color_coded
تلقائيًا باستخدام YCM-Generator.
ملاحظة: من باب البساطة، لا يُسمح بأي بيانات أخرى في الملف .color_coded
. وهذا يعني أن التعليقات غير مدعومة.
g:color_coded_enabled
يتحكم هذا الخيار فيما إذا كان color_coded سيعمل أم لا. سيؤدي استدعاء الأمر :CCtoggle
إلى تعديل هذا الخيار لتحقيق نتائجه. يمكنك أيضًا تحديده كـ 0
في ~/.vimrc
الخاص بك لتعطيل color_coded عالميًا.
تقصير:
let g: color_coded_enabled = 1
g:color_coded_filetypes
يتحكم هذا الخيار في أنواع الملفات التي سيحاول color_coded تجميعها.
تقصير:
let g: color_coded_filetypes = [ ' c ' , ' cpp ' , ' objc ' ]
هناك العديد من مجموعات التمييز الجديدة التي يضيفها color_coded. لقد تم تصميمها لتتبع الأجزاء الداخلية لـ libclang بأكبر قدر ممكن. لربط الأشياء معًا، تم إنشاء بعض مجموعات التغليف التي ستسمح بإجراء المزيد من التغييرات الشاملة. يتم تعيين مجموعات clang افتراضيًا لاستخدامها، جنبًا إلى جنب مع مجموعات vim العادية ( Function
، Macro
، Number
، إلخ).
" To get full highlighting, specify these in your colorscheme.
" See colors/twilighted.vim for example usage
hi Member " Any non-static member variable
hi Variable " Any non-member variable
hi Namespace
hi EnumConstant
hi link StructDecl Type
hi link UnionDecl Type
hi link ClassDecl Type
hi link EnumDecl Type
يأتي color_coded مزودًا بنموذج نظام ألوان يوضح الدعم للمجموعات الموسعة. لاستخدامه، قم باستدعاء :colorscheme twilighted
. كما يوحي الاسم، فإن نظام الألوان متفرع من سمة الشفق الخاصة بـ vim وتم دمجها بشكل مناسب مع ما ستراه في الريبو. لفحص التنفيذ، قم بزيارة colors/twilighted.vim
. لاحظ أن color_coded يمكن أن يعمل مع أي نظام ألوان؛ هذه مجرد عينة.
لمزيد من المعلومات حول جميع المجموعات المدعومة، راجع after/syntax/color_coded.vim
ووثائق clang.
:CCerror
يقوم هذا الأمر بإخراج رسالة خطأ التحويل البرمجي الأخيرة من libclang. إذا كان التمييز الخاص بك لا يعمل بشكل صحيح، فقد يكون لديك ملف .color_coded
تم تكوينه بشكل خاطئ أو قد يكون لديك أخطاء في بناء الجملة في المصدر الخاص بك. عندما تكون في شك، تحقق هنا أولا.
:CCtoggle
يقوم هذا الأمر بتمكين color_coded، إذا كان معطلاً حاليًا، أو تعطيله، إذا كان ممكنًا حاليًا. يتم هذا التمكين/التعطيل عبر خيار g:color_coded_enabled
.
يتطلب تجميع color_coded ما يلي:
يتطلب استخدام color_coded وجود vim:
يحاول color_coded تجميع الكود الخاص بك أثناء كتابته. نظرًا لكيفية عمل vim، لا يمكن لـ color_coded تحديث التمييز إلا بعد القيام بشيء ما (تحريك المؤشر، إجراء تغيير، وما إلى ذلك). عند الانتهاء من الكتابة ولم يتم الانتهاء من تحديث التمييز، بافتراض أن ملف .color_coded
الخاص بك كافٍ، فإن تحريك المؤشر (أو التسبب في الأحداث بطريقة أخرى) سيسمح بإنهاء color_coded.
لاحظ أن هناك حدث تعليق في vim يتم تشغيله بعد التوقف عن الكتابة وبعد بعض التأخير. يرتبط color_coded أيضًا بهذا وسيستخدمه لتطبيق التمييز إن أمكن.
نعم. صدق أو لا تصدق، من المؤكد تقريبًا أن هذه أخطاء libclang. لقد قمت بفرز عدد قليل منهم وأحتفظ بشوكة libclang الخاصة بي. إذا كنت ترغب في الإبلاغ عن مثل هذه المشكلة، تحقق من هذه التذكرة.
هذا مقصود. في المرة الأولى التي تفتح فيها مخزنًا مؤقتًا، لا يعرف color_coded ما إذا كان سيتم تجميعه بشكل صحيح ولا يريد منك الانتظار بينما يحاول اكتشاف ذلك. سيتم دائمًا تجميع color_coded في الخلفية وستقوم الأحداث مثل تحريك المؤشر أو تغيير النص باستقصاء التحديثات. ومع ذلك، لاحظ أنه بمجرد تمييز المخزن المؤقت، فإن ترك هذا المخزن المؤقت والعودة إليه سيؤدي إلى تطبيق التمييز السابق بشكل متزامن.
عندما تقوم بتثبيت color_coded، فإنك تحتاج إلى تجميعه يدويًا قبل أن تتمكن من استخدامه بنجاح. انظر التثبيت للحصول على التعليمات.
بافتراض أنك قمت بتحديث التثبيت العامل لـ color_coded، فسوف تحصل على هذا الخطأ إذا كان التحديث يتطلب منك إعادة ترجمة color_coded (أي كانت هناك تغييرات في واجهة برمجة التطبيقات الأصلية). لإعادة الترجمة، اتبع نفس الخطوات الدقيقة التي اتخذتها للترجمة في البداية.
في الوقت الحالي، على الأقل، لا يدعم color_coded برنامج neovim. ومع ذلك، هناك chromatica.vim، الذي يهدف إلى توفير تمييز مماثل، خصيصًا لـ neovim.
يحدث هذا في أنظمة تشغيل معينة تتطلب مسارات تضمين إضافية؛ الحل هو التأكد من وجود هذه المسارات في ملف .color_coded
الخاص بك، مسبوقًا بـ -isystem
. لمعرفة تلك المسارات قم بتنفيذ الأمر التالي:
echo | clang -v -E -x c++ -
راجع تعليق هذه المشكلة للحصول على التفاصيل. يحاول color_coded المساعدة من خلال افتراض بعض هذه العناصر، كما هو موضح في post_constants()
هنا.
من المحتمل أنك تستخدم luajit، الذي لا يتم تضمينه بشكل جيد في المكتبات المشتركة. إذا لم تكن متأكدًا، فتحقق مما إذا كان هذا سيؤدي إلى أي شيء:
vim --version | grep jit
مزيد من المعلومات هنا.
يمكنك استخدام هذا في .vimrc
الخاص بك :
" Disable color_coded in diff mode
if & diff
let g: color_coded_enabled = 0
endif
يمكنك تحديد DOWNLOAD_CLANG=0
لـ cmake
. اعتمادًا على نظامك الأساسي، قد تحتاج أيضًا إلى تحديد المسار إلى الملف الثنائي llvm-config باستخدام LLVM_CONFIG=
. يمكن أن يسمح لك هذا أيضًا باستخدام إصدارات مختلفة من Clang/LLVM.
مثال:
cmake . -DDOWNLOAD_CLANG=0
قد تواجه هذا على الأنظمة المستندة إلى دبيان. كان الحل هو تثبيت liblua-5.x-0-dbg
.
يحدث هذا بسبب خطأ في vim؛ يمكنك التغلب على هذه المشكلة باستخدام vim مع التصحيح 1691 على الأقل. راجع هذه المشكلة للحصول على التفاصيل.
لا تتردد في طرح مشكلة على Github أو مراسلتي عبر البريد الإلكتروني أو اللحاق بي على IRC: Freenode @ #color_coded
color_coded موجود تحت ترخيص MIT مفتوح المصدر.
راجع ملف LICENSE
أو http://opensource.org/licenses/MIT