EMACS折叠/展开R代码

Ric*_*rdo 15 emacs folding ess sweave

是否有一个Emacs次要模式(或一段elisp代码),允许您在Sweave(Sweave = R + LaTeX)中有选择地隐藏/显示环境?

例如,我想移动到代码块(<< >>)的开头,点击击键,并从视图中隐藏环境的内容.

这可能吗?我只是尝试过hs-minor-mode,allout-mode和outline-minor-mode,但是大多数都不能识别R环境.

我还尝试了org-mode,它非常适合折叠/展开,但不支持LaTeX突出显示代码,如:\ cite {};\REF {};\ce {} ...

最好的Riccardo

- 编辑 -

我有一天尝试使用emacs-folding-mode但是,因为我处理了很长的代码(超过2000行),折叠模式"变得疯狂",例如误解了一些特殊字符(即$)的挖掘,在R中使用与LaTeX有很大不同.我认为这个问题是Sweave固有的,因为在同一个缓冲区中我将R代码和LaTeX代码放在一起.

所以,现在我正在测试emacs概述次要模式.但是当我从LaTeX移动R(反之亦然)时,尽管我在我的.emacs中写道,但所有概述的部分都展开了:

(defun turn-on-outline-minor-mode ()
 (outline-minor-mode 1))
  (add-hook 'ess-mode-hook 'turn-on-outline-minor-mode)
  (add-hook 'LaTeX-mode-hook 'turn-on-outline-minor-mode)
  (add-hook 'latex-mode-hook 'turn-on-outline-minor-mode)
(setq outline-minor-mode-prefix "\C-c\C-o")
Run Code Online (Sandbox Code Playgroud)

你有什么建议吗??

问候

--EDIT 2--

它似乎工作:

(load "folding" 'nomessage 'noerror)
(folding-mode-add-find-file-hook)
(add-hook 'LaTeX-mode-hook 'folding-mode) 
(add-hook 'ess-mode-hook 'folding-mode) 
(folding-add-to-marks-list 'ess-mode "#{{{ " "#}}}" " ")
Run Code Online (Sandbox Code Playgroud)

我不知道是否正确,当你离开大块时,它会自动展开.

sni*_*im2 1

这里有一个通用的折叠模式:http ://www.emacswiki.org/emacs/FoldingMode

  • 对于任何遇到同样问题的人来说,正确的语法是:(add-hook 'LaTeX-mode-hook 'folding-mode)。 (3认同)