用于范围R函数的Emacs ESS缩进

时间:2017-12-19 15:41:14

标签: r emacs ess

我目前使用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)

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

1 个答案:

答案 0 :(得分:0)

我在黑暗中刺伤,可能适用于您发布的示例,但您可能不喜欢其他情况下的效果。有关更多选项,请参阅describe-variable上的ess-offset-arguments-newline(默认值: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)