นักถัก Markdown เน้นใน Emacs?


111

มีการปรับเปลี่ยนเครื่องมือที่มีอยู่หรือเครื่องมือใหม่ที่จะเน้นไวยากรณ์ (สี) บล็อกของรหัส R ในเอกสารถักมาร์กดาวน์เมื่อเปิดใน Emacs หรือไม่

ชิ้นถักที่ฉันกำลังดูอยู่คือบล็อกสามด้านหลัง[```]ที่มีรหัส R อยู่ข้างใน

แก้ไข:สิ่งที่ฉันพยายามจนถึงตอนนี้:

- Ubuntu 12.04 พร้อม Emacs 23

emacs --version
GNU Emacs 23.3.1

1. Polymode

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

ฉันกำลังพยายามรับ polymode เพื่อเน้นไวยากรณ์ - เน้นไฟล์ 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. Polymode ติดตั้งอย่างถูกต้อง

เปิดไฟล์ Rmd M-x polymode-minor-modeโดยไม่มีการเปลี่ยนแปลงการเน้นไวยากรณ์


emacs --version
GNU Emacs 24.3.1

1. Polymode ติดตั้งอย่างถูกต้อง

เปิดไฟล์ Rmd M-x poly-markdown+r-modeการไฮไลต์ไวยากรณ์บางส่วนเริ่มปรากฏขึ้น แต่ฉันต้องแก้ไขการทดสอบด้วยตนเองในแต่ละบล็อกสามขีดของโค้ดเพื่อให้แสดงไวยากรณ์ได้เต็มที่

ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่

ภาพที่สองคือหลังจากพิมพ์ Return ก่อนบล็อก Knitr


10
ฉันชอบที่จะรู้คำตอบ มีข่าวลืออย่างต่อเนื่องว่าพวก ESS จะไปถึงเรื่องนี้ แต่ฉันยังไม่เห็น ...
Ben Bolker

3
ฉันมีบางอย่างที่บ้านที่ใช้งานได้โดยทั่วไป มันขึ้นอยู่กับโหมด mumamo และโหมด markdown ผมต้องทำการเปลี่ยนแปลงคู่จะ mumamo โหมดที่จะได้ไปทำงาน แต่อธิบายที่นี่: bugs.launchpad.net/nxhtml/+bug/626039/comments/5 ฉันจะติดตามผลที่นี่พร้อมคำตอบหลังจากกลับถึงบ้านและจำสิ่งที่ทำ
Erik Iverson

4
แล้ว Vitalie's ล่ะpolymode: github.com/vitoshka/polymode
daroczig

3
@daroczig - น่าสนใจ ความคิดใด ๆ ที่เขาหมายถึงโดย "ไม่มีแบ็กเอนด์การเขียนโปรแกรมที่มีความรู้" ในคำเตือนของ README ! มาตรา?
Josh O'Brien

4
@ JoshO'Brien ในการประกาศความช่วยเหลือด้านเรียงความของ Vitalie เขาชี้แจงว่าเขาหมายถึงอะไร: "Rnw เป็นเพียงรูปแบบหลายรูปแบบสิ่งที่ฉันหมายถึงโดยแบ็กเอนด์การเขียนโปรแกรมแบบรู้หนังสือคือเครื่องมือที่สามารถประมวลผล / แปลงไฟล์เป็นอย่างอื่นเช่น knitr หรือ org- วันนี้ฉันจะขอ ess-swv-woven และ ess-swv-PDF ในแผนที่ polymode ที่เกี่ยวข้องกับ R ซึ่งก็น่าจะโอเคสำหรับเวลาที่เป็น knitr ฉลาดพอที่จะจดจำสิ่งที่กำลังจัดการอยู่ "
Erik Iverson

คำตอบ:


3

สิ่งนี้อาจช่วยได้: http://sjp.co.nz/posts/emacs-ess-knitr/

Knitr markdown ใน Emacs ผ่าน ESS


ขออภัยการอ้างอิงนี้ไม่ถูกต้อง ปัจจุบัน Emacs-ESS ไม่มีการเน้นสำหรับเอกสาร Rmd หรือแม้แต่การทำเครื่องหมายง่ายๆ (และโดยวิธีที่บทความที่เชื่อมโยงของคุณไม่ได้อ้างสิทธิ์เช่นนั้น) สำหรับอดีตคุณต้องใช้ polymode และสำหรับ markdown.el หลัง นอกจากนี้หากคุณต้องการเพียงแค่เปลี่ยนเอ็นจิ้น ESS จาก Sweave เป็น knitr (โดยไม่ต้องเน้น!) คุณไม่จำเป็นต้องทำอะไรให้ยุ่งยากในบทความนี้เพียงแค่เพิ่ม(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. อัปเกรด Emac เป็นเวอร์ชันล่าสุด (จึงได้รับการสนับสนุน)

  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: -->
    ... เพลิดเพลินไปกับการเปลี่ยนแปลงอย่างมากในผลผลิตของคุณ

ปล.
อย่ามองข้ามบรรทัดสุดท้ายของ elisp จะอนุญาตให้บันทึก markdown ได้อย่างถูกต้อง มิฉะนั้นเมื่อคุณเปิดเอกสารขึ้นมาใหม่คุณจะต้องพบกับความประหลาดใจที่ไม่พึงประสงค์

หมายเหตุสำหรับผู้ใช้ 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")) 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.