Hi Ihor, >> Anyway I tried to hack my way trough it. It seems there are two things >> to do : >> 1) Enable noweb-ref to contain multiple references. >> 2) Accumulate references when using header-args+ or use tags to set the >> value of noweb-ref >> >> I came up with a quick patch for 1): >> modified lisp/ob-core.el >> @@ -2910,8 +2910,11 @@ block but are passed literally to the >> \"example-block\"." >> (if (org-in-commented-heading-p) >> (org-forward-heading-same-level nil t) >> (let* ((info (org-babel-get-src-block-info t)) >> - (ref (cdr (assq :noweb-ref (nth 2 info))))) >> - (push info (gethash ref cache)))))) >> + (refs (cdr (assq :noweb-ref (nth 2 info))))) >> + (if refs >> + (dolist (ref (s-split "+" refs)) >> + (push info (gethash ref cache))) >> + (push info (gethash refs cache))))))) > > + is a bit awkward. > Space would be more logical as separator. > Though I am wondering if people are using noweb reference names with > spaces in the wild.
Might be. So maybe we could use another non-alphabetical character? What about "|" ? >> For 2) I didn't check in detail how one could achieve this. I have the >> impression it would be easier to use tags. One could define a >> new variable `org-babel-set-noweb-refs-from-tags` that would be used in >> `org-babel-get-src-block-info` to generate the value of noweb-ref we >> would like to have depending on the tags of the headline of the >> block. I'll try this soonish. > > I do not like the idea of using tags. > > What we might do is: > > 1. Leave :noweb-ref's current behavior of overwriting the parent > parameter values. > 2. Add a new :noweb-ref+ parameter to accumulate multiple noweb > reference names. The relevant function to modify is > `org-babel-merge-params' I like the idea. Thanks for the hint, I'll try that out! Best, Théo