Lei Zhe <[email protected]> writes:
> I’ve fixed all the issues you mentioned regarding the
> org-babel-tangle--concat-targets function.
> Please find the updated version attached.
Thanks!
Unless I miss something, you forgot to fix the issue with duplicates in
tangle targets and tangle directories.
> As for your suggestion:
>>>The easiest solution is thus getting rid of the
>>>`org-babel-tangle-use-relative-file-links' branch in
>>>`org-babel-tangle--unbracketed-link'.
>>>Instead, we can handle `org-babel-tangle-use-relative-file-links' in
>>>`org-babel-tangle-single-block' itself, post-processing the link there.
>>>Then, we can, say, store the processed link in PARAMS as
>>>:ob-tangle--link when calling `org-babel-expand-noweb-references' and
>>>make `org-babel-tangle-comment-links' check for :ob-tangle--link
>>>parameter instead of calling `org-babel-tangle--unbracketed-link' to
>>>generate the link.
>
> I tried to implement this approach, but it seems quite easy to break
> other parts of Org in the process. Would you mind guiding me on how to
> implement it properly?
Let me try to formulate the simplest possible approach I can think of:
1. In org-babel-tangle--unbracketed-link, instead of looking for :tangle
parameter, look for :org-babel-current-tangle-target parameter.
2. In org-babel-tangle-single-block, compute
(file-names (org-babel-tangle--concat-targets file info)) early
3. In org-babel-tangle-single-block, instead of computing BODY and
RESULT once, do it in the loop, like
(dolist (file-name file-names)
(setq params (plist-put params :org-babel-current-tangle-target file-name))
(setq link (org-babel-tangle--unbracketed-link params)) ; will use
FILE-NAME
(setq body ...)
;; will use FILE-NAME when calling
;; org-babel-expand-noweb-references -> org-babel-tangle--unbracketed-link
)
4. For each loop iteration, build separate RESULT list -> RESULTS
5. Return (if only-this-block results (car results))
Hope it is more clear.
--
Ihor Radchenko // yantar92,
Org mode maintainer,
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>