我正在使用Emacs的ESS模式。当编辑R代码时,任何注释行(以#开头的行)在我创建位于其上方的新行时自动缩进到最右侧。我应该如何更改我的.emacs.el文件来解决这个问题?
例如,我有:
# Comment
现在,我将光标放在该行的开头,然后按下 Enter 键,我得到:
# Comment
谢谢任何提示。
如果您不希望评论缩进,请使用'###'。根据手册,默认情况下以'###'开头的注释将对齐到行的开头。以'##'开头的注释将对齐到包含注释的块的当前缩进级别。最后,以'#'开头的注释将对齐到右侧的列(默认为第40列,但此值由变量comment-column控制),或者如果该行表达式扩展超出缩进列,则对齐到包含注释的行表达式之后。
要么
(setq ess-fancy-comments nil)
如果您从不想缩进单行#
注释或
(add-hook 'ess-mode-hook
(lambda ()
(local-set-key (kbd "RET") 'newline)))
如果您想更改 Enter 键的行为,以便它不会缩进。
将 ess-indent-with-fancy-comments
设置为 nil 将删除奇怪的单个 #
缩进,但必须在 ESS 加载之前设置它,可以在 hook 中 buffer-locally 设置(如 Rob 的答案中所示),或者全局设置。
(setq ess-indent-with-fancy-comments nil)
(require 'ess)
确保在加载ESS之前设置它的其他方法是,在M-x configure
中设置它,或在use-package
的:init
部分中设置它。
发生的情况是,ESS在初始化时定义样式在ess-style-alist
中,然后在每个缓冲区中应用默认样式。因此,为了确保这些样式尊重ess-indent-with-fancy-comment
,必须确保在定义样式之前设置它。
require ess
之前使用 setq
可以解决问题。 - Yin ZhuJouni的回答对我不起作用。但是我在这里找到了一个有效的方法: https://stat.ethz.ch/pipermail/ess-help/2016-May/010970.html
(defun my-ess-settings ()
(setq ess-indent-with-fancy-comments nil))
(add-hook 'ess-mode-hook #'my-ess-settings)