2012-11-26 42 views
12

我目前正在使用Mac,並且試圖設置Emacs默認情況下不在文件末尾添加換行符,但幾乎所有我搜索的內容都只是說將(setq require-final-newline nil)添加到主目錄中的.emacs文件中...這不起作用。我應該在旁邊看什麼改變?Emacs即使在更改後自動添加換行符.emacs

這就是.emacs文件看起來像現在

(custom-set-variables 
    ;; custom-set-variables was added by Custom. 
    ;; If you edit it by hand, you could mess it up, so be careful. 
    ;; Your init file should contain only one such instance. 
    ;; If there is more than one, they won't work right. 
'(gud-gdb-command-name "gdb --annotate=1") 
'(large-file-warning-threshold nil) 
'(require-final-newline nil)) 
(custom-set-faces 
    ;; custom-set-faces was added by Custom. 
    ;; If you edit it by hand, you could mess it up, so be careful. 
    ;; Your init file should contain only one such instance. 
    ;; If there is more than one, they won't work right. 
) 
+1

更緊迫的問題是:「爲什麼你真的會改變這個理智而有用的默認值,除了在腳下自己射擊?」 – pmr

+0

因爲我正在編輯一個程序的輸入文件,該文件需要將文件結尾字符視爲文件中的最後一個東西,但emacs在該字符後面添加換行符。 – Jayson

+1

展示此問題的文件的主要模式是什麼? –

回答

15

你試過:

(setq mode-require-final-newline nil) 

有可能該文件的主要方式是使用這個變量的值,而不是...

如何找出哪些模式使用此模式而不是您嘗試使用的變量並不明顯,但推測該模式的作者知道的更好...

因此,您可能需要更改該文件的主要模式,這可以通過回答以下SQ問題來完成:How to tell emacs to open .h file in C++ mode?(顯然根據您的需要定製答案)。

+0

我剛試過,這解決了我的問題。我不確定「主要模式」是什麼,所以我不確定我可以給你一個連貫的答案(還) – Jayson

+1

要找出特定文件(緩衝區)的主模式,請輸入「Ch m」 (或'Mx describe-mode')並且將顯示一個新的緩衝區,它描述當前緩衝區的模式(包括主要模式)。 –

+1

@Jayson「主要模式」是語法突出顯示,鍵綁定以及與當前緩衝區關聯的其他行爲的集合。它應該在你的模式列表中括在括號內。你應該看到類似於'U:---文件名全部L10(主要次要)'這個主要模式(你可能只有一個主要模式,或者你可能有一個主要模式和一個或多個未成年人模式)。 –