2014-12-07 85 views
0

我目前正在與Java團隊一起工作。無論何時我們共享文件,他們的文件總是在我的電腦上奇怪地縮進,我必須通過它們全部選項卡或C-x h C-M-。如何在打開文件時在emacs中自動縮進?

有沒有辦法讓emacs自動格式化(自動選中整個文件),只要我打開文件,所以我不必每次都輸入這個宏?

非常感謝!在進入Java的主要模式時要執行

(add-hook 'java-mode-hook (lambda() (indent-region (point-min) (point-max)))) 

這將註冊功能,這功能是一個lambda表達式縮進(point-min)(point-max)之間的區域:

+2

如果你在一個團隊工作,我假設你正在使用版本控制?在這種情況下,您正在討論在整個文件中提交修改,以便從縮進方法更改爲縮進方法。大概他們會改變它。那太糟糕了 - 差異代碼的變化會被一系列的空白變化所掩蓋。做一個關於格式化的團隊決定,讓每個人都配置他們的編輯來遵守這個規則。 (除此之外,你確定你不只是有一個不同的標籤寬度給他們嗎?也許這就是你需要配置的全部。) – phils 2014-12-08 01:36:17

+0

也許這會幫助:http://editorconfig.org/(因爲它是java,另請參閱https://github.com/editorconfig/editorconfig/issues/86,它表示已完成的netbeans插件,以及eclipse插件的開頭)。 – phils 2014-12-08 01:38:46

+0

我認爲這可能只是一個格式問題。標籤寬度似乎不是它。我認爲他們看不到問題,因爲我的決議相當高,而且我的終端比默認的更加放大。 – CodeSammich 2014-12-09 03:21:18

回答

2

把這個在你的〜/的.emacs - 即整個緩衝區。

它會在下次啓動emacs時加載。要將其放入正在運行的會話中,請將光標放在後面並按C-x C-e。

+0

非常感謝!這正是我正在尋找的^^ 我見過的最短和最有效的解決方案。 – CodeSammich 2014-12-07 22:57:05

1

在emacs和非emacs編碼器一起工作時,我遇到過類似的問題。由於emacs的默認選項卡縮進被設置爲8列而不是4,因此我看到「怪異」。將標籤寬度設置爲4應該可以解決此問題。你可以輸入M-x空白模式查看你的空白字符,看看是否是這個問題。如果是這樣,你可以添加以下到您的init文件來解決它:

(setq-default tab-width 4) ;; emacs version 23.2+ 
(setq default-tab-width 4) ;; emacs versions prior to 23.2 

當我需要重新排版文件,我稱之爲從的Mx我的初始化文件中的以下功能IWB

(defun iwb() 
    "indent whole buffer" 
    (interactive) 
    (delete-trailing-whitespace) 
    (indent-region (point-min) (point-max)) 
    (untabify (point-min) (point-max))) 

可以爲此功能添加掛鉤,類似於Wintermute's響應。

(add-hook 'java-mode-hook #'iwb) 
+0

謝謝。我想我已經有一個標籤空間。 – CodeSammich 2014-12-13 13:56:56

相關問題