Değişken dosya adına dolaştırmak için Org Babel kullanma


16

Bir dosyaya dolaştırdığım bir kod snippet'im varsa, ancak dosya adının zaman içinde değişmesini bekliyorsam, Dosya adını Query-replace'den daha temiz bir yol var mı?

Örneğin, ~ / dir / my-file.el kodunu karıştırdım:

#+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.

Daha sonra dosyanın başka bir yere daha iyi yerleştirileceğini anlıyorum:

#+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.

Argümanı dinamik olarak değiştirmenin bir yolu var mı?

Elisp'i: dolaştırmak argümanına besleyebileceğimi araştırdım ve keşfettim. (setq myfile "~/dir/file.el)Aşağıdakileri değerlendirir ve sonra karışırsam:

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

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

Aradığınız sonucu elde ederim. Daha sonra org-babel kullanarak değişkeni ayarlamak için bir elisp snippet'i yürütebilirdim, ancak bunu yapmanın daha temiz bir yolu olup olmadığını merak ediyordum.

Dolaştırmak başlığındaki dokümanlar yerel bir yol şart koşmamaktadır.

Yanıtlar:


17

Bu tür şeyleri tekrarlamamalısınız, ancak onları tek bir yerde tanımlamalısınız. Örneğin, çekmecedeki çıktı dosyasını tüm ağaç ve alt ağaçlar için başlık argümanları olarak tanımlayabilirsiniz :

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

veya için : dir

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

Dokümanlarda açıklandığı gibi şunlara sahip olabilirsiniz:

  • Sistem genelinde başlık bağımsız değişkenleri
  • Dile özgü başlık bağımsız değişkenleri
  • Kuruluş modu özelliklerinde başlık bağımsız değişkenleri
  • Kuruluş modu özelliklerinde dile özgü başlık bağımsız değişkenleri
  • Kod bloğuna özgü başlık bağımsız değişkenleri
  • İşlev çağrılarındaki başlık bağımsız değişkenleri

1

Kuruluş başlığının bir özelliğini 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.

Bu şekilde, her kaynak bloğu için farklı dosya adları ayarlayabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.