ClangFormat और नोटपैड ++ एकीकरण

ClangFormat सी, सी ++, जावा, जावास्क्रिप्ट, ऑब्जेक्टिव-सी, सी # में स्वचालित रूप से सोर्स कोड को फॉर्मेट करने के लिए सबसे अच्छा टूल है। लोकप्रिय विकास वातावरण (आईडीई) के लिए प्लगइन्स हैं, लेकिन अक्सर आपको एक बोझिल आईडीई चलाने के बिना किसी फ़ाइल या स्रोत फ़ाइल के भाग को जल्दी से प्रारूपित करने की आवश्यकता होती है, प्रारूपण विकल्पों के साथ प्रयोग और क्लोफार्मेट के विभिन्न संस्करणों के साथ जल्दी से परिवर्तन करने की क्षमता के साथ। इस उद्देश्य के लिए ClangFormat के कंसोल संस्करण का उपयोग करना असुविधाजनक है। एक संभावित समाधान एक पाठ संपादक से ClangFormat को कॉल करना है। आधिकारिक साइट बताती है कि विम, एमएसीएस और कुछ अन्य लोगों के साथ कैसे एकीकरण किया जाए, लेकिन नोटपैड ++ के साथ एकीकरण पर कोई जानकारी नहीं है। नोटपैड ++ (विंडोज के लिए) के लिए एक सरल निर्देश निम्नलिखित है।

प्रारंभिक आवश्यकताएं


  • ClangFormat के साथ Notepad ++ में खोली गई फ़ाइल को स्वरूपित करना;
  • फ़ाइल में चयनित टुकड़े को स्वरूपित करना;
  • परिवर्तन त्यागें;
  • स्विचिंग स्टाइल (नियमों का सेट) स्वरूपण;
  • ClangFormat के दूसरे संस्करण में स्विच करना
  • ClangFormat के पुनर्निर्माण के बिना और नोटपैड ++ के लिए एक नया प्लगइन लिखने के बिना, जब भी संभव हो, मानक उपकरणों का उपयोग करें।

स्थापना और सेटअप


1. यदि नोटपैड ++ पहले से इंस्टॉल नहीं है, तो इसे डाउनलोड और इंस्टॉल करें


https://notepad-plus-plus.org

2. नोटपैड ++ में NppExec प्लगइन इंस्टॉल करें


NppExec आपको नोटपैड ++ से तृतीय-पक्ष एप्लिकेशन को कॉल करने और सिंटिला लाइब्रेरी के घटकों के साथ बातचीत करने की अनुमति देता है, जिसके आधार पर नोटपैड ++ लिखा जाता है।

Plugins –> Plugin Admin... –> NppExec –> Install
नोटपैड ++ पुनः आरंभ होगा, जिसके बाद <Notepad++>/plugins/NppExec/ और Plugins –> NppExec मेनू आइटम Plugins –> NppExec

3. ClangFormat निष्पादन योग्य डाउनलोड करें


ऐसा करने के लिए, पृष्ठ https://llvm.org/builds/ पर हम विंडोज के लिए इंस्टॉलेशन फ़ाइल LLVM-XXX-rYYYYYY-win64.exe हैं और डाउनलोड करते हैं, उदाहरण के लिए LLVM-XXX-rYYYYYY-win64.exe । आप पूरे पैकेज को स्थापित नहीं कर सकते, केवल clang-format.exe द्वारा clang-format.execlang-format.exe फ़ाइल को निकाल सकते हैं। आप 7-ज़िप का उपयोग कर सकते हैं: .exe से .exe एक्सटेंशन हटाएं, 7-ज़िप के साथ फ़ाइल खोलें और bin/ उपनिर्देशिका से clang-format.exe निकालें। हम <Notepad++>/plugins/NppExec/clang-format/ directory में clang-format.exe <Notepad++>/plugins/NppExec/clang-format/

4. ClangFormat के लिए कॉन्फ़िगरेशन फ़ाइलें जोड़ें


विन्यास फाइल का नाम .clang-format या _clang-format होना चाहिए। उनमें प्रारूपण नियमों (शैलियों) का एक सेट होता है, जिसका प्रारूप ClangFormat शैली विकल्प गाइड में वर्णित है।

उदाहरण के लिए, हम लिनक्स कर्नेल और क्यूटी प्रोजेक्ट्स की फ़ाइलों का उपयोग करते हैं।

GitHub से डाउनलोड .clang-format फाइलें उपयुक्त निर्देशिकाओं में रखी गई हैं:
<Notepad++>/plugins/NppExec/clang-format/LINUX_KERNEL/
<Notepad++>/plugins/NppExec/clang-format/QT/


5. NppExec के लिए एक स्क्रिप्ट बनाएँ


स्क्रिप्ट को संपादित करने और चलाने के लिए विंडो खोलें NppExec Plugins –> NppExec –> Execute... या F6 दबाएँ। विंडो में नीचे दिए गए स्क्रिप्ट टेक्स्ट को कॉपी और पेस्ट करें और Save... बटन के साथ 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.exe । स्वरूपित टुकड़ा को वापस Notepad ++ विंडो में कॉपी किया जाता है। फिर अस्थायी फ़ाइल हटा दी जाती है।

ClangFormat में .clang- .clang-format कॉन्फ़िगरेशन फ़ाइल के लिए पथ निर्दिष्ट करने का कोई तरीका नहीं है। ClangFormat स्वरूपित फ़ाइल की निर्देशिका में इसके लिए खोज करेगा और यदि यह नहीं मिलता है, तो यह मूल निर्देशिका में खोज करने के लिए जाएगा। स्क्रिप्ट के .clang-format बाद .clang-format फ़ाइल अस्थायी निर्देशिका में रहेगी ताकि इसे कॉपी न किया जा सके, जबकि हर बार स्वरूपण प्रारंभ हो।

स्क्रिप्ट के सभी चरणों में, त्रुटियों की जाँच की जाती है, और जब वे होती हैं, तो NppExec कंसोल विंडो खुलती है, जिसमें एक संदेश प्रदर्शित होता है।

6. नोटपैड ++ में, स्क्रिप्ट को चलाने के लिए एक नया मेनू आइटम जोड़ें


ओपन Plugins –> NppExec –> Advanced Options... , Associated script ड्रॉप-डाउन सूची में, clang-format स्क्रिप्ट नाम का चयन करें और Add/Modify करें बटन पर क्लिक करें।

हम नोटपैड ++ को पुनरारंभ करते हैं, जिसके बाद मेनू आइटम Plugins –> NppExec –> clang-format दिखाई देगा।

छवि

7. नोटपैड ++ में, स्क्रिप्ट चलाने के लिए कीबोर्ड शॉर्टकट कॉन्फ़िगर करें


हम QtCreator के साथ सादृश्य द्वारा संयोजन Ctrl + I उपयोग करेंगे। ओपन Settings –> Shortcut Mapper

डिफ़ॉल्ट रूप से, संयोजन Ctrl + I व्यस्त है, इसलिए आपको इसे Main Menu टैब में Clear बटन (नोटपैड ++ के वर्तमान संस्करण में लाइन 38 Split Lines ) के साथ जारी करने की आवश्यकता है। उसके बाद, Plugin commands टैब में, clang-format स्क्रिप्ट के लिए संयोजन Ctrl + I असाइन करें।

हो गया, हम इसका उपयोग कर सकते हैं!

उपयोग के लिए निर्देश


नोटपैड ++ में स्रोत फ़ाइल खोलें, वांछित टुकड़ा या सभी पाठ का चयन करें और Ctrl + I यदि कुछ नहीं चुना गया है, तो वर्तमान लाइन को स्वरूपित किया जाएगा।

छवि

परिवर्तनों को पूर्ववत करने के लिए, मानक संपादक टूल ( Ctrl + Z ) का उपयोग करें।
स्वरूपण नियमों को बदलने के लिए <Notepad++>/plugins/NppExec/clang-format/ निर्देशिका में .clang-format कॉन्फ़िगरेशन फ़ाइलों को संपादित करें।
यदि आपको ClangFormat के किसी अन्य संस्करण का उपयोग करने की आवश्यकता है, तो स्क्रिप्ट में निष्पादन योग्य फ़ाइल में पथ बदलें
set clangformat = "\path\to\clang-format.exe"
भिन्न स्वरूपण शैली का चयन करने के लिए, F6 और clang-format स्क्रिप्ट के पाठ में से किसी एक पंक्ति को असम्बद्ध करके वांछित शैली का चयन करें।
set style = STYLE_NAME

सभी आवश्यक फाइलें आर्काइव में हैं

अच्छा स्वरूपण!

Source: https://habr.com/ru/post/hi457972/


All Articles