Emacs ESS模式 - 评论区域的标签

时间:2009-04-23 08:29:20

标签: r emacs ess

我正在为Emacs使用Emacs-Speaks-Statistics(ESS)模式。编辑R代码时,任何注释行(以#开头的那些注释行)会在我上面创建一个新行时自动获得最右边的选项卡。我应该如何更改我的.emacs.el文件来修复此问题?

例如,我有:

# Comment

现在,在将光标放在行的开头并按Enter后,我得到:

                                # Comment

感谢任何提示。

4 个答案:

答案 0 :(得分:62)

如果您不想缩进评论,请使用'###'。根据{{​​3}},

  

默认情况下,评论以。开头   '###'与开头对齐   这条线。以“##”开头的评论   与当前的水平保持一致   包含块的缩进   评论。最后,评论   以'#'开头的对齐a   右栏(第40栏   默认情况下,但此值为   由变量控制   评论列,)或刚刚之后   表达式包含的行   评论是否超出了   缩进栏。

答案 1 :(得分:31)

无论

(setq ess-fancy-comments nil)

如果您从不想缩进单个#评论或

(add-hook 'ess-mode-hook 
          (lambda () 
            (local-set-key (kbd "RET") 'newline)))

如果你想改变Enter的行为,那么它不会缩进。

答案 2 :(得分:2)

Jouni的回答对我不起作用。但我在这里发现了一种做法: 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)

答案 3 :(得分:2)

ess-indent-with-fancy-comments设置为nil将删除奇怪的单#缩进,但是必须在钩子中局部于缓冲区设置(如Rob的回答),或者在加载ESS之前设置:< / p>

(setq ess-indent-with-fancy-comments nil)
(require 'ess)

确保在加载ESS之前对其进行设置的其他方法是在M-x configure中进行设置,或在:init的{​​{1}}部分进行设置。

正在发生的事情是ESS在use-package中初始化时定义了样式,然后在每个缓冲区中应用了默认样式。因此,要确保这些样式遵守ess-style-alist,必须确保在定义样式之前进行设置。