在Sweave(Sweave = R + LaTeX)中,是否有Emacs小模式(或elisp代码块)可让您选择性地隐藏/显示环境?例如,我想移动到代码块的开始处(< >>),敲击键盘并让环境的内容隐藏起来。EMACS折叠/展开R代码
这可能吗?我只是试过hs-minor-mode,allout-mode和outline-minor-mode,但其中大多数都不识别R环境。我也尝试过org模式,该模式非常适合折叠/展开,但是,不支持LaTeX高亮表达式的代码,如:\ cite {};}}。 \ REF {}; \ CE {} ...
最佳 里卡多
- 编辑 -
我试过有一天用emacs折叠模式,但是,因为我在一个很长的工作代码(超过2000行),折叠模式“变得疯狂”,例如误解了某些特殊字符(即$)的挖掘,这在R中的使用与LaTeX中的使用非常不同。我认为这个问题是Sweave固有的,因为在同一个缓冲区中,我将R代码和LaTeX代码放在一起。
所以,现在我正在测试emacs大纲次要模式。但是,当我过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")
你有什么建议?
问候
--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 "#{{{ " "#}}}" " ")
我不知道,如果是正确的,当你离开块,它会自动为展开。
它的实施Rnw模式给你带来麻烦。我也尝试了隐藏表演。但是因为Rnw会重置您离开/进入的区块模式,所有内容都会重置。 ESS中有一些会谈根据更好的[noweb.el](http://www.loveshack.ukfsn.org/emacs/noweb.el)重写了Rnw。 – VitoshKa 2012-03-09 13:28:44
嗨,我部分解决了使用折叠模式的问题。我用矿解决方案重新编辑了这篇文章。 – Riccardo 2012-03-16 10:21:29