Tom Gillespie <tgb...@gmail.com> writes: >> My confusion about you patch comes from the fact that >> >> #+begin_src emacs-lisp :tangle (if (= 1 1) "yes") >> 2 >> #+end_src >> >> works just fine on main. > > It appears to work fine on main, but that is because > what is actually happening behind the scenes is that in the test > (unless (or (string= src-tfile "no") ...) ...) the actual comparison is > (string= "(if (= 1 1) \"yes\")" "no") which appears to work, but is > not comparing the result of the closure, only its string value.
What I see when tangling a file with the above code block is Debugger entered--returning value: ("emacs-lisp" "2" ((:colname-names) (:rowname-names) (:result-params "replace") (:result-type . value) (:results . "replace") (:exports . "code") (:tangle . "yes") <---------- evaluated (:lexical . "no") (:eval . "never-export") (:comments . "link") (:hlines . "no") (:noweb . "yes") (:cache . "no") (:session . "none")) "" nil 2 "(ref:%s)") (org-babel-get-src-block-info) * (#<subr org-babel-tangle-single-block> 1) * (apply #<subr org-babel-tangle-single-block> 1) * (org-babel-tangle-single-block 1) (org-babel-tangle-collect-blocks nil nil) (org-babel-tangle nil) (funcall-interactively org-babel-tangle nil) >> I admit that I don't fully understand your use case. > > I want to use a closure to conditionally control whether a block will tangle. > If I hardcode :tangle no, then :var x=(error "oops") will not evaluate. The > (error "oops") is a placeholder for a number of things that will result in > an error if the condition for :tangle (when condition "file-name") is not > satisfied. Do you mean something like #+PROPERTY: headline-args :var x=1 #+begin_src elisp :tangle (if (= x 1) "yes" "no") ... #+end_src ? >> Something like (org-babel-get-heading-arg :tangle info/params) > > I need to go to bed, because I definitely started on an implementation > of that I forgot about it as a potential solution. Yes, this seems like > a better and clearer way to go about it. Let me know if you need any help. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92>