Làm nổi bật Markdown trong Emacs?


111

Có bất kỳ sửa đổi nào đối với một công cụ hiện có hoặc công cụ mới sẽ đánh dấu cú pháp (tô màu) các khối mã R trong tài liệu đánh dấu bằng dao khi được mở trong Emacs không?

Các khối nội y mà tôi đang xem là các khối ba chiều [```]có chứa mã R bên trong.

CHỈNH SỬA: những thứ mà tôi đã thử cho đến nay:

- Ubuntu 12.04 với Emacs 23

emacs --version
GNU Emacs 23.3.1

1. Polymode

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

Tôi đang cố gắng lấy polymode để đánh dấu cú pháp các tệp Rmd ​​của mình, nhưng nó phàn nàn về tệp tải 'màu':

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

Trong tệp .emacs của tôi:

(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 với Emacs 24:

emacs --version
GNU Emacs 24.2.1

1. Polymode được cài đặt đúng cách

Mở tệp Rmd M-x polymode-minor-mode, không có thay đổi nào đối với tô sáng cú pháp.


emacs --version
GNU Emacs 24.3.1

1. Polymode được cài đặt đúng cách

Mở tệp Rmd M-x poly-markdown+r-mode, một số tô sáng cú pháp bắt đầu xuất hiện, nhưng tôi cần sửa đổi thủ công kiểm tra trong mỗi khối mã ba dấu tích để nó hiển thị đầy đủ cú pháp.

Nhập mô tả hình ảnh tại đây

Nhập mô tả hình ảnh tại đây

Hình ảnh thứ hai là ngay sau khi nhập Return trước khối nội dung.


10
tôi rất muốn biết câu trả lời. Có những tin đồn dai dẳng rằng các anh chàng ESS sẽ làm được điều này, nhưng tôi vẫn chưa thấy nó ...
Ben Bolker

3
Tôi có một cái gì đó ở nhà về cơ bản hoạt động. Nó dựa trên chế độ mumamo và chế độ đánh dấu. Tuy nhiên, tôi đã phải thực hiện một vài thay đổi đối với chế độ mumamo để nó hoạt động, được giải thích ở đây: bug.launchpad.net/nxhtml/+bug/626039/comments/5 . Tôi sẽ theo dõi ở đây với câu trả lời sau khi tôi về nhà và nhớ lại những gì tôi đã làm.
Erik Iverson

4
Còn về Vitalie's thì sao polymode: github.com/vitoshka/polymode
daroczig

3
@daroczig - Thật thú vị. Bất kỳ ý tưởng nào của anh ấy về "Không có phụ trợ lập trình biết chữ", trong Cảnh báo của README ! phần?
Josh O'Brien

4
@ JoshO'Brien Trên thông báo trợ giúp của Vitalie, anh ấy giải thích ý của mình: "Rnw chỉ là một polymode. Ý tôi muốn nói về chương trình phụ trợ lập trình biết chữ là một công cụ có thể xử lý / chuyển đổi tệp thành một thứ khác. Chẳng hạn như đantr hoặc org- chế độ. Những ngày này, tôi sẽ kết nối ess-swv-wear và ess-swv-PDF trong các bản đồ đa chế độ liên quan đến R. Điều đó sẽ khá ổn trong thời gian tới bởi vì nội dung đó đủ thông minh để nhận ra những thứ mà nó đang xử lý. "
Erik Iverson

Câu trả lời:


3

Điều này có thể hữu ích: http://sjp.co.nz/posts/emacs-ess-knitr/

Knitr giảm giá trong Emacs thông qua ESS


Xin lỗi nhưng tài liệu tham khảo này là sai. Hiện tại Emacs-ESS không có đánh dấu cho các tài liệu Rmd hoặc thậm chí là đánh dấu đơn giản (và nhân tiện bài viết được liên kết của bạn không khẳng định như vậy). Đối với cái trước, bạn cần polymode và cho markdown.el sau này. Bên cạnh đó, nếu tất cả những gì bạn muốn là chỉ cần chuyển công cụ ESS từ Sweave sang jertr (không cần tô sáng!), Thì không cần phải trải qua tất cả những điều phức tạp của bài viết này, chỉ cần thêm (setq ess-swv-processor 'knitr)vào tệp init của bạn.
antonio

2

Vấn đề của bạn

Trước hết, bạn nói rằng bạn có GNU Emacs 23.3.1, nhưng trong polymode readme.mdđó, nó ghi:

Đã thử nghiệm với Emacs 24.3.1 và 24.4.5.

Còn về lỗi của bạn: "Không thể mở tệp tải: color", trong polymode.el, có dòng:

(require 'color)

gói này có trong Emacs 24, nhưng nó có thể bị thiếu trong phiên bản của bạn.

Giải pháp

  1. Nâng cấp lên phiên bản Emacs gần đây (do đó được hỗ trợ).

  2. Giải nén polymode.zip trong một thư mục mà bạn giữ tài liệu Emacs, ví dụ:

    ~\conf\emacs

và thay đổi polymode-masterdir kết quả thànhpolymode

  1. Thêm tên này vào tệp init của bạn (và nếu bạn đã sử dụng các tên khác ở trên, hãy thay đổi các tên bên dưới cho phù hợp):

    ;; 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+ rmdkhi tệp Rmd ​​được mở hoặc đặt chế độ ở <!-- Local Variables: -->
    ... tận hưởng sự thay đổi đáng kể trong năng suất của bạn.

PS
Đừng bỏ qua dòng elisp cuối cùng. Nó sẽ cho phép lưu đánh dấu đúng cách. Nếu không, khi bạn mở lại tài liệu của mình, bạn sẽ có những bất ngờ khó chịu.

Một lưu ý cho người dùng Windows

Bỏ qua điều này nếu bạn là một người thích Linux, nhưng, mặc dù câu hỏi đề cập đến Ubuntu, câu trả lời của tôi cũng áp dụng hoàn hảo cho Windows Emacs. Chỉ liên quan đến:

  • Bước 2) Bạn sẽ giải nén polymode.zip trong:

    %USERPROFILE%\conf\emacs

    Như bạn đoán, biến môi trường% USERPROFILE% chứa đường dẫn đến thư mục hồ sơ người dùng của bạn. Nếu bạn không chắc đó là gì, hãy thực thi set USERPROFILEtrong dấu nhắc CLI.
    Là người dùng Windows, bạn có thể được sử dụng để lưu trữ mọi thứ My Documents. Trong trường hợp đó dir của bạn sẽ là:

    %USERPROFILE%\Documents\conf\emacs
  • Bước 3) Nếu ở Bước 2) bạn đã sử dụng đường dẫn %USERPROFILE%\Documents\conf\emacs, hãy thay đổi phù hợp dòng mã đầu tiên từ:

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

    để (lưu ý các dấu gạch chéo):

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

    Trong cả hai trường hợp (có và không có "Tài liệu của tôi"), bạn có thể thích kiểu Windows hơn:

    (setq MY-EMACS (substitute-in-file-name "$USERPROFILE/Documents/conf/emacs")) 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.