Sorry for the late response. Thanks for the explanation.

>> 4. For each loop iteration, build separate RESULT list -> RESULTS
Wasn't this discussed before? If we change the result to a nested
list, the difference will be a breaking change.

I still think that returning bare only is the simplest and safest
solution for now if :tangle has multiple targets in
`org-babel-tangle--unbracketed-link', then we
can leave everything else unchanged.

Please find the attachment.

Best regards,
Zhe Lei



On Fri, Jul 18, 2025 at 3:18 AM Ihor Radchenko <yanta...@posteo.net> wrote:
>
> Lei Zhe <lzhe...@gmail.com> 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>

Attachment: 0001-ob-tangle.el-Support-tangling-a-source-block-to-mult.patch
Description: Binary data

Reply via email to