Knitr Markdown surligné dans Emacs?

111

Y a-t-il une modification d'un outil existant ou d'un nouvel outil qui mettra en évidence la syntaxe (couleur) des blocs de code R dans un document Knitr Markdown une fois ouvert dans Emacs?

Les morceaux knitr que je regarde sont des blocs à triple backtick [```]qui contiennent du code R à l'intérieur.

EDIT: les choses que j'ai essayées jusqu'à présent:

- Ubuntu 12.04 avec Emacs 23

emacs --version
GNU Emacs 23.3.1

1. Polymode

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

J'essaie d'obtenir polymode pour mettre en évidence la syntaxe de mes fichiers Rmd, mais il se plaint d'un fichier de chargement `` couleur '':

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

Dans mon fichier .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 avec Emacs 24:

emacs --version
GNU Emacs 24.2.1

1. Polymode installé correctement

Ouvrez un fichier Rmd,, M-x polymode-minor-modeaucune modification de la coloration syntaxique.


emacs --version
GNU Emacs 24.3.1

1. Polymode installé correctement

Ouvrez un fichier Rmd,, une M-x poly-markdown+r-modepartie de la coloration syntaxique commence à apparaître, mais je dois modifier manuellement le test dans chaque bloc de code à triple coche pour qu'il montre pleinement la syntaxe.

Entrez la description de l'image ici

Entrez la description de l'image ici

La deuxième image est juste après avoir tapé un retour avant le bloc knitr.

719016
la source
10
j'aimerais connaître les réponses. Il y a des rumeurs persistantes selon lesquelles les gars de l'ESS vont s'en sortir, mais je ne l'ai pas encore vu ...
Ben Bolker
3
J'ai quelque chose à la maison qui fonctionne essentiellement. Il est basé sur le mode mumamo et le mode markdown. J'ai dû apporter quelques modifications au mode mumamo pour le faire fonctionner, expliqué ici: bugs.launchpad.net/nxhtml/+bug/626039/comments/5 . Je ferai un suivi ici avec une réponse après mon retour à la maison et je me souviendrai de ce que j'ai fait.
Erik Iverson
4
Qu'en est-il de Vitalie polymode: github.com/vitoshka/polymode
daroczig
3
@daroczig - Intéressant. N'importe quelle idée de ce qu'il entend par "Pas de backends de programmation alphabétisés", dans l' Avertissement du README ! section?
Josh O'Brien
4
@ JoshO'Brien À propos de l'annonce ess-help de Vitalie, il clarifie ce qu'il voulait dire: "Rnw est juste un polymode. Ce que j'entends par backend de programmation littéraire est un outil qui peut traiter / convertir le fichier en autre chose. Comme knitr ou org- Je vais accrocher ces jours-ci ess-swv-weave et ess-swv-PDF dans les cartes polymode liées à R. Cela devrait être tout à fait acceptable pour le moment car knitr est assez intelligent pour reconnaître les choses dont il s'occupe. "
Erik Iverson

Réponses:

3

Cela pourrait aider: http://sjp.co.nz/posts/emacs-ess-knitr/

Markdown Knitr dans Emacs via ESS

Priyolahiri
la source
Désolé mais cette référence est fausse. Actuellement, Emacs-ESS n'a pas de mise en évidence pour les documents Rmd ou même un simple démarquage (et d'ailleurs votre article lié ne le prétend pas). Comme pour le premier, vous avez besoin de polymode et pour le dernier markdown.el. De plus, si tout ce que vous voulez est de simplement passer le moteur ESS de Sweave à knitr (sans surligner!), Il n'est pas nécessaire de passer par toutes les complications de cet article, ajoutez simplement (setq ess-swv-processor 'knitr)votre fichier init.
antonio
2

Ton problème

Tout d'abord, vous dites que vous avez GNU Emacs 23.3.1, mais dans polymode readme.md, il lit:

Testé avec Emacs 24.3.1 et 24.4.5.

Quant à votre erreur: "Impossible d'ouvrir le fichier de chargement: couleur", dans polymode.el, il y a la ligne:

(require 'color)

ce paquet est dans Emacs 24, mais il pourrait bien manquer dans votre version.

Solution

  1. Passez à une version récente (donc prise en charge) d'Emacs.

  2. Extrayez le polymode.zip dans un répertoire où vous gardez le matériel Emacs, par exemple:

    ~\conf\emacs

et changez le polymode-masterrépertoire résultant enpolymode

  1. Ajoutez ceci dans votre fichier init (et si vous avez utilisé des noms différents ci-dessus, changez les noms ci-dessous en conséquence):

    ;; 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+ rmdlorsque le fichier Rmd est ouvert ou réglé le mode sur <!-- Local Variables: -->
    ... profitez d'un changement radical de votre productivité.

PS
Ne négligez pas la dernière ligne elisp. Cela permettra de sauvegarder correctement la démarque. Sinon, lorsque vous rouvrez votre doc, vous aurez de mauvaises surprises.

Une note aux utilisateurs de Windows

Ignorez ceci si vous êtes un gars Linux, mais, malgré la question mentionnant Ubuntu, ma réponse s'applique parfaitement à Windows Emacs aussi. Juste en ce qui concerne:

  • Étape 2) Vous extrairez polymode.zip dans:

    %USERPROFILE%\conf\emacs

    Comme vous le devinez, la variable d'environnement% USERPROFILE% contient le chemin d'accès à votre répertoire de profil utilisateur. Si vous n'êtes pas sûr de ce que c'est, exécutez set USERPROFILEdans l'invite CLI.
    En tant qu'utilisateur Windows, vous pouvez être utilisé pour stocker des éléments My Documents. Dans ce cas, votre répertoire sera:

    %USERPROFILE%\Documents\conf\emacs
  • Étape 3) Si à l'étape 2) vous avez utilisé le chemin %USERPROFILE%\Documents\conf\emacs, modifiez en conséquence la première ligne de code de:

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

    à (notez les barres obliques):

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

    Dans les deux cas (avec et sans "Mes documents"), vous préférerez peut-être le style plus Windows:

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