підсвічування Markdown підсвічування в Emacs?


111

Чи є модифікація існуючого інструменту чи нового інструменту, який буде виділяти синтаксичні (кольорові) блоки R-коду в документі розмітки в'язального пристрою при відкритті в Emacs?

Кульки, на які я дивлюся, - це блоки з трьома зворотними зворотами, [```]які містять код R всередині.

EDIT: речі, які я намагався поки що:

- Ubuntu 12.04 з Emacs 23

emacs --version
GNU Emacs 23.3.1

1. Полімод

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

Я намагаюся отримати полімод для виділення синтаксису моїх файлів 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. Полімод встановлений правильно

Відкрийте Rmd-файл, M-x polymode-minor-modeбез підсвічування синтаксису жодних змін.


emacs --version
GNU Emacs 24.3.1

1. Полімод встановлений правильно

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

Введіть тут опис зображення

Введіть тут опис зображення

Друге зображення одразу після введення Повернення перед блоком в'язання.


10
я хотів би знати відповіді. Ходять постійні чутки про те, що хлопці ESS
обійдуться

3
У мене вдома є щось, що в основному працює. Він заснований на мумамо-режимі та режимі розмітки. Мені довелося внести декілька змін у mumamo-mode, щоб змусити його працювати, пояснивши тут: bugs.launchpad.net/nxhtml/+bug/626039/comments/5 . Я буду відповідати сюди з відповіддю, коли повернусь додому і згадаю, що я зробив.
Ерік Іверсон

4
А як щодо Vitalie's polymode: github.com/vitoshka/polymode
daroczig

3
@daroczig - Цікаво. Будь-яка ідея, що він має на увазі під "Не грамотними програмними програмами", у попередженні README ! розділ?
Josh O'Brien

4
@ JoshO'Brien У повідомленні Ess про допомогу Vitalie він уточнює, що він мав на увазі: "Rnw - це просто полімод. Що я маю на увазі під грамотним програмою бекенду, це інструмент, який може обробити / перетворити файл у щось інше. Я підключу ці дні ess-swv-weave та ess-swv-PDF у картах, пов’язаних з полімодами. Це має бути цілком нормально, оскільки в'язальниця досить розумна, щоб розпізнати речі, з якими вона має справу ".
Ерік Іверсон

Відповіді:


3

Це може допомогти: http://sjp.co.nz/posts/emacs-ess-knitr/

Knitr розмітка в Emacs через ESS


Вибачте, але ця посилання неправильна. В даний час Emacs-ESS не має виділення для документів Rmd або навіть простої розмітки (і, до речі, ваша пов'язана стаття не вимагає цього). Щодо першого вам потрібен полімод, а для другого markdown.el. Крім того, якщо все, що ви хочете, - це просто переключити двигун ESS з Sweave на плеєр (без виділення!), Не потрібно проходити всю складність цієї статті, просто додайте (setq ess-swv-processor 'knitr)до вас файл init.
антоніо

2

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

Перш за все, ви кажете, що у вас є GNU Emacs 23.3.1, але в polymode readme.mdньому написано:

Тестували за допомогою Emacs 24.3.1 та 24.4.5.

Що стосується вашої помилки: "Неможливо відкрити файл завантаження: color", в polymode.el, є рядок:

(require 'color)

цей пакет є в Emacs 24, але він може не вистачити у вашій версії.

Рішення

  1. Оновіть до останньої (тому підтримується) версії Emacs.

  2. Витягніть polymode.zip в каталозі, де ви зберігаєте матеріал Emacs, наприклад:

    ~\conf\emacs

і змінити отриманий polymode-masterdir наpolymode

  1. Додайте це у свій файл init (і якщо ви використовували різні імена вище, відповідно змініть імена):

    ;; 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
Не випускайте з уваги останню лінію еліпса. Це дозволить правильно зберегти розмітку. Інакше, коли ви знову відкриєте свій документ, у вас виникнуть неприємні сюрпризи.

Примітка для користувачів Windows

Пропустіть це, якщо ви хлопець в Linux, але, незважаючи на питання про Ubuntu, моя відповідь ідеально стосується і Windows Emacs. Просто стосовно:

  • Крок 2) Ви отримаєте polymode.zip у:

    %USERPROFILE%\conf\emacs

    Як ви здогадуєтеся, змінна середовища% USERPROFILE% містить шлях до каталогу вашого профілю користувача. Якщо ви не впевнені, що це таке, виконайте set USERPROFILEв рядку CLI.
    Як користувач 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")) 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.