2009-12-29 12 views
6

मेरे पास एक प्रश्न है जो Getting Emacs fill-paragraph to play nice with javadoc-like comments के समान है, लेकिन मुझे यकीन नहीं था कि मुझे एक वर्ष पुराने धागे में कई जवाब मिलेंगे।डोक्सजिन टिप्पणियों के साथ Emacs c-mode fill-paragraph

/** 
* Description 
* 
* @param[in,out] var1 : <Long description that needs to be wrapped.> 
* @param[in,out] var2 : <Description2> 
*/ 

अब, जब मैं Emacs में Mq उपयोग करते हैं, मैं निम्नलिखित हैं::

/** 
* Description 
* 
* @param[in,out] var1 : <Long description that needs 
*      to be wrapped.> 
* @param[in,out] var2 : <Description2> 
*/ 

लेकिन

किसी भी तरह, मैं सी कोड कुछ Doxygen टिप्पणी है कि को निम्न रूप में है , वर्तमान में मुझे निम्न मिलता है:

/** 
* Description 
* 
* @param[in,out] var1 : <Long description that needs 
* to be wrapped.> @param[in,out] var2 : <Description2> 
*/ 

कुछ शोध करना, ऐसा लगता है कि मुझे पराग सेट करने की आवश्यकता है Emacs में रैप-स्टार्ट वैरिएबल "@param" को पहचानने के लिए। मुझे स्टैक ओवरफ़्लो (Getting Emacs fill-paragraph to play nice with javadoc-like comments) पर एक और प्रश्न मिला, जिसमें नमूना नियमित अभिव्यक्ति थी। मैंने अपनी आवश्यकताओं को पूरा करने के लिए इसे थोड़ा सा संशोधित किया, और मैंने इसे खोज-> रेगेक्स फॉरवर्ड के अंदर परीक्षण किया, और यह प्रत्येक @param वाक्य को सही ढंग से हाइलाइट किया।

मैं निम्नलिखित नियमित अभिव्यक्ति का इस्तेमाल किया "^\s-*\*\s-*\(@param\).*$"

तो, मैं अपने पैराग्राफ से शुरू के रूप में दिया रेगुलर एक्सप्रेशन मेरे .emacs में फ़ाइल (जोड़ा \ के elisp वाक्य रचना के लिए आवश्यक के साथ) की स्थापना की कोशिश की। जब मैंने एक नई emacs विंडो खोली और एम-क्यू की कोशिश की, तो वही त्रुटि हो रही थी। क्या मैं कुछ छोड़ रहा हूं? क्या एम-क्यू सी-मोड में अलग-अलग इस्तेमाल होता है? क्या मुझे अपनी .emacs फ़ाइल को किसी ऐसी चीज़ के लिए जांचना चाहिए जो यहां त्रुटि उत्पन्न कर रहा हो? किसी भी सहायता की सराहना की जाएगी।

धन्यवाद, रयान

उत्तर

3

अपने प्रश्न के बारे में,, describe-key (सी-एच कश्मीर के लिए बाध्य) अपने दोस्त है "एम क्यू सी-मोड? में अलग तरह से इस्तेमाल किया है"। सी फ़ाइल के साथ बफर पर जाकर, सी-एच के एम-क्यू टाइप करें और यह आपको बताएगा कि एम-क्यू किस कार्य से जुड़ा हुआ है। इस मामले में, यह c-fill-paragraph है, जो अंततः paragraph-start का उपयोग करता है, जो उस अन्य प्रश्न में आपको मिलता है।

मैंने पाया कि यह नियमित रूप से paragraph-start के रूप में इस्तेमाल अभिव्यक्ति रेखाओं को रैप और एक नया पैरा के रूप में प्रत्येक @param व्यवहार करेगा:

"^[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*$\\|@param\\)\\|^\f"

हालांकि, यह wrappedlines इंडेंट नहीं होगा के रूप में आप चाहते हैं। यह आपका उदाहरण इस तरह दिखेगा:

/** 
* Description 
* 
* @param[in,out] var1 : <Long description that needs 
* to be wrapped.> 
* @param[in,out] var2 : <Description2> 
*/ 

मुझे आशा है कि यह अभी भी आपके लिए बेहतर काम करेगा। यदि आप इंडेंटिंग को समझते हैं तो मुझे बताएं।

+0

मैंने अपनी .emacs फ़ाइल में वर्णित नियमित अभिव्यक्ति को जोड़ने का प्रयास किया, लेकिन मुझे अभी भी एक ही समस्या है जो दूसरे @param को एक नया पैराग्राफ के रूप में पहचाना नहीं जा रहा है। मुझे एहसास है कि अनुच्छेद-राज्य को ठीक करने से मेरा इंडेंटेशन समस्या हल नहीं होगी, लेकिन यह शुरू करने के लिए एक बहुत ही उपयोगी जगह होगी)। प्रारंभिक पोस्ट लिखने के बाद, मुझे एहसास हुआ कि मुझे यह ध्यान रखना चाहिए था कि यह वास्तव में दो भाग का सवाल था: 1) @param को एक नए पैराग्राफ के रूप में पहचानें। 2) विवरणों को उचित रूप से इंडेंट करें। – DuneBug

+0

जब आप इस फ़ाइल के साथ बफर में होते हैं, तो 'सी-एच वी पैराग्राफ-स्टार्ट' वापस क्या होता है? यदि उपरोक्त regexp नहीं है, तो आप इसे वैश्विक रूप से सेट कर सकते हैं और यह सी-मोड द्वारा अधिलेखित हो सकता है। यदि ऐसा है, तो आप इसे सी-मोड हुक में सेट कर सकते हैं। – Neil

संबंधित मुद्दे