> I noticed that you modified argument order of a public function
> `org-babel-detangle' -- is it possible that you retain the order of
> arguments?

Good catch - I think I changed the order so that it would match
the interactivity of its sister function `org-babel-tangle', and
I think in a previous rendition of ob-tangle-sync.el, I called
`org-babel-detangle' interactively. But I see now that I no
longer directly call it anywhere in my edited code, so I can
easily change it back.

Attached is a patch
Best


On Wed, 3 May 2023 at 04:35, Ruijie Yu <ruijie@netyu.xyz> wrote:

Mehmet Tekman <mtekman89@gmail.com> writes:

> Hello again, sorry for the delay - I had some holiday time off
> that couldn't wait ;-)
>
> I've modified the ob-tangle.el file for the main tangling and
> detangling functions.  Most importantly, both functions can now
> exchange information from the source Org mode file to the target
> remote tangle file in either direction, depending on whether the
> source Org file has `:tangle-sync <action>' in the header.
>
> The action is one of:
>
> - "export" = always transmit information from the source Org mode
>              block to the target remote file.
> - "import" = always transmit information from the target remote
>              file to the source Org mode block.
> - "skip" = skip the block.
> - "both" = transmit information from source block to target block
>            or target block to source, depending on whether the
>            tangle or detangle is called from the source buffer or
>            the target buffer respectively.
>
> These functions work at the whole buffer and at the per-block
> level.  The `org-babel-tangle-sync' functions automate this
> process by hooking into the `after-save-hook' and tangling /
> detangling the current block.
>
> I feel that I should write what the main motivation for this is:
> Dotfiles that are always in sync with the org-mode files they
> stem from.
>
> Hope this turns into something big!
> Best,
>
> Mehmet
>
> [4. application/x-patch; 0005-lisp-ob-tangle-sync.el-Automatic-synchronization-of-.patch]...
>
> [5. application/x-patch; 0004-lisp-ob-tangle.el-Sync-aware-tangle-function-with-be.patch]...
>
> [6. application/x-patch; 0002-lisp-ob-tangle.el-Sync-action-aware-detangle-functio.patch]...
>
> [7. application/x-patch; 0003-lisp-ob-tangle.el-Tangle-function-made-aware-of-remo.patch]...
>
> [8. application/x-patch; 0001-lisp-ob-tangle.el-Detangle-a-single-block.patch]...
>
> [9. application/x-patch; 0006-etc-ORG-NEWS-lisp-ob-tangle.el-Added-news-and-name.patch]...

I noticed that you modified argument order of a public function
`org-babel-detangle' -- is it possible that you retain the order of
arguments?

The accumulated change you proposed is this:

-(defun org-babel-detangle (&optional source-code-file)
+(defun org-babel-detangle (&optional arg source-code-file ignore-header)

What I think it should be:

    (defun org-babel-detangle (&optional source-code-file arg ignore-header) ...)

This way, existing (external) users of this function can rest assured
that their code is not broken by your patchset.  Thoughts?

--
Best,


RY

[Please note that this mail might go to spam due to some
misconfiguration in my mail server -- still investigating.]