Есть ли способ настроить Emacs так, чтобы он распознавал (и позволяет выполнять) фрагменты кода R в файлах R markdown (.Rmd), похожих на способ распознавания фрагментов кода в .Rnw(Sweave) или .org(org -mode)?
Как я могу использовать режим Emacs ESS с R-уценкой?
Ответ 1
polymode, который делает/позволит вам писать уценку с R-фрагментами (для обработки с помощью knitr
).
Инструкции по настройке polyode + rmarkdown приведены в README
Это еще не сделано, но прогрессирует. См. Также эту дискуссию о списке рассылки ess-help (gmane archive рассылка архив списка)
Обновление: на MELPA был выпущен полимод, упрощающий процесс установки с использованием существующего механизма пакетов emacs. См. Объявление в списке рассылки ESS здесь.
Ответ 2
Загрузите zip для polymode
из github.com/vitoshka/polymode или, если вы являетесь "парнем w20", вы можете использовать:
git clone https://github.com/vitoshka/polymode.git
Добавьте эту функцию в файл инициализации Emacs:
(defun rmd-mode ()
"ESS Markdown mode for rmd files"
(interactive)
(setq load-path
(append (list "path/to/polymode/" "path/to/polymode/modes/")
load-path))
(require 'poly-R)
(require 'poly-markdown)
(poly-markdown+r-mode))
Теперь, если у вас уже установлен ESS, просто откройте свой файл rmd и введите Meta - X rmd-mode
и посмотрите красоту Emacs.
Обновление для пользователей MELPA
polymode
от MELPA использует плоскую структуру файла. Когда вы устанавливаете из репозитория Emacs через M-x list-packages
или подобные объекты, вы получаете свои файлы пакетов прямо там, где они должны, т.е.: (expand-file-name "~/.emacs.d/elpa")
, поэтому прокомментируйте приведенный выше код load-path
:
;; (setq load-path
;; (append (list "path/to/polymode/" "path/to/polymode/modes/")
;; load-path))