web-dev-qa-db-fra.com

Knitr Markdown surligné dans Emacs?

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 de démarque knitr lorsqu'il est ouvert dans Emacs?

Les morceaux de knitr que je regarde sont des blocs à triple réticule [```] contenant du code R à l'intérieur.

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

bunt 12.04 avec Emacs 23

emacs --version
GNU Emacs 23.3.1

1. Polymode

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

J'essaie d'obtenir le 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-mode, aucune modification de la coloration syntaxique.


emacs --version
GNU Emacs 24.3.1

1. Polymode installé correctement

Ouvrez un fichier Rmd, M-x poly-markdown+r-mode, une partie de la coloration syntaxique commence à apparaître, mais je dois modifier manuellement le test dans chaque bloc de code à triple tick pour qu'il affiche complètement la syntaxe.

Enter image description here

Enter image description here

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

111
719016

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

Démarque Knitr dans Emacs via ESS

3
priyolahiri

Ton problème

Tout d'abord, vous dites que vous avez GNU Emacs 23.3.1, mais dans polymodereadme.md, ça 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. Mettez à niveau vers une version récente (donc prise en charge) d'Emacs.

  2. Extraire le polymode.Zip dans un répertoire où vous conservez le matériel Emacs, par exemple:

    ~\conf\emacs
    

et modifiez le polymode-master dir à polymode

  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+ rmd lorsque le fichier Rmd est ouvert ou définissez le mode dans <!-- Local Variables: -->
    ... profitez d'un changement spectaculaire de votre productivité.

[~ # ~] ps [~ # ~]
Ne négligez pas la dernière ligne Elisp. Cela permettra d'enregistrer correctement la démarque. Sinon, lorsque vous rouvrirez 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 également parfaitement à Windows Emacs. En ce qui concerne:

  • Étape 2) Vous allez extraire 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 USERPROFILE dans l'invite CLI.
    En tant qu'utilisateur Windows, vous pourriez être utilisé pour stocker des choses dans My Documents. Dans ce cas, votre dir 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") 
    

    à (noter 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")) 
    
2
antonio