【问题标题】:Emacs ESS Mode - Tabbing for Comment RegionEmacs ESS 模式 - 用于评论区域的选项卡
【发布时间】:2010-10-21 07:34:27
【问题描述】:

我正在为 Emacs 使用 Emacs-Speaks-Statistics (ESS) 模式。编辑 R 代码时,当我在其上方创建新行时,任何注释行(以 # 开头的注释行)都会自动在最右边添加标签。我应该如何更改我的 .emacs.el 文件来解决这个问题?

例如,我有:

# Comment

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

                                # Comment

感谢任何提示。

【问题讨论】:

    标签: r emacs ess


    【解决方案1】:

    ess-indent-with-fancy-comments 设置为nil 将删除奇怪的单# 缩进,但必须在挂钩中本地缓冲区设置(如Rob 的回答),或者在加载ESS 之前:

    (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,您必须确保在定义样式之前对其进行设置。

    【讨论】:

    • 升级到 ESS 18.10.3 后,挂钩方法不再适用于我。 setqrequire ess 工作之前。
    【解决方案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】:

    如果您不希望 cmets 缩进,请使用“###”。根据manual

    默认情况下,cmets 以 ‘###’ 与开头对齐 线。以‘##’开头的评论 与当前水平对齐 包含块的缩进 评论。最后,cmets 以“#”开头的对齐到 右侧的列(第 40 列 默认情况下,但此值为 由变量控制 评论栏,)或就在 包含 如果超出范围,请发表评论 缩进列。

    【讨论】:

    • 我很高兴在问这个完全相同的问题之前看过。我标记了这个答案,因为我认为它确实是比上面的答案更好的解决方案。我一直认为这是 ESS 模式的错误/问题,但在调整语法后,我的问题都消失了。
    • 如果你不经常使用 Emacs,这个约定可能看起来很奇怪。然而,这个约定来自 lisp 和 emacs-lisp,其中分号的数量表示注释的类型,因此应该如何缩进。
    【解决方案4】:

    要么

    (setq ess-fancy-comments nil)
    

    如果你不想缩进单个-# cmets,或者

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

    如果你想改变 Enter 的行为使其不缩进。

    【讨论】:

    • 我认为您应该使用“#”作为行尾 cmets,并且这些都很好地缩进到同一列 -> 不错的代码“列表”。对于其他 cmets,确实养成了使用“##”(比“###”更多)的习惯:这些缩进作为该代码块中的其他“语句”
    • 我仍然赞成决定我应该使用多少#s。一个通常就足够了,因此非常感谢这个答案,因为我的评论没有移动到我不希望它出现的位置......
    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多