EMACS складывает/разворачивает R-код

Есть ли второстепенный режим Emacs (или фрагмент кода elisp), который позволяет выборочно скрывать/показывать среды в Sweave (Sweave = R + LaTeX)?

Например, я хотел бы перейти к началу блока кода (< < → ), нажать клавишу нажатия и отобразить содержимое среды, скрытое от представления.

Возможно ли это? Я просто пробовал hs-minor-mode, allout-mode и outline-minor-mode, но большинство из них не распознает среды R.

Я также попробовал орг-режим, который отлично работает для складывания/разворачивания, но не поддерживает код подсветки LaTeX для выражения типа:\cite {};\Исх {};\ce {}...

Лучший Риккардо

- EDIT -

В какой-то момент я попытался использовать emacs-folding-mode, но, поскольку я работаю над очень длинным кодом (более 2000 строк), режим сгибания "сходит с ума" и, например, неправильно понимает разработку какого-либо специального символа (т. $), который имеет совсем другое применение как в R, так и в LaTeX. Я думаю, что проблема является неотъемлемой частью Sweave, потому что в том же буфере у меня есть код R и код LaTeX вместе.

Итак, теперь я тестирую emacs, описывая второстепенный режим. Но когда я перехожу через R из LaTeX (и наоборот), вся изложенная часть была развернута, несмотря на то, что я пишу в своих .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 "#{{{ " "#}}}" " ")

Я не знаю, правильно ли это, когда вы покидаете кусок, он автоматически разворачивается.

Ответы

Ответ 2

У меня были очень хорошие результаты с помощью 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)))