Emacs-要求最终换行符局部值覆盖全局值

Emacs-要求最终换行符局部值覆盖全局值,emacs,emacs24,emacs-prelude,Emacs,Emacs24,Emacs Prelude,我想将每个缓冲区的require final newline设置为nil。 在我的配置文件中,我有: (setq require-final-newline nil) (setq-default require-final-newline nil) 它似乎正确设置了全局值。但是,在我打开的每个缓冲区中,本地值仍然是t。使用描述变量,我得到: require-final-newline is a variable defined in `files.el'. Its value is t Ori

我想将每个缓冲区的
require final newline
设置为
nil
。 在我的配置文件中,我有:

(setq require-final-newline nil)
(setq-default require-final-newline nil)
它似乎正确设置了全局值。但是,在我打开的每个缓冲区中,本地值仍然是
t
。使用
描述变量
,我得到:

require-final-newline is a variable defined in `files.el'.
Its value is t
Original value was nil
Local in buffer myfile.js; global value is nil
files.el
位于
/usr/local/ceral/emacs/24.5/share/emacs/24.5/lisp/
中,因此我想我不应该修改它。
如何将此本地值设置为
nil

首先,有一些模式会强制设置
需要最终换行符
,因为这些类型的文件需要最终换行符。然而,我不相信
js模式是其中之一

您可能有一些导致这种情况的自定义配置,可能是通过
js mode hook
prog mode hook
设置的


使用
emacs-Q
确认这不是默认行为,然后您可以开始追踪罪犯(我只需要
M-x rgrep
for
require final newline
在您的elisp文件中)。

在格雷普之后,罪犯可能是
editorconfig
(它没有拾取我的配置文件,但似乎设置了默认值)。你所说的
emacs-Q
是什么意思?命令行?如果是,我在osx上,通过命令行启动emacs似乎不是现成的。是的,这意味着在命令行上运行
emacs-Q
。可能
emacs
可执行文件的目录不在shell的
路径中ment变量?如果您知道它所在的位置,您可以运行
/path/to/emacs-Q
以获得适当的路径。(但是,如果您认为您已经找到了配置的罪魁祸首,您可以通过删除/注释有问题的行并正常启动emacs来测试它。)是的,它可能是
editorconfig
,因此我接受了您的答案。我将不得不看看是否可以覆盖它的行为,但如果我找不到它,这将是另一个问题。CLI中的emacs也是如此。谢谢!⁺1.FTR:事实证明,c模式和c++模式也需要在结尾处换行,奇怪的是,这似乎是标准所要求的。另请参阅。