是否有一个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")
你有什么建议吗?
此致
- 编辑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 "#{{{ " "#}}}" " ")
我不知道是否正确,当你离开大块时,它会自动展开。
答案 0 :(得分:1)
这里有一个通用折叠模式:http://www.emacswiki.org/emacs/FoldingMode
答案 1 :(得分:0)
我使用隐藏显示 hs-minor-mode
获得了非常好的结果,这些是我在~/.emacs.d/init.el
中基本使用的行:
(add-hook 'ess-mode-hook 'hs-minor-mode)
(eval-after-load 'hideshow
'(progn
(global-set-key (kbd "C-+") 'hs-toggle-hiding)))