16

是否有 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 "#{{{ " "#}}}" " ")

我不知道是不是这样,当你离开大块时,它会自动展开。

4

2 回答 2

1

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

于 2012-02-19T23:09:28.310 回答
0

我在hideshow 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)))
于 2017-05-29T14:19:45.640 回答