Knitr Markdown подсветка в Emacs?

Есть ли какая-либо модификация существующего инструмента или нового инструмента, который будет синтаксически выделять (цветные) блоки R-кода в документе уценки knitr при открытии в Emacs?

В кусках ящика, которые я рассматриваю, входят блоки с тройным обратным ходом [```], содержащие внутри R-код.

ИЗМЕНИТЬ: вещи, которые я пробовал до сих пор:

- Ubuntu 12.04 с Emacs 23

emacs --version
GNU Emacs 23.3.1

1. ПОЛИМОДА

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

Я пытаюсь заставить polyode синтаксически выделить мои файлы Rmd, но он жалуется на файл загрузки "color":

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

В моем файле .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-буфер:

Cannot open load file: color

- CentOS с Emacs 24:

emacs --version
GNU Emacs 24.2.1

1. Правильно установлен Polymode

Откройте файл Rmd, M-x polymode-minor-mode, никаких изменений в подсветке синтаксиса.


emacs --version
GNU Emacs 24.3.1

1. Правильно установлен Polymode

Откройте файл Rmd, M-x poly-markdown+r-mode, некоторые из подсветки синтаксиса начнут появляться, но мне нужно вручную изменить тест в каждом блоке кода с тройным типом, чтобы он полностью отображал синтаксис.

Enter image description here

Enter image description here

Второе изображение сразу же после ввода Return перед блоком knitr.

Ответ 2

Ваша проблема

Прежде всего, вы говорите, что у вас есть GNU Emacs 23.3.1, но в polymode readme.md он читает:

Протестировано с помощью Emacs 24.3.1 и 24.4.5.

Что касается вашей ошибки: "Не удается открыть файл загрузки: цвет", в polymode.el есть строка:

(require 'color)

этот пакет находится в Emacs 24, но он вполне может отсутствовать в вашей версии.

Решение

  • Перейдите к недавней (поэтому поддерживаемой) версии Emacs.

  • Извлеките polymode.zip в каталог, в котором вы сохраняете материал Emacs, например:

    ~\conf\emacs
    

и измените результирующий polymode-master dir на polymode

  1. Добавьте это в свой файл инициализации (и если вы использовали разные имена выше, измените имена ниже соответственно):

    ;; 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 + rmd, когда Rmd файл открыт или задан режим в <!-- Local Variables: -->
    ... наслаждайтесь резким изменением производительности.

PS
Не пропустите последнюю линию elisp. Это позволит правильно сохранить уценку. В противном случае, когда вы снова откроете свой документ, у вас будут неприятные сюрпризы.

Заметка для пользователей Windows

Пропустите это, если вы парень Linux, но, несмотря на вопрос, касающийся Ubuntu, мой ответ также отлично подходит для Windows Emacs. Только в отношении:

  • Шаг 2) Вы извлечете polymode.zip в:

    %USERPROFILE%\conf\emacs
    

    Как вы думаете, переменная среды% USERPROFILE% содержит путь к вашему каталогу профиля пользователя. Если вы не знаете, что это такое, выполните set USERPROFILE в командной строке.
    В качестве пользователя Windows вы можете использовать вещи в My Documents. В этом случае ваш каталог будет выглядеть следующим образом:

    %USERPROFILE%\Documents\conf\emacs
    
  • Шаг 3) Если на шаге 2 вы использовали путь %USERPROFILE%\Documents\conf\emacs, измените соответственно первую строку кода из:

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

    (обратите внимание на косые черты):

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

    В обоих случаях (с и без "Мои документы" ) вы можете предпочесть более стиль Windows:

    (setq MY-EMACS (substitute-in-file-name "$USERPROFILE/Documents/conf/emacs"))