我通常使用4個空格來縮進C程序,但爲了與某些開源項目保持一致,有時我必須更改爲2-white-space縮進。爲不同的項目設置不同的c-off-off
目前我縮進風格是在我的.emacs分配與
(setq c-basic-offset 4)
文件,當我想在這些2空白縮進項目。我必須關閉我的Emacs,修改這個值,然後重新開始。有沒有更簡單的方法來做到這一點?
非常感謝。
PS。 每次打開源文件時設置c-basic-offset變量的工作量太大,可以根據工作目錄選擇不同的值嗎?
我通常使用4個空格來縮進C程序,但爲了與某些開源項目保持一致,有時我必須更改爲2-white-space縮進。爲不同的項目設置不同的c-off-off
目前我縮進風格是在我的.emacs分配與
(setq c-basic-offset 4)
文件,當我想在這些2空白縮進項目。我必須關閉我的Emacs,修改這個值,然後重新開始。有沒有更簡單的方法來做到這一點?
非常感謝。
PS。 每次打開源文件時設置c-basic-offset變量的工作量太大,可以根據工作目錄選擇不同的值嗎?
創建要自定義命名.dir-locals.el
目錄中的文件,編輯,使其包含:
((c-mode . ((c-basic-offset . 4))))
注:這是在Emacs 23.1新功能。
這利用了Per-Directory Local Variables。從鏈接中的文檔:
.dir-locals.el
文件應該 包含一個特殊構造的列表。 此列表將Emacs模式名稱 (符號)映射爲alists;每個alist 指定在相應模式打開時使用 的變量值。 特殊模式名稱'nil'意思是 其alist適用於任何模式。 而不是模式名稱,您可以 指定一個字符串,該字符串是項目的 目錄的子目錄 的名稱;那麼相應的 alist適用於該子目錄中的所有文件。這裏有一個
.dir-locals.el
文件的例子:((nil . ((indent-tabs-mode . t) (tab-width . 4) (fill-column . 80))) (c-mode . ((c-file-style . "BSD"))) (java-mode . ((c-file-style . "BSD"))) ("src/imported" . ((nil . ((change-log-default-name . "ChangeLog.local"))))))
另一種方法是有一個樣式選擇ALIST就像我在我的.emacs:http://github.com/stsquad/my-emacs-stuff/blob/master/my-c-mode.el#L103
你也可以使用緩衝本地源代碼中的變量來設置這些東西,但這通常取決於您在開源代碼中讓他們感到高興的項目。
+1爲鏈接 – 2009-12-01 06:24:13
這真的很有幫助,謝謝。 – ZelluX 2009-12-01 07:03:42