emacs: использование режима mmm для объединения режима markdown и ESS для редактирования файлов rmarkdown

Я играю с mmm-mode, чтобы объединить режим markdown и ESS для редактирования файлов Rmarkdown. Я использую gnu emacs 24.3 в Windows 7 и последнюю версию вышеупомянутых режимов. Вот что у меня есть в моем файле .emacs:

(require 'mmm-mode)   ;;; possibly init with (require 'mmm-auto) instead
(mmm-add-classes
 '((rmarkdown
    :submode r-mode
    :face mmm-declaration-submode-face
    :front "^```[{]r.*[}] *$"   
    :back "^``` *$")))
(setq mmm-global-mode 'maybe)
(mmm-add-mode-ext-class 'markdown-mode "\\.rmd\\'" 'rmarkdown)

Это работает до тех пор, пока в буфере, показывающем файл rmarkdown, распознаются блоки кода R, и я получаю правильную синтаксически понятную блокировку шрифтов как в блоках кода R, так и в блоках уценки. Более того, когда у меня есть точка в блоке кода R, я получаю меню ESS и Imenu-R, а когда он находится в области уценки, я получаю меню уценки. Все идет нормально.

Вот мои проблемы. В блоках кода R не работает электрическое левое назначение. Я не могу просто нажать клавишу подчеркивания, чтобы получить «‹ - »и переключаться между ним и« _ ».

Кроме того, у меня нет синтаксически распознаваемых автоматических отступов для кода R.

Обе эти вещи работают, когда я использую ESS для редактирования файлов, содержащих чистый код R.

Есть мысли о том, как это настроить? Мне известно об этой предыдущей публикации почти год назад: Как я могу использовать режим Emacs ESS с R markdown? и указателем на полимод, но кажется, что полимод продвигается медленно. Я также видел другие указатели на org-mode для аналогичной функциональности, и хотя в какой-то момент я могу сделать решительный шаг, сегодня мои вопросы касаются получения максимальной отдачи от комбинации mmm-mode, markdown-mode и ESS. Спасибо за вашу помощь.


person Dave Braze    schedule 11.03.2014    source источник
comment
Я думаю, что крутые ребята используют «полимод», который был написан одним из участников ESS; это в Google Code, насколько я помню.   -  person Dirk Eddelbuettel    schedule 12.03.2014


Ответы (1)


Polymode - это правильный выбор. К сожалению, все еще в разработке, но работает для большинства вещей.

person VitoshKa    schedule 11.03.2014
comment
Почему? ммм-режим работает. А косвенные буферы неоднократно осуждались в emacs-devel сопровождающим Emacs. - person Dmitry; 12.03.2014
comment
Хотя, если вам действительно удалось заставить подход Дейва Лава работать в текущем Emacs и поддерживать основные функции (по крайней мере, блокировку шрифтов и отступы), я бы хотел это увидеть. - person Dmitry; 12.03.2014
comment
Блокировка шрифтов и отступы @Dmitry работают достаточно хорошо. Учитывая, что весь код является общим и нет никаких настроек для конкретного режима, я думаю, что косвенные буферы - это то, что нужно сейчас. - person VitoshKa; 12.03.2014
comment
Как вам удалось заставить работать отступы без специальных настроек? Поддерживаете ли вы что-нибудь вроде ERB / ​​JSP / PHP? - person Dmitry; 13.03.2014
comment
@Dmitry, обернув функцию-строку-отступа и функцию-область-отступа. Я не использую ERB / ​​JSP / PHP, но буду рад добавить, если у вас есть примеры из реальной жизни. - person VitoshKa; 14.03.2014
comment
@Dmitry, полимод спроектирован так, чтобы его можно было расширять. В мою задачу не входит добавление режимов, мне просто нужно задокументировать api. Новые режимы обычно - это две строки elisp, которые нужно добавить. - person VitoshKa; 14.03.2014
comment
Я проверю это, когда у меня будет время, но посмотрите эту проблему на примерах ERB: github.com/fxbois/web-mode/issues/67 - person Dmitry; 16.03.2014
comment
Хорошо. Спасибо. Я принял этот ответ. Меня действительно расстраивает полимод, но в меньшей степени, чем то, что я делал раньше. - person Dave Braze; 07.07.2014