2009-12-29 82 views
6

我有一個問題是非常類似於Getting Emacs fill-paragraph to play nice with javadoc-like comments,但我不知道如果我會在一年歲的線程得到很多答案。Emacs c-mode填充段與Doxygen評論

不管怎樣,我的C代碼,有一些Doxygen的評論,看起來像下面這樣:

/** 
* 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> 
*/ 

但,目前我得到以下內容:

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

做一些研究,它看起來像我需要設置parag在emacs中使用raph-start變量來識別「@參數」。我發現堆棧溢出的另一個問題(Getting Emacs fill-paragraph to play nice with javadoc-like comments),它有一個示例正則表達式。我修改了一下以適應我的要求,我在Search-> Regex Forward中測試了它,並正確地突出顯示了每個@param語句。

我用下面的正則表達式"^\s-*\*\s-*\(@param\).*$"

於是,我嘗試設置定正則表達式作爲我的段落開始(與添加的\'S爲elisp的語法要求)在我的.emacs文件。當我打開一個新的emacs窗口並嘗試了M-q時,發生了同樣的錯誤。有什麼我失蹤? M-q在C模式下使用方式不同嗎?我應該檢查我的.emacs文件是否有可能導致錯誤的地方?任何幫助,將不勝感激。

感謝, 瑞安

回答

3

關於你的問題, 「在C-模式?不同的使用M-Q」,describe-key(綁定到C-H K)是你的朋友。在用C文件訪問緩衝區時,輸入C-h k M-q,它會告訴你M-q綁定的是什麼函數。在這種情況下,它是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 2009-12-31 03:17:02

+0

當你在這個文件的緩衝區中時,'C-h v段落開始'返回什麼?如果不是上面的正則表達式,那麼你可能已經在全局設置它,它可能會被c模式覆蓋。如果是這種情況,那麼你可以在c模式鉤子中設置它。 – Neil 2010-01-08 14:46:54