Emacs बफर में रेंडर मार्कडाउन




elisp markdown (7)

क्या यह संभव है कि मार्काड को Emacs की अपनी बफर टेक्स्ट फॉर्मेटिंग क्षमताओं का उपयोग करके Emacs बफर में प्रस्तुत किया जाए? चित्रमय वातावरण में Emacs में समृद्ध पाठ प्रस्तुति क्षमताएं (फ़ॉन्ट शैली, रंग, लिंक और यहां तक ​​कि चित्र) हैं, इसलिए यह काफी संभव होना चाहिए। क्या कोई मौजूदा कार्यान्वयन हैं?

ध्यान दें कि यह विचार है कि प्रदान किए गए मार्काडाउन में मूल Emacs स्वरूपित पाठ है जिसे Emacs में किसी अन्य पाठ के रूप में नेविगेट और संचालित किया जा सकता है। इसलिए समाधान जो एक छवि को एक एमएसीएस बफर में एम्बेड किया गया है, वह यहां वांछनीय नहीं है।

यह भी ध्यान दें कि यह Markdown के संपादन के लिए एक मोड के बारे में नहीं है , बल्कि Emacs बफर में प्रदान किए गए Markdown को प्रस्तुत करने के लिए है। यह अधिमानतः पोर्टेबिलिटी के लिए एक शुद्ध Emacs लिस्प समाधान होना चाहिए।


संदर्भ के आधार पर, जहां आप रेंडर किए गए टेक्स्ट को देखना चाहते हैं, आप मार्कड-मोड के फॉन्ट-लॉक नियमों को सिर्फ ट्विक करने की आवश्यकता के बहुत करीब पहुंच सकते हैं।


pretty-lambda (जो पहले ही कई बार सुझाया जा चुका है) के अलावा, आप ऑर्ग-मोड और इसके सिंटैक्स हाइलाइटिंग नियमों को देख सकते हैं। विशेष रूप से, org-hide-emphasis-markers चर आपको या तो कम या ज्यादा करना चाहता है (उदाहरण के लिए org-do-emphasis-faces मार्कअप पात्रों को कैसे देखें)।


मुझे लगता है कि आप latex-preview के स्रोत कोड का उपयोग प्रेरणा या pretty-lambda (सॉफ्टवेयर का एक बहुत सरल टुकड़ा) के लिए कर सकते हैं।

वैकल्पिक रूप से आप मार्कडाउन को एक पृष्ठभूमि प्रक्रिया में HTML में बदल सकते हैं और HTML का पूर्वावलोकन कर सकते हैं।

Emacs में सब कुछ संभव है, लेकिन सब कुछ आसानी से हासिल नहीं किया जाता है :-)


यदि यह केवल रेंडरिंग के बारे में है, तो Bozhidar के सुझाव के साथ जाएं और HTML रूपांतरण में मार्कडाउन करें, फिर W3 बफर में HTML प्रदर्शित करें। markdown-mode में कुछ अच्छाइयों के साथ बाहरी Markdown कमांड को कॉल करने के लिए कोड है।

लेकिन अगर आप वास्तव में Emacs Lisp के भीतर सब कुछ करना चाहते हैं, तो आपको पहले एक Markdown parser लिखना होगा।


मुझे भी, मैं एक बहुत लंबे समय के लिए कुछ इस तरह की तलाश में था। सबसे अच्छा मुझे मिल सकता है, हालांकि, Emacs समाधान नहीं है, यह ReText नामक सॉफ्टवेयर का एक स्वतंत्र महान टुकड़ा है।


व्यक्तिगत, मैं निम्नलिखित वर्कफ़्लो का उपयोग करता हूं:

  • मौजूदा बफ़र पर मार्कडाउन को चलाने के लिए Cc Cc m पर रन करें और आउटपुट को दूसरे बफ़र में पूर्वावलोकन करें।
  • इस अन्य बफ़र पर Mx html-mode ( Mx html-mode )
  • आउटपुट के करीब कुछ प्रदर्शित करने के लिए html टैग छिपाएं ( Mx sgml-tags-invisible )

फिर हर बार जब आप रेंडरिंग को रिफ्रेश करना चाहते हैं, तो मार्कड बफर पर फिर से Cc Cc m चलाएं।

फिर भी मैं मार्कडाउन संपादन / पूर्वावलोकन के लिए अब तक कबूल करता हूं, मेरे लिए कुछ भी नहीं है टेक्स्टमेट और इसके मार्कडाउन पूर्वावलोकन पैनल। दरअसल, एक व्यक्तिगत परिप्रेक्ष्य में, एकमात्र मामला जहां मैं Emacs के बजाय टेक्स्टमेट को चलाना पसंद करता हूं, जब मैं मार्कडाउन फ़ाइलों को संपादित करना चाहता हूं। फिर भी Emacs पर पूर्वावलोकन का समान गुण होने का मार्ग इतना कठिन नहीं है और शायद मुझे इसकी जांच करनी चाहिए। जैसा कि मैंने देखा है, यह बस है:

  • पूर्वावलोकन प्रस्तुत करने के लिए Textmate द्वारा इस्तेमाल किया आंतरिक सीएसएस प्राप्त करें
  • इस सीएसएस का उपयोग करके मार्कडाउन आउटपुट का पूर्वावलोकन करने के लिए w3 या w3m का उपयोग करें

मेरे पास मेरी .emacs फ़ाइल में यह है:

(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(markdown-header-delimiter-face ((t (:inherit font-lock-function-name-face :underline t :weight bold))) t)
 '(markdown-header-face-1 ((t (:inherit markdown-header-face :height 1.5))) t)
 '(markdown-header-face-2 ((t (:inherit markdown-header-face :height 1.3))) t)
 '(markdown-header-face-3 ((t (:inherit markdown-header-face :underline t :height 1.2))) t)
 '(markdown-header-face-4 ((t (:inherit markdown-header-face :underline t :height 1.1))) t)
 '(markdown-header-face-5 ((t (:inherit markdown-header-face :underline t))) t)
 '(markdown-header-face-6 ((t (:inherit markdown-header-face :underline t))) t))
(put 'set-goal-column 'disabled nil)

जो सभी सुर्खियों में विस्तार करता है। मार्कडाउन-मोड स्वयं तारांकित पाठ और बोल्डफेस डबल-तारांकित पाठ को इटैलिकाइज करेगा, इसलिए यह आपको वहां मिलेगा। हालाँकि, यह नियंत्रण वर्णों को अदृश्य नहीं करेगा।

यदि आप ऐसा चाहते हैं, तो आपको उदाहरण के लिए pretty-lambda लंबोदर में देखना चाहिए (जैसा कि बोहिदर बटसुव ने सुझाव दिया )





markdown