代码之家  ›  专栏  ›  技术社区  ›  Christopher DuBois

Emacs ESS模式-标记注释区域

  •  45
  • Christopher DuBois  · 技术社区  · 15 年前

    我正在使用Emacs Speaks Statistics(ESS)模式进行Emacs。编辑R代码时,当我在其上方创建新行时,任何注释行(以开头的注释行)都会自动切换到最右边。如何更改.emacs.el文件以修复此问题?

    例如,我有:

    # Comment
    

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

                                    # Comment
    

    谢谢你的提示。

    4 回复  |  直到 6 年前
        1
  •  59
  •   huaiyuan    15 年前

    如果不希望缩进注释,请使用“”。根据 manual ,

    默认情况下,注释以 _____秷与 这条线。以“注释”开头的注释 与当前级别对齐 包含的块的缩进 评论。最后,评论 从___开始,对齐到 右边的列(第40列 默认情况下,但此值为 由变量控制 注释列,)或在 表达式位于包含 如果扩展到 缩进列。

        2
  •  29
  •   Jouni K. Seppänen    15 年前

    要么

    (setq ess-fancy-comments nil)
    

    如果你不想单缩进- # 评论,或

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

    如果要更改Enter的行为,使其不缩进。

        3
  •  2
  •   Rob Donnelly    7 年前

    乔尼的回答对我不起作用。但我在这里找到了一种方法: 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)
    
        4
  •  1
  •   jackkamm    6 年前

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

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

    在加载ESS之前确保它已设置的其他方法是将其设置为 M-x configure 或将其设置在 :init 截面 use-package .

    接下来是ESS在初始化时定义样式 ess-style-alist ,然后在每个缓冲区中应用默认样式。所以要确保这些风格得到尊重 ess-indent-with-fancy-comment ,必须确保在定义样式之前对其进行设置。