【问题标题】:Emacs ESS Indentation for Scoped R functionsScoped R 函数的 Emacs ESS 缩进
【发布时间】:2018-06-02 02:13:36
【问题描述】:

我目前使用 emacs ESS,最近同意使用使用 2 个空格缩进的内部样式指南。我在 .emacs 文件中添加了以下内容:

(defun myindent-ess-hook ()
  (setq ess-indent-level 2)
)
(add-hook 'ess-mode-hook 'myindent-ess-hook)

一切都很顺利。当我定义一个新函数时,它会很好地缩进 2 个空格。此外,当我调用一个函数并将调用拆分为多行时,间距也很好地缩进了 2 个空格:

x <- function(){
  mean(
    c(2,3)
  )      
}

但是,如果我使用 :: 限定 mean 函数,缩进就会混乱:

x <- function(){
  base::mean(
          c(2,3)
        )
}

我的猜测是这与尾随空格有关,但即使在通过以下方式删除尾随空格之后:

(defun myindent-ess-hook ()
  (setq ess-indent-level 2)
  (setq ess-nuke-trailing-whitespace t)
)
(add-hook 'ess-mode-hook 'myindent-ess-hook)

问题仍然存在 - 以前有人遇到过这个问题吗?

【问题讨论】:

    标签: r emacs ess


    【解决方案1】:

    我在黑暗中刺伤,可能适用于您发布的示例,但您可能不喜欢其他情况下的效果。更多选项请参见ess-offset-arguments-newline 上的describe-variable(默认值:prev-call),并尝试:

    (defun myindent-ess-hook ()
      (setq ess-indent-level 2)
      (setq ess-offset-arguments-newline '(prev-line 2))
    )
    (add-hook 'ess-mode-hook 'myindent-ess-hook)
    

    【讨论】:

    • 对我有用——实际上我没有注意到任何提到的副作用。
    猜你喜欢
    • 2019-05-15
    • 2012-10-05
    • 2014-07-29
    • 1970-01-01
    • 2012-09-30
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多