एलीश में हेरेडोक या समकक्ष मल्टीलाइन स्ट्रिंग सिंटैक्स?


10

आम-लिस्प में हमारे पास पुस्तकालय सीएल- हेरेडोक है, क्या एमैक्स्लिस्प में एक समान है?


Emacs लिस्प में रीडर मैक्रोज़ नहीं हैं, इसलिए, मेरे सिर के ऊपर से मैं कहूंगा कि नहीं, वहाँ नहीं है। लेकिन हो सकता है कि अगर आप इस बारे में भी विस्तार से बताएं कि आप इनसे क्या करने जा रहे हैं तो एक वैकल्पिक तरीका हो सकता है।
wvxvw

1
@wvxvw मैं शायद वही कर सकता हूं जो मुझे एक बहुस्तरीय उद्धृत स्ट्रिंग के साथ चाहिए, बस आंतरिक उद्धरण से बचना एकमात्र जलन है।
ओसोडो

3
ठीक है, एलीस्प में तार बहुस्तरीय होते हैं। उद्धरण के अंदर उद्धरणों को संभालने का एक तरीका कुछ इस तरह होगा (format "next word is quoted %S" "word")
wvxvw

@wvxvw मुझे नहीं पता था कि% S ने ऐसा किया है, मैं इसे आजमाऊंगा। आदर्श लगता है धन्यवाद! इसे एक उत्तर दें, और मैं इसे स्वीकार करूंगा।
ओसोडो

"% S" सीएल format ~sनिर्देश (यानी prin1) के समान है । तो, यह अपने तर्क को एक तरह से पाठक के लिए उपयुक्त होगा, जो कि उद्धरणों के साथ होगा।
wvxvw

जवाबों:


6

साधारण Emacs लिस्प तार बहु-लाइन-सक्षम हैं। आप बस उन में नई सुर्खियाँ डाल सकते हैं।

गौर से देखने पर cl-heredocलगता है कि आप जिस चीज की तलाश कर रहे हैं वह "कच्ची" है। थोड़ी देर पहले इनको जोड़ने का प्रस्ताव था, लेकिन दुर्भाग्य से इसे अस्वीकार कर दिया गया। (मुझे आशा है कि उम्मीद के बजाय इसे पुनर्जीवित किया जा सकता है।) न ही elisp के पास इस अपनों को लागू करने के लिए आवश्यक रीडर एक्स्टेंसिबिलिटी विशेषताएं हैं।


पिछली बार उपयोगकर्ता द्वारा परिभाषित पाठक मैक्रोज़ का विषय आया था, हर कोई इसके पक्ष में लग रहा था। इसलिए मुझे यकीन है कि एकमात्र बाधा मानवीय प्रयास है।
मालाबार

2

यदि आप एक init.el फ़ाइल के माध्यम से emacs कॉन्फ़िगर कर रहे हैं तो आप इसके बजाय init.org का उपयोग करने पर विचार कर सकते हैं ।

तो आप निम्न की तरह निर्माण का उपयोग कर सकते हैं:

#+NAME: arbitrary-text
#+begin_src xml
<some>
  <random src="xml">or whatever... includes syntax highlighting!</random>
</some>
#+end_src


#+begin_src emacs-lisp :var arb-text=arbitrary-text
(eval `(defun a-test ()
         (format "whoop there it is: %S" ,arb-text)))
#+end_src

यदि आप उत्पन्न .elफ़ाइल में देखते हैं तो आपको कुछ इस तरह दिखाई देगा:

(let ((arb-text "escaped text here..."))
  (eval `(defun a-test ()
           (format "whoop there it is: %S" ,arb-text))))

आप किसी भी क्रम में पाठ और कोड डाल सकते हैं। आप ऑर्ग लिस्ट, टेबल आदि में नाम जोड़ सकते हैं।

यदि यह एक ऐसी लाइब्रेरी के लिए है जहाँ आप सहयोगियों को 'साक्षर प्रोग्रामिंग' का उपयोग करने के लिए बाध्य नहीं करना चाहते हैं, तो आप कोड के थोक को एक .elफ़ाइल में डाल सकते हैं और .elऑर्ग का उपयोग करके एक सहायक फ़ाइल उत्पन्न कर सकते हैं - उत्पन्न कोड को संशोधन नियंत्रण में जांचें।


3
शायद मुझे कुछ याद आ रहा है, लेकिन मैं यह नहीं देखता कि init.org को मल्टी लाइन स्ट्रिंग्स के साथ क्या करना है।
मालाबार

1
@ मलबर्बा: टीएल; डॉ।: यदि आप ऑर्ग-मोड में अपनी लिखावट लिखते हैं, तो आप कुछ हल कर सकते हैं, जो हेरेडकोस की याद दिलाता है; अन्यथा, आपको अपने मल्टी-लाइन स्ट्रिंग शाब्दिक के अंदर कुछ सामान ` and
बचाना है

यह समस्या का एक दिलचस्प तरीका है, लेकिन मेरे मामलों के लिए थोड़ा बहुत जटिल है।
ओसोडो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.