โหมด Emacs สำหรับมาร์กดาวน์ของ Stack Overflow


96

ฉันใช้โหมดองค์กรใน Emacs เพื่อจัดการเอกสารทางเทคนิคทั้งหมดของฉัน ฉันต้องการใช้ Emacs เพื่อเตรียมคำถามที่มีสำหรับ Stack Overflow มีโหมด Emacs สำหรับสิ่งนั้นหรือดีกว่านั้นคือส่วนขยายสำหรับโหมดองค์กรเพื่อจัดการการจัดรูปแบบ Stack Overflow หรือไม่ ตามหลักการแล้วควรมีตัวเลือกการจัดรูปแบบทั้งหมดที่สนับสนุนโดยไวยากรณ์ markdown ที่ใช้ในบัฟเฟอร์คำถาม / ข้อคิดเห็นของ Stack Overflow


ผู้ที่อ่านคำถามนี้อาจสนใจSX - Stack Exchange สำหรับ Emacs!
Sean Allred

คำตอบ:


144

การรวม Emacs กับ Stack Overflow

เป็นที่กล่าวถึงคุณสามารถใช้markdown โหมด ในการรวม markdown-mode เข้ากับ Stack Overflow คุณสามารถใช้ปลั๊กอิน Firefox It's All Textซึ่งให้คุณแก้ไข textareas ด้วยโปรแกรมแก้ไขภายนอก นี่คือวิธีการตั้งค่า:

  1. ติดตั้งMarkdown โหมด หากคุณใช้ Debian หรือ Ubuntu คุณสามารถติดตั้งได้โดยการออกไฟล์

    sudo apt-get install emacs-goodies-el
    

    หรือถ้าคุณใช้ emacs 24 (หรือมีpackage.elบน emacs 23) และMarmaladeหรือMelpaคุณสามารถติดตั้งได้ด้วย

    M-x package-install RET markdown-mode
    
  2. ติดตั้งมันทุกข้อความ

  3. ตั้งค่ากำหนดเป็นข้อความทั้งหมดเพื่อใช้ Emacs ทั้งที่คุณสามารถตั้งค่าให้ปฏิบัติการ (เช่น / usr / bin / emacs) หรือemacsclient
  4. เพิ่มสิ่งต่อไปนี้ใน. emac ของคุณเพื่อเปิดใช้งานโหมด markdown สำหรับพื้นที่ข้อความ Stack Overflow และ Stack Exchange:

    ;; Integrate Emacs with Stack Exchange https://stackoverflow.com/a/10386560/789593
    (add-to-list 'auto-mode-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" . markdown-mode))
    

    หรือหากas-external-alistมีการกำหนดไว้ - หากM-x describe-variable RET as-external-alistไม่ล้มเหลวมันอาจจะแทนที่auto-mode-alistไฟล์. มีรูปแบบที่แตกต่างกันเล็กน้อย (เป็นรายการคู่แทนรายการเซลล์ข้อเสีย) ดังนั้นสิ่งนี้จะได้ผล:

    (add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" markdown-mode))
    
  5. กดปุ่มแก้ไขสีน้ำเงินที่ด้านขวาล่างของพื้นที่ข้อความเพื่อแก้ไขผ่าน emacs ปุ่มแก้ไขสีน้ำเงินจะแสดงในภาพหน้าจอต่อไปนี้:

    ภาพหน้าจอของปุ่มแก้ไขสีน้ำเงินที่ด้านล่างขวาของพื้นที่ข้อความนี้

    ในภาพหน้าจอต่อไปนี้เป็นบัฟเฟอร์ Emacs ในโหมด markdown ที่แก้ไขโพสต์นี้:

    ภาพหน้าจอของบัฟเฟอร์ Emacs ในโหมด markdown เพื่อแก้ไขโพสต์นี้

  6. เมื่อคุณแก้ไขใน Emacs เสร็จแล้วให้บันทึกบัฟเฟอร์เพื่อส่งไปยัง Firefox

หากคุณต้องการฟังก์ชันนี้สำหรับโดเมนอื่น ๆ คุณต้องเปลี่ยน regexp ด้านบน สิ่งต่อไปนี้รู้จัก Stack Exchange, Stack Overflow, Ask Ubuntu และ Super User:

;; Integrate Emacs with Stack Exchange https://stackoverflow.com/a/10386560/789593
(add-to-list 'auto-mode-alist '("\\(stack\\(exchange\\|overflow\\)\\|superuser\\|askubuntu\\)\\.com\\.[a-z0-9]+\\.txt" . markdown-mode))

การใช้ markdown-mode กับ Org-mode

หากต้องการใช้ markdow โหมดกับองค์กรโหมดคุณสามารถใช้คุณลักษณะสำหรับการทำงานกับรหัสที่มา ด้วยวิธีนี้คุณสามารถรวมบล็อกการมาร์กดาวน์ไว้ในบัฟเฟอร์โหมดองค์กรของคุณซึ่งคุณสามารถแก้ไขได้ผ่านโหมด markdown คุณสามารถใช้งานได้ดังนี้:

  1. เมื่อในองค์กรโหมดบัฟเฟอร์ใส่ในการขึ้นบรรทัดใหม่และกด<s Tabซึ่งจะส่งผลให้

    #+begin_src 
    
    #+end_src
    
  2. ป้อนmarkdownหลังจาก#+begin_srcนั้นคุณจึงมี

    #+begin_src markdown
    
    #+end_src
    
  3. เมื่ออยู่ในบล็อกซอร์ส (ระหว่าง#+begin_src markdownและ#+end_src) กดC-c 'เพื่อแก้ไขบล็อกซอร์สด้วยโหมดมาร์คดาวน์

  4. แก้ไขบล็อกซอร์สในโหมด markdown

  5. กดC-c 'เพื่อกลับไปที่บัฟเฟอร์โหมดองค์กรและแทรกการแก้ไข ซึ่งอาจมีลักษณะเหมือนกับภาพหน้าจอต่อไปนี้:

    บัฟเฟอร์ในโหมดองค์กรแก้ไขบล็อกของโค้ดมาร์กดาวน์สำหรับโพสต์นี้


2
ถ้าคุณได้as-externalติดตั้ง (หรือnxhtml-modeที่ติดตั้งas-external) มันอาจจะสมบูรณ์ไม่สนใจการปรับตัวของคุณของauto-mode-alistตัวแปรที่คุณต้องการที่จะแก้ไขแล้วas-external-alistคือ
quodlibetor

@quodlibetor ฉันจะแก้ไขas-external-alistในลักษณะเดียวกันหรือไม่
NN

@NN มันเกือบจะเหมือนกันทุกประการ แต่คุณต้องใช้ระยะเวลาออกจากเซลล์ชั้นในฉันมีสิ่งนี้และมันใช้ได้ผลสำหรับฉัน:(add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+" markdown-mode))
quodlibetor

บางทีคุณสามารถอัปเดตคำตอบนี้เพื่อพูดถึงSX - Stack Exchange สำหรับ Emacs :)
Sean Allred

1
ไม่รองรับ All Text อีกต่อไปและจะไม่ทำงานกับ Firefox เวอร์ชันล่าสุด (57+)
Iain

14

มีโหมด markdown: http://jblevins.org/projects/markdown-mode/

โปรดดูhttp://emacswiki.org/emacs/MarkdownModeสำหรับการปรับแต่งบางอย่าง

และมีแบ็กเอนด์ markdown สำหรับเครื่องมือส่งออกใหม่ที่นี่: http://orgmode.org/w/?p=org-mode.git;a=blob_plain;f=contrib/lisp/org-md.el;hb= ศีรษะ

ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มcontrib/lisp/ไดเร็กทอรีในload-pathไฟล์.

แล้วและ(require 'org-export)(require 'org-md)

M-x org-md-export-to-markdown RET จะส่งออกไปยัง markdown



ฉันพบผู้ส่งออก org-markdown พื้นฐานรายหนึ่ง: github.com/alexhenning/ORGMODE-Markdown
Nate Parsons

4

คำตอบของ @ NN สามารถใช้ได้กับ Chrome ด้วยโดยมีการเปลี่ยนแปลงในรายละเอียดเหล่านี้

Chrome มีส่วนขยายEdit with Emacsซึ่งคล้ายกับ It's all text หลังจากติดตั้งแล้วคุณจะพบคำแนะนำเพิ่มเติมจากหน้าตัวเลือกส่วนขยาย

มีกลุ่มการปรับแต่ง emacs edit-serverพร้อมตัวเลือกที่สำคัญที่สุดคือการเปลี่ยนแปลงโหมดหลักต่อไซต์ได้รับการกำหนดค่าให้แตกต่างจากคำตอบของ @ NN:

(add-to-list 'edit-server-url-major-mode-alist
             '("^stackoverflow" . markdown-mode))

นอกจากนี้เพื่อให้เซิร์ฟเวอร์แก้ไขทำงานใน Terminal emacs ฉันต้องปิดใช้งานedit-server-new-frameตัวเลือกนี้


1

Pandocรองรับการอ่านชุดย่อยของโหมดองค์กรและสามารถส่งออกมาร์กดาวน์ได้

กล่าวอีกนัยหนึ่งคือคุณสามารถเขียนต่อในโหมดองค์กรรวมถึงการเขียนตัวเอียง / เช่นนี้ / จากนั้นส่งออกไปยัง markdown จาก emacs คุณสามารถแปลงเป็น markdown โดยเลือกภูมิภาคกดปุ่ม Cu MS- \ แล้วพิมพ์ pandoc -r org -t markdown เพื่อรับผลลัพธ์ดังนี้:

In other words, you can keep writing in org-mode, including writing italics *like this*, and then export to markdown.

หรือคุณสามารถบันทึกไฟล์และแปลงไฟล์ที่บรรทัดคำสั่ง


0

เป็นเรื่องง่ายด้วย Chrome ด้วย

นี่เป็นคำตอบน้อยกว่าการทดสอบโซลูชันของฉันโดยใช้ ปลั๊กอินEdit with Emacs chrome และ Emacs Edit Server ที่ กำหนดค่าให้ใช้markdown-mode สำหรับ Stackoverflow (และไซต์ Stackexchange อื่น ๆ ที่ฉันใช้) สิ่งที่ฉันต้องทำหลังจากติดตั้งส่วนขยายและตั้งค่าแพ็คเกจMELPA แล้ว

(setq edit-server-url-major-mode-alist
             '(("mail.google.com" . org-mode)
               ("stackoverflow\\.com" . markdown-mode)
               (".*\\.stackexchange\\.com" . markdown-mode)
               ("github\\.com" . markdown-mode)))

การสนับสนุนข้อความ Gmail

หมายเหตุในการตั้งค่าด้านบนฉันใช้โหมดองค์กรสำหรับข้อความ Gmail ยังคงต้องทำงานเล็กน้อยที่นี่ แต่เป็นไปได้ด้วยความพยายามเพียงเล็กน้อยในการร่างข้อความ Gmail ของคุณโดยใช้โหมดองค์กรจากนั้นใช้org-mimeเพื่อสร้าง html จากข้อความที่มีโครงสร้างองค์กรของคุณ คุณสามารถใช้ markdown และ markdown เพื่อแปลง html ได้

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