2011-03-16 65 views
0

在我的公司的編碼標準已經改變,使得函數聲明Emacs的C++ - 模式縮進的函數聲明

void foo(int a, float* b); 

現在必須寫成:

void 
foo(int a, 
    float* b); 

其中的兩種類型變量和變量的名稱必須垂直對齊。

我使用emacs 23.2與c + +模式。

此模式排隊了每個變量類型,但不會讓我縮進變量名稱匹配。

有沒有建立在允許這個設置?

如果沒有,我需要關閉什麼才能讓我自由縮進我的變量名?

+0

http://stackoverflow.com/questions/970759/how-to-align-arguments-to-functions-in-emacs – Anycorn 2011-03-16 18:18:30

+0

你是什麼意思的「不會讓我」?如果你在變量名之前插入空格,會發生什麼?他們消失了嗎? – dfan 2011-03-16 18:30:30

+0

@dfan我可以插入空格來使名稱排隊,但我寧願只是去名稱和打標籤,直到它與上面的名稱排隊 – chollida 2011-03-16 18:38:53

回答

1

也許你想要的是M-itab-to-tab-stop)。

這會將光標移動到下一個製表位。製表位可以由變量tab-stop-list配置,該變量默認爲每八列。請注意,這將根據本地變量indent-tabs-mode插入空格或實際製表符字符。 (小心不要用tab-width混淆,從而影響TAB字符是如何實際顯示。)

這不總是能在儘可能低的列帕拉姆的名稱,例如,你可能最終與

void 
foo(int  a, 
    float* b); // two spaces there 

但是請注意,這是更容易維護的 - 當添加一個更長的類型名稱的新參數時,您不一定要修復其餘的參數,只需要跨越選項卡列。

+0

感謝這個解決方案爲我工作。 – chollida 2011-03-16 20:38:00

1

選擇帶有參數的線,然後M-X對準

+0

這不起作用,它只對齊變量類型而不是變量名稱。感謝您的嘗試,雖然:) – chollida 2011-03-16 18:51:57

+0

@chollida:它在這裏與Emacs 23.2。也許這是你的配置中的東西,嘗試啓動Emacs的-Q – scottfrazer 2011-03-16 20:01:10

+0

感謝您的提示。當我運行M-x對齊時,它只對齊每行而不是每行中的每個單詞。感謝您的努力:)我很感激。 – chollida 2011-03-16 20:37:40