Emacs में हाइलाइट मार्किट?


111

क्या किसी मौजूदा टूल या नए टूल का कोई संशोधन है जो Emacs में खोले जाने पर एक निट मार्कडाउन डॉक्यूमेंट में R कोड के सिंटैक्स-हाइलाइट (रंग) ब्लॉक करेगा?

मैं देख रहा हूँ knitr विखंडू ट्रिपल- backtick ब्लॉक है [```]कि अंदर आर कोड होते हैं।

संपादित करें: चीजें हैं जो मैंने अब तक की कोशिश की:

- Emacs 23 के साथ Ubuntu 12.04

emacs --version
GNU Emacs 23.3.1

1. पॉलीमोड

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

मैं अपनी Rmd फ़ाइलों को सिंटैक्स-हाइलाइट करने के लिए पॉलीमोड प्राप्त करने की कोशिश कर रहा हूं, लेकिन यह 'रंग' लोड फ़ाइल के बारे में शिकायत कर रहा है:

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

- Emacs 24 के साथ CentOS :

emacs --version
GNU Emacs 24.2.1

1. पॉलीमोड सही ढंग से स्थापित

Rmd फ़ाइल खोलें M-x polymode-minor-mode, सिंटैक्स हाइलाइटिंग में कोई परिवर्तन नहीं।


emacs --version
GNU Emacs 24.3.1

1. पॉलीमोड सही ढंग से स्थापित

एक आरएमडी फ़ाइल खोलें M-x poly-markdown+r-mode, कुछ सिंटैक्स हाइलाइटिंग दिखाई देने लगती है, लेकिन मुझे सिंटैक्स को पूरी तरह से दिखाने के लिए कोड के प्रत्येक ट्रिपल-टिक ब्लॉक में मैन्युअल रूप से परीक्षण को संशोधित करने की आवश्यकता है।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

निट्रा ब्लॉक से पहले रिटर्न टाइप करने के बाद दूसरी छवि है।


10
मुझे उत्तर जानना अच्छा लगेगा। लगातार अफवाहें हैं कि ईएसएस के लोग इस के आसपास मिलेंगे, लेकिन मैंने इसे अभी तक नहीं देखा है ...
बेन बोल्कर

3
मेरे पास घर पर कुछ है जो मूल रूप से काम करता है। यह मूमो-मोड और मार्कडाउन-मोड पर आधारित है। मुझे इसे काम करने के लिए मूमो-मोड में कुछ बदलाव करना पड़ा, हालांकि, यहाँ समझाया गया है: Bugs.launchpad.net/nxhtml/+bug/626039/comments/5 । मैं घर आने के बाद एक उत्तर के साथ यहां आऊंगा और याद रखूंगा कि मैंने क्या किया।
एरिक इवरसन

4
विटाली के बारे में क्या है polymode: github.com/vitoshka/polymode
daroczig

3
@daroczig - दिलचस्प। README की चेतावनी में "नो लिटरेट प्रोग्रामिंग बैकेंड्स" के द्वारा किसी भी विचार का क्या मतलब है ! अनुभाग?
जोश ओ'ब्रायन

4
@ जोश'ब्रायन विटाली की सहायता-सहायता की घोषणा पर, वह स्पष्ट करते हैं कि उनका क्या मतलब है: "Rnw सिर्फ एक पॉलीमोड है। मेरा मतलब है कि साक्षर प्रोग्रामिंग बैकएंड एक उपकरण है जो फ़ाइल को किसी अन्य चीज़ में संसाधित / परिवर्तित कर सकता है। जैसे निट या ऑर्ग-। मोड। मैं इन दिनों आर-संबंधित पॉलीमोड मैप्स में निबंध-स्व-बुनाई और निबंध-स्व-पीडीएफ को हुक करूंगा। यह समय के लिए काफी ठीक होना चाहिए क्योंकि निट स्मार्ट है जो उस सामान को पहचानने के लिए पर्याप्त है। "
एरिक इवरसन

जवाबों:


3

यह मदद कर सकता है: http://sjp.co.nz/posts/emacs-ess-knitr/

ईएसएस के माध्यम से एमएसीएस में निट्र मार्कडाउन


क्षमा करें, लेकिन यह संदर्भ गलत है। वर्तमान में Emacs-ESS में Rmd दस्तावेजों या साधारण मार्कडाउन के लिए कोई हाइलाइटिंग नहीं है (और जिस तरह से आपका लिंक किया गया लेख दावा नहीं करता है)। पूर्व के लिए आपको पॉलीमोड की आवश्यकता है और बाद के मार्कडाउन के लिए। इसके अलावा, यदि आप चाहते हैं कि स्वेव से निट (हाइलाइटिंग के बिना) ईएसएस इंजन को स्विच करना है, तो इस लेख की सभी जटिलताओं से गुजरने की कोई जरूरत नहीं है, बस (setq ess-swv-processor 'knitr)आप इनिट फाइल में जोड़ें ।
एंटोनियो

2

तुम्हारी समस्या

सबसे पहले, आप कहते हैं कि आपके पास GNU Emacs 23.3.1 है, लेकिन polymode readme.mdइसमें लिखा है:

24.3.1 और 24.4.5 Emacs के साथ परीक्षण किया गया।

आपकी त्रुटि के लिए: "लोड फ़ाइल नहीं खोल सकता: रंग", में polymode.el, लाइन है:

(require 'color)

यह पैकेज Emacs 24 में है, लेकिन यह आपके संस्करण में अच्छी तरह से छूट सकता है।

उपाय

  1. Emacs के हाल के (इसलिए समर्थित) संस्करण का नवीनीकरण करें।

  2. Polymode.zip को उस निर्देशिका में निकालें जहाँ आप Emacs सामग्री रखते हैं, उदा:

    ~\conf\emacs

और परिणामी polymode-masterडायर को बदल देंpolymode

  1. इसे अपने इनिट फ़ाइल में जोड़ें (और यदि आपने ऊपर अलग-अलग नामों का उपयोग किया है, तो नीचे दिए गए नाम बदलें):

    ;; 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: -->
    ... अपनी उत्पादकता में एक नाटकीय बदलाव का आनंद लें।

PS
अंतिम लकीर को नजरअंदाज न करें। यह ठीक से मार्कडाउन को बचाने की अनुमति देगा। अन्यथा, जब आप अपने डॉक्टर को फिर से खोलेंगे, तो आपको अप्रिय आश्चर्य होगा।

विंडोज उपयोगकर्ताओं के लिए एक नोट

इसे छोड़ें यदि आप एक लिनक्स आदमी हैं, लेकिन, प्रश्न के उबंटू का उल्लेख करने के बावजूद, मेरा उत्तर विंडोज इमैक पर भी पूरी तरह से लागू होता है। बस सम्मान के साथ:

  • चरण 2) आप polymode.zip को इसमें निकालेंगे :

    %USERPROFILE%\conf\emacs

    जैसा कि आप अनुमान लगाते हैं, पर्यावरण चर USERPROFILE% में आपकी उपयोगकर्ता प्रोफ़ाइल निर्देशिका में पथ समाहित है। यदि आप सुनिश्चित नहीं हैं कि यह क्या है, set USERPROFILEतो CLI प्रॉम्प्ट में निष्पादित करें ।
    एक विंडोज यूजर के रूप में आपको चीजों को स्टोर करने के लिए इस्तेमाल किया जा सकता है 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")) 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.