作用域R函数的Emacs ESS缩进

作用域R函数的Emacs ESS缩进,r,emacs,ess,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个空格。此外,当我调用一个函数并将调用中断到多行时,间距也会很好地缩进两个空格: x <- function(){

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

(defun myindent-ess-hook ()
  (setq ess-indent-level 2)
)
(add-hook 'ess-mode-hook 'myindent-ess-hook)
一切都很顺利。当我定义一个新函数时,它会很好地缩进2个空格。此外,当我调用一个函数并将调用中断到多行时,间距也会很好地缩进两个空格:

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

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

我的暗中刺杀,可能对您发布的示例有效,但您可能不喜欢其他情况下的效果。有关更多选项,请参见
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)

对我有效——实际上我没有注意到任何提到的副作用。
(defun myindent-ess-hook ()
  (setq ess-indent-level 2)
  (setq ess-nuke-trailing-whitespace t)
)
(add-hook 'ess-mode-hook 'myindent-ess-hook)
(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)