2012-02-19 32 views
15

Sweave (Sweave = R + LaTeX) ortamında ortamları seçebilmenizi/gösterebilmenizi sağlayan bir Emacs minor modu (veya elisp kodu) var mı? Örneğin, bir kod bloğu (< < >>) başlangıcına geçmek, tuşa basmak ve ortamın içeriğini gizli tutmak istiyorum.EMACS katlama/katlama R kodu

Bu mümkün mü? Sadece hs-minor-mode, allout-mode ve anahat-minör modu denedim, ancak çoğu R ortamlarını tanımıyor.

Ayrıca, katlama/açma için harika çalışan org modunu denedim, ancak aşağıdaki gibi ifade için LaTeX vurgulama kodunu desteklemiyorum: \ cite {}; \ Ref {}; Çok uzun üzerinde çalıştıkları için \ ce {} ...

En Riccardo

--EDIT--

Ben, bir gün emacs-katlama-modunu kullanmak için çalıştı ama kod (2000 satırdan fazla), katlama modu "çıldırır" ve örneğin, LaTeX'ten daha fazla R'de çok farklı kullanıma sahip bazı özel karakterlerin (örn. $) madenciliğini yanlış anlar. Bence sorun, aynı tamponda R kodunun ve LaTeX kodunun birlikte olması nedeniyle, Sweave için içseldir.

Şimdi, emacs anahattı minör modunu test ediyorum. Ben R üzerinde hareket zaman benim .emacs yazmak rağmen Fakat LaTeX (ve tersi) tüm hatlarıyla bölümünden gelişeceğini edildi:

(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") 

önerin var mı ??

Selamlar

--edit 2--

Bu iş gibi görünüyor: Eğer yığın ayrılırken

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

bu doğru olup olmadığını bilmiyorum, bu otomatik olarak katlanmamış.

+1

bu uygulama var Rnw modu size sorun verir. Ayrıca gizemi de denedim. Fakat Rnw, bıraktığınız/girdiğiniz parçalardaki modu sıfırladığından, her şey sıfırlanıyor. ESS'de Rnw'yi daha iyi bir şekilde [noweb.el] (http://www.loveshack.ukfsn.org/emacs/noweb.el) baz alarak yeniden yazmak için bazı görüşmeler var. – VitoshKa

+0

Merhaba, sorunu katlama modunu kullanarak kısmen çözdüm. Gönderiyle postu yeniden düzenledim. – Riccardo

cevap

1

burada genel bir katlama modu vardır: ile http://www.emacswiki.org/emacs/FoldingMode

+0

Yaşadığınız "bazı sorun" nedir? – snim2

+0

Merhaba, emacs katlama modunu denedim ve bazı sıkıntılarım var. Ben benim .emacs bu eklemek: '(yük" katlama "'nomessage' noerror) (katlama modu-add-find-dosya-kanca) (katlama-add-to-işaretleri-liste 'Rnw modu] # {{{"" #}}} "nil t)' değil .Rnw dosyasını açtığımda, emacs katlama işaretlerini algılamaz; dahası, bir bölgeyi (C-c @ C-x) katlarsam, emac'ler "# {{{}}}" yerine LaTeX'in katlama karakterini kullanır. Herhangi bir öneri?? – Riccardo

+0

Sorun, katlamaların kullandığınız dildeki yorum sözdizimini kullanmadığı takdirde, burada bulunan Ruby, PHP ve Prolog yönergelerini izlemeyi deneyin: http://www.emacswiki.org/emacs/FoldingMode# toc4 ve sadece için değiştirin. – snim2

0

ben vardı çok iyi sonuçlar hs-minor-mode bu temelde kullanmak çizgilerdir GizleGöster benim ~/.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)))