From: Mehmet Tekman <mtekman89@gmail.com>
To: "João Pedro" <jpedrodeamorim@gmail.com>,
"Ihor Radchenko" <yantar92@posteo.net>
Cc: emacs-orgmode@gnu.org
Subject: Re: [ANN] lisp/ob-tangle-sync.el
Date: Mon, 06 May 2024 18:28:14 +0200 [thread overview]
Message-ID: <87plty52ht.fsf@gmail.com> (raw)
In-Reply-To: <87cypz3dp9.fsf@ergo>
Hello!
João Pedro <jpedrodeamorim@gmail.com> writes:
> So, if I understand correctly, =header-reform= is where we're at right
> now and after we're done with this overhauling of the parsing of
> (mutually exclusive) header params, we'll get back to the actual syncing
> logic, which should be mostly done.
Exactly -- reform the headers first (branch: header-reform) and then
add the sync stuff later (branch: ob-tangle-sync-2023).
> Ok I'll start here as I think writing tests could give me some more
> insights on the core problems that still need solution.
Yeah, at least from my side I got really confused with what the expected
actions of some :tangle parameters were. Let me know if you find any
ambiguous cases too.
> 1. So the idea is to continue parsing multi-option header arguments into
> their separate components, but have a common place to, after parsing
> it into their components, handle them all in a single place? I mean,
> what does "handle" mean in this context?
Hah, good question. I think by "handle" I mean three things:
1. Ensure that :tangle remains as the raw string :tangle so that other
parts of Org can use it without needing to guess if there is a sync
action in there or not. I quite like Ihor's suggestion:
Ihor Radchenko <yantar92@posteo.net> writes:
> we need something like
>
> (org-babel-get-header-arg :results params) ; get parsed parameter
> (org-babel-get-header-arg :results params 'raw) ; get raw parameter
>
> Then, babel backends will not need to know the internal details about
> :results parameter being represented in its two forms stored as :results
> and as :result-params.
2. Ensure that :tangle or :tangle-params can merge both filenames and
sync-actions down the hierarchy.
In my last email I talk about "process-params" (splitting the filename
and sync-action) and "merge-params" (resolve hierarchy) as two
separate entities, where a :tangle header is first "merged" down to a
header, then "merged" down to a subheading, then "merged" down to a
source block, and then finally "processed"...
... but now that I think about it, it's quite likely that "merge" and
"process" are interlinked, and we will need something that is aware of
what the "filename sync-action" pair is, at EVERY level of the
hierarchy. As in, it processes a header first, then merges it down, then
processes the next header, and then merges that down, and so forth.
Right now, process-params and merge-params are two independent code
blocks, but I think one might need to start calling the other.
3. Do this in such a way that :results can also benefit from this
process/merge strategy.
> 2. Isn't that the same as the previous point? If we can handle any
> *-params doesn't that solve the problem of handling mutually
> exclusive groups?
Yes, it's the same point :-)
Creating a unified *-params handler for mutually exclusive groups would
probably fix all 3 problems.
> We can just define a pattern of parsing them into individual *-params
> and handling that in a unified manner.
If I'm understanding you correctly, do you mean we leave the normal
header merging and processing alone, and we just treat :tangle-params
and :result-params as their own special group, and handle them
independently of :tangle and :results?
If so, I'm not so sure how easy it is due to my second point above.
> Are these patches also on the branch (apart from the WIP one)?
Yep, those patches as well as the WIP one are also on that branch. My
coding strategy right now is to develop chaotically on =header-reform=
and then do cherry picking/rebasing afterwards.
If you want I can give you push privileges to that branch, or you can
clone it and work in your own tidier manner, or do you prefer working
with email patches?
Best,
Mehmet
next prev parent reply other threads:[~2024-05-06 16:29 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-26 14:48 [ANN] lisp/ob-tangle-sync.el Mehmet Tekman
2023-04-26 16:43 ` John Wiegley
2023-04-26 18:43 ` Mehmet Tekman
2023-04-27 2:55 ` Ruijie Yu via General discussions about Org-mode.
2023-04-27 6:27 ` Mehmet Tekman
2023-04-28 10:57 ` Ruijie Yu via General discussions about Org-mode.
2023-04-28 11:28 ` Mehmet Tekman
2023-05-02 20:43 ` Mehmet Tekman
2023-05-03 2:31 ` Ruijie Yu via General discussions about Org-mode.
2023-05-03 7:53 ` Mehmet Tekman
2023-05-03 8:34 ` Mehmet Tekman
2023-05-03 8:44 ` Ihor Radchenko
2023-05-03 11:43 ` Ihor Radchenko
2023-05-03 13:54 ` Mehmet Tekman
2023-05-03 18:06 ` Ihor Radchenko
2023-05-03 15:05 ` Mehmet Tekman
2023-05-03 15:21 ` Ihor Radchenko
[not found] ` <87lei577g4.fsf@gmail.com>
[not found] ` <87lei5v1fg.fsf@localhost>
[not found] ` <87fs8duyae.fsf@localhost>
2023-05-09 14:03 ` Mehmet Tekman
2023-05-10 9:46 ` Ihor Radchenko
2023-05-10 11:06 ` mtekman89
2023-05-10 11:32 ` Ihor Radchenko
2023-05-10 16:20 ` Mehmet Tekman
2023-05-12 12:33 ` Ihor Radchenko
2023-05-16 12:49 ` Mehmet Tekman
2023-05-16 18:57 ` Ihor Radchenko
2023-05-17 13:45 ` Mehmet Tekman
2023-05-18 10:30 ` Ihor Radchenko
2023-05-19 7:10 ` Mehmet Tekman
2023-07-15 12:38 ` Ihor Radchenko
2023-07-16 9:42 ` Mehmet Tekman
2023-07-17 11:29 ` Mehmet Tekman
2023-07-18 8:47 ` Ihor Radchenko
2023-07-21 8:48 ` Mehmet Tekman
2023-07-22 8:02 ` Ihor Radchenko
2023-07-25 11:19 ` Mehmet Tekman
2023-07-25 16:19 ` Ihor Radchenko
2023-07-31 13:41 ` Mehmet Tekman
2023-07-31 16:38 ` Ihor Radchenko
2023-07-31 20:11 ` Mehmet Tekman
2023-08-01 7:54 ` Ihor Radchenko
2023-08-01 8:49 ` Mehmet Tekman
2023-08-01 9:30 ` Ihor Radchenko
2023-08-01 18:19 ` Bastien Guerry
2023-08-02 7:29 ` Ihor Radchenko
2023-08-02 14:46 ` Mehmet Tekman
2023-08-03 6:32 ` Mehmet Tekman
2023-08-03 7:35 ` Ihor Radchenko
2023-08-03 8:08 ` Mehmet Tekman
2023-08-03 8:16 ` Ihor Radchenko
[not found] ` <CAHHeYzL6Z5_gGbTUrNzKDh5swgCSQiYsSj3Cs0gFy_d=eXbSBA@mail.gmail.com>
[not found] ` <87o7jo1q2s.fsf@localhost>
2023-08-03 8:46 ` Mehmet Tekman
2023-08-04 7:41 ` Mehmet Tekman
2023-08-04 8:09 ` Ihor Radchenko
2023-08-04 13:14 ` Mehmet Tekman
2023-08-04 16:34 ` Mehmet Tekman
2023-08-06 9:07 ` Ihor Radchenko
2023-08-08 19:41 ` Mehmet Tekman
2023-08-08 19:51 ` Ihor Radchenko
2023-08-08 20:04 ` Mehmet Tekman
2023-08-09 8:04 ` Ihor Radchenko
2023-08-05 8:48 ` Ihor Radchenko
2023-08-05 22:54 ` Mehmet Tekman
2023-11-10 9:41 ` Ihor Radchenko
2023-11-10 9:53 ` Mehmet Tekman
2023-12-11 13:40 ` Ihor Radchenko
2023-12-11 14:28 ` Mehmet Tekman
2024-04-29 5:16 ` João Pedro
2024-04-29 7:43 ` Mehmet Tekman
2024-04-29 16:21 ` João Pedro
2024-05-05 16:47 ` Mehmet Tekman
2024-05-06 1:56 ` João Pedro
2024-05-06 12:53 ` Ihor Radchenko
2024-05-06 16:28 ` Mehmet Tekman [this message]
2024-05-06 12:45 ` Ihor Radchenko
2024-06-23 10:48 ` Ihor Radchenko
2024-07-23 8:47 ` Ihor Radchenko
2023-04-27 12:02 ` Ihor Radchenko
2023-04-27 13:01 ` Mehmet Tekman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87plty52ht.fsf@gmail.com \
--to=mtekman89@gmail.com \
--cc=emacs-orgmode@gnu.org \
--cc=jpedrodeamorim@gmail.com \
--cc=yantar92@posteo.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).