एक चर फ़ाइल नाम पर उलझन करने के लिए ऑर्ग बैबेल का उपयोग करना


16

अगर मेरे पास एक कोड स्निपेट है जिसे मैं किसी फ़ाइल में उलझ जाता हूं, लेकिन मुझे समय के साथ फ़ाइल नाम बदलने की उम्मीद है, क्या क्वेरी-प्रतिस्थापित की तुलना में फ़ाइल नाम बदलने के लिए कोई क्लीनर तरीका है?

उदाहरण के लिए, मैं ~ / dir / my-file.el को टैंगल कोड कहता हूं:

#+BEGIN_SRC emacs-lisp :tangle ~/dir/my-file.el
(setq myvar1 "value1")
#+END_SRC

#+BEGIN_SRC emacs-lisp :tangle ~/dir/my-file.el
(defun foo (bar) ... )
#+END_SRC

etc.

फिर बाद में मुझे एहसास हुआ कि फ़ाइल को किसी अन्य स्थान पर रखा जाना बेहतर होगा:

#+BEGIN_SRC emacs-lisp :tangle ~/dir/my/file.el
(setq myvar1 "value1")
#+END_SRC

#+BEGIN_SRC emacs-lisp :tangle ~/dir/my/file.el
(defun foo (bar) ... )
#+END_SRC

etc.

क्या तर्क को बदलने का एक तरीका है: गतिशील रूप से उलझना।

मैंने जांच की है और पता लगाया है कि मैं टंकण तर्क: में अपरिहार्य फ़ीड कर सकता हूं। यदि मैं मूल्यांकन करता हूं (setq myfile "~/dir/file.el)और फिर निम्नलिखित का उलझन करता हूं :

#+BEGIN_SRC emacs-lisp :tangle (print myfile)
(setq myvar1 "value1")
#+END_SRC

#+BEGIN_SRC emacs-lisp :tangle (print myfile)
(defun foo (bar) ... )
#+END_SRC

मुझे वह वांछित परिणाम मिलता है जिसकी मुझे तलाश है। फिर मैं ऑर्गन-बैबेल का उपयोग करके चर सेट करने के लिए एक विशिष्ट स्निपेट निष्पादित कर सकता था, लेकिन मैं सोच रहा था कि क्या ऐसा करने के लिए एक क्लीनर तरीका है।

डॉक्स ऑन: टैंगल हेडर एक देशी तरीके से निर्धारित नहीं होता है।

जवाबों:


17

आपको ऐसी चीजों को दोहराना नहीं चाहिए, बल्कि उन्हें एक जगह परिभाषित करना चाहिए। उदाहरण के लिए यदि आप एक में आउटपुट फ़ाइल परिभाषित कर सकते हैं दराज के रूप में शीर्ष लेख आर्ग के लिए पूरे वृक्ष और subtrees :

* Header
:PROPERTIES:
:tangle: ~/dir/my/testfile.el
:END:

या के लिए : dir

* Header
:PROPERTIES:
:header-args: :dir ~/dir/my/dir/
:END:

जैसा कि डॉक्स में बताया गया है:

  • सिस्टम-वाइड हेडर तर्क
  • भाषा-विशिष्ट हेडर तर्क
  • ओग मोड गुणों में हैडर तर्क
  • ऑर्ग मोड गुणों में भाषा-विशिष्ट हेडर तर्क
  • कोड ब्लॉक विशिष्ट हेडर तर्क
  • फ़ंक्शन कॉल में शीर्षलेख तर्क

1

आप एक के बजाय org शीर्ष की संपत्ति का उपयोग कर सकते हैं setq

* Header
:PROPERTIES:
:PRJ-DIR: ~/prj/dir/
:END:

#+BEGIN_SRC emacs-lisp :tangle (concat (org-entry-get nil "PRJ-DIR" t) "file.el")
(setq myvar1 "value1")
#+END_SRC

#+BEGIN_SRC emacs-lisp :tangle (concat (org-entry-get nil "PRJ-DIR" t) "file.el")
(defun foo (bar) ... )
#+END_SRC

etc.

इस तरह आप प्रत्येक स्रोत ब्लॉक के लिए अलग-अलग फ़ाइल नाम सेट कर सकते हैं।

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