gpt4 book ai didi

Emacs 缩进级别全局覆盖

转载 作者:行者123 更新时间:2023-12-04 22:24:25 26 4
gpt4 key购买 nike

我想将缩进模式设置为仅制表符,任何模式都有 4 个字符宽度。这似乎是一件微不足道的事情,但我没有成功。每种模式似乎都有自己的变量和选项。我试过为 Perl 和 R 做这个,但没有成功。
没有奏效的事情:

(setq-default tab-width 4)
(setq standard-indent 4)
(setq-default r-indent-level 4)
(setq perl-indent-level 4)

(setq c-basic-offset 4) 适用于 c 模式,但仅此而已。我是不是忘记了什么?我是否设置了错误的变量?没有这样的选择吗?

我每天都使用多种语言(R、Perl、sh、C/C++ 等)。由于我喜欢跨语言使用相同的缩进,是否有这样的全局覆盖变量可以设置,以便缩进级别和样式在所有模式中保持一致?如果没有,有没有办法在启动时为每种模式设置它们?如果所有其他方法都失败了,则必须有一个 elisp 脚本来执行此操作。

使用 Emacs 23

已解决:我必须为每种模式单独设置变量,因为没有这样的全局覆盖。您可以将以下语句放入 ~/.emacs 文件中以在启动时配置 emacs。

R模式来自 ESS包裹。通读文档,我发现: (setq ess-indent-level 4)
在 CPerl 模式下 (setq cperl-indent-level 4)
看起来您只需要在每种模式下搜索正确的变量即可。

最佳答案

Emacs 中的缩进并不是一件“微不足道的事情”。您可以在 Emacs Wiki 上阅读所有相关信息:
http://www.emacswiki.org/emacs/CategoryIndentation

任何主要模式都可以随意实现缩进,正如您所注意到的,其中一些模式引入了与缩进相关的变量;所以不,没有保证影响所有可能的主要模式的全局缩进配置(尽管在实践中,某些变量完全按照惯例是标准的)。

If not, is there a way to set them for each mode on startup?



当然。最简单的方法是使用 M-x customize 配置值和默认值RET 接口(interface),虽然只有 defcustom 定义的变量出现在那里,所以它不一定是全面的(但它对于浏览一些可用的设置仍然非常有用,即使您实际上并没有使用它来设置值)。

使用 setq 在你的 init 文件中设置值(或在自动缓冲区局部变量的情况下为默认值)和 setq-default ,正如你所做的那样,也很好。

如果你想要更多的控制,你可以使用模式 Hook 。几乎每种模式都运行分配给 (mode-name)-hook 的函数列表。在缓冲区中初始化自身后的变量,因此任何特定于模式的自定义都可以写入 elisp 函数并添加到 init 文件中的适当 Hook 列表中。

例如。:
(defun my-c-mode-config ()
(whitespace-mode 1)
(setq indent-tabs-mode t
tab-width 4
c-basic-offset 4))

(add-hook 'c-mode-hook 'my-c-mode-config)

关于Emacs 缩进级别全局覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com