ClangFormat هي واحدة من أفضل الأدوات لتنسيق رموز المصدر تلقائيًا في C و C ++ و Java و JavaScript و Objective-C و C #. هناك مكونات إضافية لبيئات التطوير الشائعة (IDEs) ، ولكن غالبًا ما تحتاج إلى تنسيق ملف أو جزء من ملف مصدر بسرعة دون تشغيل IDE مرهق ، وتجربة إعدادات التنسيق وإصدارات مختلفة من ClangFormat مع إمكانية التراجع عن التغييرات بسرعة. استخدام إصدار وحدة التحكم من ClangFormat لهذا الغرض غير مريح. أحد الحلول الممكنة هو استدعاء ClangFormat من محرر نصوص. يصف
الموقع الرسمي طرق التكامل مع Vim و Emacs وبعضها الآخر ، ولكن لا توجد معلومات حول التكامل مع Notepad ++. التالي هو تعليمة بسيطة لـ Notepad ++ (لنظام Windows).
المتطلبات الأولية
- تنسيق ملف مفتوح في Notepad ++ مع ClangFormat ؛
- تنسيق الجزء المحدد في الملف ؛
- تجاهل التغييرات ؛
- تبديل نمط (مجموعة من القواعد) التنسيق ؛
- التبديل إلى إصدار آخر من ClangFormat
- استخدم الأدوات القياسية كلما كان ذلك ممكنًا ، دون إعادة إنشاء ClangFormat ودون كتابة مكون إضافي لـ Notepad ++.
التثبيت والإعداد
1. إذا لم يكن Notepad ++ مثبتًا بالفعل ، فقم بتنزيله وتثبيته
https://notepad-plus-plus.org2. في Notepad ++ ، قم بتثبيت المكون الإضافي NppExec
يسمح لك NppExec بالاتصال بتطبيقات الطرف الثالث من Notepad ++ والتفاعل مع مكونات مكتبة Scintilla ، بناءً على كتابة Notepad ++.
Plugins –> Plugin Admin... –> NppExec –> Install
سيتم إعادة تشغيل برنامج Notepad ++ ، وبعد ذلك يظهر دليل
<Notepad++>/plugins/NppExec/
و
Plugins –> NppExec
عنصر قائمة
Plugins –> NppExec
3. قم بتنزيل ClangFormat القابل للتنفيذ
للقيام بذلك ، على الصفحة
https://llvm.org/builds/ ، نجد ملف التثبيت لنظام Windows وتنزيله ، على سبيل المثال
LLVM-XXX-rYYYYYY-win64.exe
. لا يمكنك تثبيت الحزمة بأكملها ، فقط قم باستخراج ملف
clang-format.exe
بواسطة
clang-format.exe
. يمكنك استخدام 7-zip: حذف ملحق
.exe
من
.exe
، وفتح الملف باستخدام 7-zip واستخراج
clang-format.exe
من
bin/
subdirectory.
clang-format.exe
في
<Notepad++>/plugins/NppExec/clang-format/
directory.
4. إضافة ملفات التكوين ل ClangFormat
يجب تسمية ملفات التكوين
.clang-format
أو
_clang-format
. أنها تحتوي على مجموعة من قواعد التنسيق (الأنماط) ، يتم وصف التنسيق الخاص بها في دليل
خيارات نمط ClangFormat .
على سبيل المثال ، نستخدم ملفات من مشروعات
Linux Kernel و
Qt .
يتم
.clang-format
ملفات
.clang-format
تنزيلها من GitHub في الدلائل المناسبة:
<Notepad++>/plugins/NppExec/clang-format/LINUX_KERNEL/
<Notepad++>/plugins/NppExec/clang-format/QT/
5. إنشاء برنامج نصي ل NppExec
افتح النافذة لتحرير وتشغيل البرامج النصية NppExec
Plugins –> NppExec –> Execute...
أو اضغط
F6
. انسخ نص البرنامج النصي والصقه أدناه في النافذة واحفظ البرنامج النصي المسمى
clang-format
مع زر
Save...
البرنامج النصي NppExec // Hide console NPP_CONSOLE 0 //------------------------------------------------------------------------------ // Uncomment a line to select a style //set style = LINUX_KERNEL set style = QT //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ set clangformatexe = $(CWD)\plugins\NppExec\clang-format\clang-format.exe set clangformatcfgdir = $(CWD)\plugins\NppExec\clang-format set tmpdir = $(SYS.TEMP) set clangformatcfgfile = $(clangformatcfgdir)\$(style)\.clang-format set srcfiletmp = $(tmpdir)\~src.tmp //------------------------------------------------------------------------------ cmd.exe /c if exist "$(clangformatexe)" (exit 0) else (exit 1) if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR: "$(clangformatexe)" not found exit endif cmd.exe /c if exist "$(clangformatcfgfile)" (exit 0) else (exit 1) if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR: "$(clangformatcfgfile)" not found exit endif // Copy $(clangformatcfgfile) to $(tmpdir)\.clang-format if their temestamps are different cmd.exe /v /c " for %i in ("$(clangformatcfgfile)") do set date1="%~ti" && for %i in ("$(tmpdir)\.clang-format") do set date2="%~ti" && if not "!date1!"=="!date2!" ( echo !date1! != !date2! && echo COPYING $(clangformatcfgfile) to $(tmpdir)\ && copy "$(clangformatcfgfile)" "$(tmpdir)\" /Y )" if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR copying "$(clangformatcfgfile)" to "$(tmpdir)" exit endif // Get selected text length sci_sendmsg SCI_GETSELTEXT // If nothing is selected - select the current line if $(MSG_RESULT) == 1 then sci_sendmsg SCI_VCHOMEWRAP sci_sendmsg SCI_LINEENDWRAPEXTEND endif // Save selected text to $(srcfiletmp) sel_saveto "$(srcfiletmp)" :a cmd.exe /c if exist "$(srcfiletmp)" (exit 0) else (exit 1) if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR: "$(srcfiletmp)" not found exit endif // Run ClangFormat $(clangformatexe) -i -style=file "$(srcfiletmp)" if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR running "$(clangformatexe)" exit endif // Replace selected text with $(srcfiletmp) sel_loadfrom "$(srcfiletmp)" // Delete $(srcfiletmp) file cmd.exe /c del "$(srcfiletmp)"
بعد بدء البرنامج النصي ، استنادًا إلى نمط التنسيق المحدد في متغير
style
، يحدد ملف
.clang-format
المطلوب ،
.clang-format
تاريخ تغييره ، وإذا لزم الأمر ،
.clang-format
إلى دليل مؤقت. هناك ، يتم نسخ جزء التعليمات البرمجية المصدر المحدد إلى الملف المؤقت ، وبعد ذلك
clang-format.exe
. يتم نسخ الجزء المنسق مرة أخرى إلى إطار Notepad ++. ثم يتم حذف الملف المؤقت.
في ClangFormat لا توجد طريقة لتحديد المسار إلى ملف التكوين
.clang-format
. سيبحث ClangFormat عن ذلك في دليل الملف المنسق ، وإذا لم يعثر عليه ، فسيبحث في الأدلة الأصل. بعد
.clang-format
البرنامج النصي
.clang-format
ملف
.clang-format
في الدليل المؤقت حتى لا يتم نسخه في كل مرة يتم فيها بدء التنسيق.
في جميع مراحل البرنامج النصي ، يتم فحص الأخطاء ، وعند حدوثها ، يتم فتح نافذة وحدة التحكم NppExec ، حيث يتم عرض رسالة.
6. في Notepad ++ ، قم بإضافة عنصر قائمة جديد لتشغيل البرنامج النصي
افتح
Plugins –> NppExec –> Advanced Options...
، في القائمة المنسدلة
Associated script
، حدد اسم البرنامج النصي
clang-format
وانقر على زر "
Add/Modify
.
نقوم بإعادة تشغيل برنامج Notepad ++ ، وبعد ذلك
Plugins –> NppExec –> clang-format
عنصر القائمة
Plugins –> NppExec –> clang-format
.

7. في Notepad ++ ، قم بتكوين اختصار لوحة المفاتيح لتشغيل البرنامج النصي
سوف نستخدم المجموعة
Ctrl + I
عن طريق القياس مع QtCreator. افتح
Settings –> Shortcut Mapper
.
بشكل افتراضي ، تكون المجموعة
Ctrl + I
مشغولة ، لذلك تحتاج إلى تحريرها باستخدام الزر "
Clear
في علامة تبويب "
Main Menu
(السطر 38
Split Lines
في الإصدار الحالي من Notepad ++). بعد ذلك ، في علامة تبويب
Plugin commands
، قم بتعيين المجموعة
Ctrl + I
إلى البرنامج النصي
clang-format
.
انتهى ، يمكننا استخدامه!
تعليمات للاستخدام
افتح الملف المصدر في Notepad ++ ، وحدد الجزء المطلوب أو كل النص واضغط على
Ctrl + I
إذا لم يتم تحديد أي شيء ، فسيتم تنسيق السطر الحالي.

للتراجع عن التغييرات ، استخدم أدوات المحرر القياسية (
Ctrl + Z
).
لتغيير قواعد التنسيق ، قم بتحرير ملفات تكوين
.clang-format
في دليل
<Notepad++>/plugins/NppExec/clang-format/
directory
إذا كنت بحاجة إلى استخدام إصدار آخر من ClangFormat ، فقم بتغيير المسار إلى الملف القابل للتنفيذ في البرنامج النصي
set clangformat = "\path\to\clang-format.exe"
لتحديد نمط تنسيق مختلف ، اضغط
F6
وفي نص البرنامج النصي
clang-format
حدد النمط المرغوب بإلغاء أحد الخطوط
set style = STYLE_NAME
.
جميع الملفات الضرورية موجودة في
الأرشيف .
تنسيق جيد!