2012-02-19 11 views
15

Czy istnieje tryb dodatkowy Emacsa (lub fragment kodu eliznego), który pozwala selektywnie ukrywać/pokazywać otoczenie w trybie Sweave (Sweave = R + LaTeX)?EMACS składanie/rozkładanie kodu R

Na przykład chciałbym przejść na początek bloku kodu (< < >>), nacisnąć klawisz i ukryć zawartość środowiska.

Czy to możliwe? Po prostu próbowałem hs-minor-mode, allout-mode i outline-minor-mode, ale większość z nich nie rozpoznaje środowisk R.

Próbowałem także tryb org, który działa świetnie na składanie/rozkładanie, ale nie obsługuje kodu wyróżniającego LaTeX dla wyrażenia typu: \ cite {}; \ ref {}; \ Ce {} ...

Najlepszy Riccardo

--EDIT--

Próbowałem na kilka dni do wykorzystania emacs-składane-mode, ale ponieważ pracuję na bardzo długo kod (ponad 2000 wierszy), tryb składania "zwariował" i na przykład źle zrozumiał wydobycie jakiegoś specjalnego znaku (tj. $), który ma zupełnie inne zastosowanie zarówno w R niż LaTeX. Myślę, że problem jest związany z Sweave, ponieważ w tym samym buforze mam razem kod R i kod LaTeX.

Więc, teraz testuję emacs zarys mniejszego trybu. Ale kiedy przejść przez R z lateksu (i vice versa) całej przedstawionej części zostały rozłożeniu mimo piszę w moim .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") 

Czy macie jakieś sugestie ??

Pozdrowienia

--edit 2--

wydaje się działać:

(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 "#{{{ " "#}}}" " ") 

ja nie wiem, czy to prawda, że ​​po opuszczeniu klocek, to automatycznie rozłożone.

+1

to realizacja Tryb Rnw, który daje ci kłopot. Próbowałem też hideshow. Ale ponieważ Rnw resetuje tryb w porcjach, które opuszczasz/wchodzisz, wszystko się resetuje. W ESS prowadzone są rozmowy na temat przepisania Rnw na podstawie lepszego [nowegob.el] (http://www.loveshack.ukfsn.org/emacs/noweb.el). – VitoshKa

+0

Witam, częściowo rozwiązałem problem za pomocą trybu składania. Ponownie zredagowałem wpis za pomocą mojego rozwiązania. – Riccardo

Odpowiedz

1

Jest to ogólny tryb składania tutaj: http://www.emacswiki.org/emacs/FoldingMode

+0

Jakie są "pewne problemy", które masz? – snim2

+0

Witam, próbowałem trybu składania emacsa i mam pewne problemy. Dodaję do tego .emacs to: '(ładuj" składane "'nomessage' noerror) (tryb składania-dodaj-znajdź-znajdź-hak) (składanie-dodawanie-do-znaczników-lista 'Rnw-tryb" # {{{"" #}}} "nil t)' ale gdy otwieram plik .Rnw, emacs nie wykrywa fałdowania znaków; co więcej, jeśli zrzeszam region (C-c @ C-x), emacs używa składanego znaku LaTeX zamiast "# {{{#}}}". Jakieś sugestie?? – Riccardo

+0

Jeśli problem polega na tym, że fałdy nie używają składni komentarza używanego języka, spróbuj wykonać instrukcje dla Ruby, PHP i Prolog, które są tutaj: http://www.emacswiki.org/emacs/FoldingMode# toc4 i po prostu zmodyfikuj dla R. – snim2

0

miałem bardzo dobre wyniki z hideshowhs-minor-mode, są to linie I w zasadzie używać w ~/.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))) 
Powiązane problemy