knitr Markdown menyoroti di Emacs?

111

Apakah ada modifikasi alat yang sudah ada atau alat baru yang akan menyorot sintaks (warna) blok kode R dalam dokumen penurunan harga knitr saat dibuka di Emacs?

Potongan knitr yang saya lihat adalah blok triple-backtick [```]yang berisi kode R di dalamnya.

EDIT: hal-hal yang saya coba sejauh ini:

- Ubuntu 12.04 dengan Emacs 23

emacs --version
GNU Emacs 23.3.1

1. Polimode

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

Saya mencoba mendapatkan polymode untuk menyorot file Rmd saya, tetapi ini mengeluh tentang file pemuatan 'warna':

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

Di file .emacs saya:

(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 dengan Emacs 24:

emacs --version
GNU Emacs 24.2.1

1. Polymode dipasang dengan benar

Buka file Rmd`` M-x polymode-minor-modetidak ada perubahan pada penyorotan sintaks.


emacs --version
GNU Emacs 24.3.1

1. Polymode dipasang dengan benar

Buka file Rmd`` M-x poly-markdown+r-modebeberapa penyorotan sintaks mulai muncul, tetapi saya perlu memodifikasi tes secara manual di setiap blok kode tiga centang agar dapat sepenuhnya menampilkan sintaksis.

Masukkan deskripsi gambar di sini

Masukkan deskripsi gambar di sini

Gambar kedua adalah setelah mengetikkan Kembali sebelum blok knitr.

719016
sumber
10
saya ingin tahu jawabannya. Ada desas-desus yang terus-menerus bahwa orang-orang ESS akan menyiasati ini, tetapi saya belum melihatnya ...
Ben Bolker
3
Saya memiliki sesuatu di rumah yang pada dasarnya berfungsi. Ini didasarkan pada mode mumamo dan mode penurunan harga. Saya harus membuat beberapa perubahan pada mumamo-mode untuk membuatnya berfungsi, dijelaskan di sini: bugs.launchpad.net/nxhtml/+bug/626039/comments/5 . Saya akan menindaklanjuti di sini dengan jawaban setelah saya pulang dan mengingat apa yang saya lakukan.
Erik Iverson
4
Bagaimana dengan Vitalie's polymode: github.com/vitoshka/polymode
daroczig
3
@daroczig - Menarik. Tahu apa yang dia maksud dengan "Tidak ada backend pemrograman melek", di Peringatan README ! bagian?
Josh O'Brien
4
@ JoshO'Brien Tentang pengumuman ess-help Vitalie, dia menjelaskan apa yang dia maksud: "Rnw hanyalah sebuah polymode. Yang saya maksud dengan backend pemrograman literate adalah alat yang dapat memproses / mengubah file menjadi sesuatu yang lain. Seperti knitr atau org- mode. Saya akan mengaitkan hari-hari ini ess-swv-weave dan ess-swv-PDF di peta polymode terkait R. Itu seharusnya cukup baik untuk saat ini karena knitr cukup pintar untuk mengenali hal-hal yang berhubungan dengannya. "
Erik Iverson

Jawaban:

3

Ini mungkin membantu: http://sjp.co.nz/posts/emacs-ess-knitr/

Penurunan harga Knitr di Emacs melalui ESS

priyolahiri
sumber
Maaf tapi referensi ini salah. Saat ini Emacs-ESS tidak memiliki penyorotan untuk dokumen Rmd atau bahkan penurunan harga sederhana (dan omong-omong artikel tertaut Anda tidak mengklaimnya). Adapun yang pertama Anda membutuhkan polymode dan yang terakhir markdown.el. Selain itu, jika yang Anda inginkan hanyalah mengganti mesin ESS dari Sweave ke knitr (tanpa menyorot!), Tidak perlu melalui semua kerumitan artikel ini, cukup tambahkan (setq ess-swv-processor 'knitr)file init Anda.
antonio
2

Masalahmu

Pertama-tama, Anda mengatakan Anda memiliki GNU Emacs 23.3.1, tetapi di polymode readme.mddalamnya tertulis:

Diuji dengan Emacs 24.3.1 dan 24.4.5.

Untuk kesalahan Anda: "Tidak dapat membuka file: warna", di dalam polymode.el, ada baris:

(require 'color)

paket ini ada di Emacs 24, tetapi mungkin terlewat di versi Anda.

Larutan

  1. Tingkatkan ke versi terbaru (didukung) dari Emacs.

  2. Ekstrak polymode.zip di direktori tempat Anda menyimpan materi Emacs, misalnya:

    ~\conf\emacs

dan ubah polymode-masterdir yang dihasilkan menjadipolymode

  1. Tambahkan ini di file init Anda (dan jika Anda menggunakan nama yang berbeda di atas, ubah nama di bawah):

    ;; 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+ rmdketika file Rmd terbuka atau atur modenya <!-- Local Variables: -->
    ... nikmati perubahan dramatis dalam produktivitas Anda.

PS
Jangan mengabaikan garis elisp terakhir. Ini akan memungkinkan untuk menyimpan penurunan harga dengan benar. Jika tidak, saat Anda membuka kembali dokumen Anda, Anda akan mendapatkan kejutan yang tidak menyenangkan.

Catatan untuk pengguna Windows

Lewati ini jika Anda seorang pria Linux, tetapi, meskipun ada pertanyaan yang menyebutkan Ubuntu, jawaban saya juga berlaku untuk Windows Emacs. Hanya sehubungan dengan:

  • Langkah 2) Anda akan mengekstrak polymode.zip di:

    %USERPROFILE%\conf\emacs

    Seperti yang Anda tebak, variabel lingkungan% USERPROFILE% berisi jalur ke direktori profil pengguna Anda. Jika Anda tidak yakin apa itu, jalankan set USERPROFILEdi CLI prompt.
    Sebagai pengguna Windows, Anda mungkin terbiasa menyimpan sesuatu My Documents. Dalam hal ini dir Anda akan menjadi:

    %USERPROFILE%\Documents\conf\emacs
  • Langkah 3) Jika pada Langkah 2) Anda menggunakan jalur %USERPROFILE%\Documents\conf\emacs, ubah sesuai baris kode pertama dari:

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

    ke (perhatikan garis miringnya):

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

    Dalam kedua kasus (dengan dan tanpa "Dokumen Saya"), Anda mungkin lebih memilih gaya Windows lainnya:

    (setq MY-EMACS (substitute-in-file-name "$USERPROFILE/Documents/conf/emacs")) 
antonio
sumber