终端中的 Emacs 打开文件无法正确加载配置。但是在 emacs 中打开文件会正确加载配置
Emacs openfile in terminal don't load configuration correctly. But open file in emacs do load configuration correctly
终端中的 Emacs 打开文件无法正确加载配置。但是在 emacs 中打开文件会正确加载配置。
我已经为 cpp 尝试了几种 emacs 配置:
(eval-after-load "cc-vars" '(lambda() (c-set-style "linux")))
另一个
(add-hook 'c-mode-hook '(lambda() (c-set-style "linux")))
另一个
(eval-after-load "cc-vars" '(setq c-default-style "linux")))
如果我键入 emacs filename
它们将无法加载。似乎 emacs 总是加载默认的 gnu 样式。
输入后M-x c-mode
可以正确载入。或者我在终端中打开 emacs
然后 C-x C-f
加载文件,这些配置也会被加载。
有什么原因吗?
我也试过
(c-set-style "linux")
直接在配置中。
他们与 emacs filename
一起工作。但是当我打开非 cpp 文件时,会出现一个错误,提示无法在该文件上应用 c-set-style
。
When you create a new buffer, its style will be set from c-default-style.
You can also set the variable c-default-style to specify the default style for various major modes
来自 c-set-style
函数的文档:
Set the current buffer to use the style STYLENAME.
这意味着对 c-set-style
的任何调用都必须确保当前缓冲区是您要为其设置样式的缓冲区;在 init 文件的顶层放置这样的调用绝对不是一个好主意。
最简单的解决方法就是将 (setq c-default-style "linux")
放在顶层,如果您确实需要,然后将其包裹在 eval-after-load
中。该变量就是为此而设计的,如果需要,应保留挂钩以更精确地控制当前文件的样式(如 c-default-style
文档所建议)。
对我来说,(eval-after-load "cc-vars" '(setq c-default-style "linux"))
似乎工作正常:如果我打开 CC-mode
覆盖的任何文件,将应用 Linux 样式。请注意,c-mode
和 CC modes
是不同的东西,存在 c-mode-hook
、c++-mode-hook
、c-mode-common-hook
,它们都是不同的,并且会 运行在不同的时间。
终端中的 Emacs 打开文件无法正确加载配置。但是在 emacs 中打开文件会正确加载配置。
我已经为 cpp 尝试了几种 emacs 配置:
(eval-after-load "cc-vars" '(lambda() (c-set-style "linux")))
另一个
(add-hook 'c-mode-hook '(lambda() (c-set-style "linux")))
另一个
(eval-after-load "cc-vars" '(setq c-default-style "linux")))
如果我键入 emacs filename
它们将无法加载。似乎 emacs 总是加载默认的 gnu 样式。
输入后M-x c-mode
可以正确载入。或者我在终端中打开 emacs
然后 C-x C-f
加载文件,这些配置也会被加载。
有什么原因吗?
我也试过
(c-set-style "linux")
直接在配置中。
他们与 emacs filename
一起工作。但是当我打开非 cpp 文件时,会出现一个错误,提示无法在该文件上应用 c-set-style
。
When you create a new buffer, its style will be set from c-default-style.
You can also set the variable c-default-style to specify the default style for various major modes
来自 c-set-style
函数的文档:
Set the current buffer to use the style STYLENAME.
这意味着对 c-set-style
的任何调用都必须确保当前缓冲区是您要为其设置样式的缓冲区;在 init 文件的顶层放置这样的调用绝对不是一个好主意。
最简单的解决方法就是将 (setq c-default-style "linux")
放在顶层,如果您确实需要,然后将其包裹在 eval-after-load
中。该变量就是为此而设计的,如果需要,应保留挂钩以更精确地控制当前文件的样式(如 c-default-style
文档所建议)。
对我来说,(eval-after-load "cc-vars" '(setq c-default-style "linux"))
似乎工作正常:如果我打开 CC-mode
覆盖的任何文件,将应用 Linux 样式。请注意,c-mode
和 CC modes
是不同的东西,存在 c-mode-hook
、c++-mode-hook
、c-mode-common-hook
,它们都是不同的,并且会 运行在不同的时间。