是否有 Emacs 次要模式(或一段 elisp 代码)可让您在 Sweave(Sweave = R + LaTeX)中选择性地隐藏/显示环境?
例如,我想移动到代码块 (<<>>) 的开头,按一下键,然后将环境的内容隐藏起来。
这可能吗?我刚刚尝试了 hs-minor-mode、allout-mode 和 outline-minor-mode,但它们中的大多数都无法识别 R 环境。
我还尝试了非常适合折叠/展开的 org-mode,但不支持 LaTeX 突出显示代码,例如:\cite{}; \参考{}; \ce{} ...
最好的里卡多
- 编辑 -
我尝试了一天使用 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")
你有什么建议吗??
问候
--编辑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 "#{{{ " "#}}}" " ")
我不知道是不是这样,当你离开大块时,它会自动展开。