knitr podświetlanie Markdown w Emacs?

111

Czy jest jakaś modyfikacja istniejącego narzędzia lub nowego narzędzia, które podświetla składnię (kolor) bloki kodu R w dokumencie knitr Markdown po otwarciu w Emacsie?

Fragmenty knitr, na które patrzę, to bloki z potrójnym kliknięciem wstecz, [```]które zawierają kod R.

EDYCJA: rzeczy, które próbowałem do tej pory:

- Ubuntu 12.04 z Emacs 23

emacs --version
GNU Emacs 23.3.1

1. Polymode

https://github.com/vitoshka/polymode/issues/3

Próbuję uzyskać polymode, aby podświetlić składnie moje pliki Rmd, ale narzeka na plik ładowania `` koloru '':

cd ~/.emacs.d
git clone https://github.com/vitoshka/polymode.git

W moim pliku .emacs:

(add-to-list 'load-path "/home/avilella/.emacs.d/polymode/")
(add-to-list 'load-path "/home/avilella/.emacs.d/polymode/modes/")

;; Require any polymode bundles that you are interested in:

(require 'poly-R)
(require 'poly-markdown)

eval-buffer:

Cannot open load file: color

- CentOS z Emacs 24:

emacs --version
GNU Emacs 24.2.1

1. Polymode zainstalowany poprawnie

Otwórz plik Rmd M-x polymode-minor-mode, bez zmian w podświetlaniu składni.


emacs --version
GNU Emacs 24.3.1

1. Polymode zainstalowany poprawnie

Otwórz plik Rmd, M-x poly-markdown+r-modezacznie się pojawiać podświetlanie składni, ale muszę ręcznie zmodyfikować test w każdym bloku kodu z potrójnym zaznaczeniem, aby w pełni pokazał składnię.

Tutaj wprowadź opis obrazu

Tutaj wprowadź opis obrazu

Drugi obraz jest tuż po wpisaniu Return przed blokiem knitr.

719016
źródło
10
chciałbym poznać odpowiedzi. Ciągle krążą plotki, że faceci z ESS się do tego zmienią, ale jeszcze tego nie widziałem ...
Ben Bolker
3
Mam w domu coś, co w zasadzie działa. Opiera się na trybie mumamo i trybie przeceny. Musiałem jednak wprowadzić kilka zmian w trybie mumamo, aby działał, wyjaśniono tutaj: bugs.launchpad.net/nxhtml/+bug/626039/comments/5 . Odpowiem tutaj, gdy wrócę do domu i przypomnę sobie, co zrobiłem.
Erik Iverson
4
A co z Vitalie's polymode: github.com/vitoshka/polymode
daroczig
3
@daroczig - Ciekawe. Jakikolwiek pomysł, co ma na myśli mówiąc „Brak zaplecza programistycznego dla osób piśmiennych” w Ostrzeżenie pliku README ! Sekcja?
Josh O'Brien
4
@ JoshO'Brien W komunikacie Ess-help Vitaliego wyjaśnia, co miał na myśli: „Rnw to tylko tryb wielomodowy. Mówiąc o zapleczu programowania piśmiennego, mam na myśli narzędzie, które może przetwarzać / konwertować plik na coś innego. Jak knitr lub org- W dzisiejszych czasach podłączę ess-swv-weave i ess-swv-PDF w mapach polimodów związanych z R. Na razie powinno to wystarczyć, ponieważ knitr jest wystarczająco inteligentny, by rozpoznać rzeczy, z którymi ma do czynienia. "
Erik Iverson

Odpowiedzi:

3

To może pomóc: http://sjp.co.nz/posts/emacs-ess-knitr/

Markdown Knitr w Emacs do ESS

priyolahiri
źródło
Przepraszamy, ale to odniesienie jest błędne. Obecnie Emacs-ESS nie ma podświetlania dokumentów Rmd ani nawet zwykłej przeceny (a przy okazji, twój linkowany artykuł nie twierdzi). Do pierwszego potrzebny jest tryb polymode, a do drugiego przecena. El. Poza tym, jeśli chcesz tylko przełączyć silnik ESS ze Sweave na knitr (bez podświetlania!), Nie ma potrzeby przechodzenia przez wszystkie komplikacje tego artykułu, po prostu dodaj (setq ess-swv-processor 'knitr)plik init.
antonio,
2

Twój problem

Przede wszystkim mówisz, że masz GNU Emacs 23.3.1, ale w polymode readme.mdtreści brzmi:

Testowane w Emacs 24.3.1 i 24.4.5.

Jeśli chodzi o Twój błąd: „Nie można otworzyć załadowanego pliku: kolor”, w programie polymode.elznajduje się wiersz:

(require 'color)

ten pakiet jest w Emacs 24, ale może go brakować w twojej wersji.

Rozwiązanie

  1. Zaktualizuj do najnowszej (dlatego obsługiwanej) wersji Emacsa.

  2. Wypakuj polymode.zip do katalogu, w którym przechowujesz materiał Emacsa, np .:

    ~\conf\emacs

i zmień wynikowy polymode-masterkatalog napolymode

  1. Dodaj to do swojego pliku init (a jeśli użyłeś innych nazw powyżej, odpowiednio zmień nazwy poniżej):

    ;; Just an Emacs personal dir containing polymode packages etc.
    (setq MY-EMACS  "~/conf/emacs") 
    
    (defun my-emacs  (subfolder)
    "Get path to personal dir + subfolder"
    (concat (expand-file-name MY-EMACS) "/" subfolder))
    
    ;; ESS Markdown
    ;; -------------
    (defun rmd-mode ()
      "ESS Markdown mode for rmd files"
      (interactive)
      (setq load-path 
        (append (list (my-emacs "polymode/") 
                  (my-emacs "polymode/modes/"))
            load-path))
      (require 'poly-R)
      (require 'poly-markdown)
      (poly-markdown+r-mode))
    
    ;; Wrap line in markdown. Comment if you don't dislike words cut in the middle
    (add-hook 'markdown-mode-hook (lambda () (visual-line-mode 1)))
    
    ;; Let you use markdown buffer easily
    (setq ess-nuke-trailing-whitespace-p nil)  
    
  2. Meta+ rmdkiedy plik Rmd jest otwarty lub ustawia tryb na <!-- Local Variables: -->
    ... ciesz się radykalną zmianą produktywności.

PS
Nie przegap ostatniej linii elisp. Pozwoli to odpowiednio zapisać przeceny. W przeciwnym razie, gdy ponownie otworzysz dokument, będziesz mieć niemiłe niespodzianki.

Uwaga dla użytkowników systemu Windows

Pomiń to, jeśli jesteś facetem od Linuksa, ale pomimo pytania wspomnij o Ubuntu, moja odpowiedź pasuje również idealnie do Windows Emacs. Tylko w odniesieniu do:

  • Krok 2) Rozpakujesz polymode.zip w:

    %USERPROFILE%\conf\emacs

    Jak się domyślasz, zmienna środowiskowa% USERPROFILE% zawiera ścieżkę do katalogu Twojego profilu użytkownika. Jeśli nie masz pewności, co to jest, wykonaj polecenie set USERPROFILEw wierszu polecenia.
    Jako użytkownik systemu Windows możesz być używany do przechowywania rzeczy w My Documents. W takim przypadku Twój katalog będzie:

    %USERPROFILE%\Documents\conf\emacs
  • Krok 3) Jeśli w kroku 2) korzystałeś ze ścieżki %USERPROFILE%\Documents\conf\emacs, zmień odpowiednio pierwszą linię kodu z:

    (setq MY-EMACS  "~/conf/emacs") 

    do (zwróć uwagę na ukośniki):

    (setq MY-EMACS  "~/Documents/conf/emacs") 

    W obu przypadkach (z opcją „Moje dokumenty” i bez niej) możesz preferować bardziej stylowy system Windows:

    (setq MY-EMACS (substitute-in-file-name "$USERPROFILE/Documents/conf/emacs")) 
antonio
źródło