From: Immanuel Litzroth <firstname.lastname@example.org> To: Diego Zamboni <email@example.com> Cc: firstname.lastname@example.org, emacs-orgmode <email@example.com> Subject: Re: ist here a :post header arg for tangling? Date: Mon, 4 Jan 2021 16:36:24 +0100 [thread overview] Message-ID: <CAM1nAcyXaqkNRi_SoaV=c28bVcGX4_Xy9=yXN0Uemy4V+M0-Gg@mail.gmail.com> (raw) In-Reply-To: <CAM1nAczgzNvdfTPw+YAKar2Jc7FJtop+fTeZuHVgYapAF9PwBA@mail.gmail.com> Oh and I also made the tangling itself more flexible in that you can now also choose to only tangle stuff going to a certain file. This is mainly to be able to define an interactive command that tangles/reloads everything going to the file under point. Immanuel On Mon, Jan 4, 2021 at 4:31 PM Immanuel Litzroth <firstname.lastname@example.org> wrote: > > Well I solved the problem by writing a tangler which can be configured > with tangle-config > you define a tangler by making a hash "language" -> tangle-hooks. The > tangle-hooks are > called at beginning of tangling, on each source block, on each > noweb-ref and at the end of > tangling. They receive the full source-block-info to do their work, > and in the case of noweb-references > they receive the full stack of sbi's that lead up to this noweb reference. > >>> > (tangled-buffer "Buffer that is being tangled") > (name "Name of the code block") > (tangle-file "Filename to tangle to") > (properties "Properties of this block") > (full-block "Text of the full block") > (beg-block "Buffer pos of beginning of the block in the tangled buffer") > (end-block "end of the block in the tangled buffer") > (lang "language of the tangled buffer") > (beg-lang "beginning of the language in the tangled buffer") > (end-lang "end of the language in the tangled buffer") > (switches "switches of this block") > (beg-switches "begin of the switches in this block") > (end-switches "end of the switches in this block") > (header-args "header args of this block") > (beg-header-args "buffer pos of header args beginning") > (end-header-args "buffer pos of header args end") > (body "body of the tangled block") > (beg-body "buffer pos of the beginning of the body") > (end-body "buffer pos of the end of the body")) > >>> > That way I can tangle a multi language org file and do the correct thing for > each of the language by defining functions of interest. It's quite > flexible, I'm > going to use it to do some aspect-oriented programming/tangling when I > find the time. > Immanuel > > On Mon, Jan 4, 2021 at 4:11 PM Diego Zamboni <email@example.com> wrote: > > > > Agree. It should be possible to make the hook file-local, but still it's not trivial to have good control over where and how the changes are made. > > > > --Diego > > > > > > On Mon, Jan 4, 2021 at 3:51 PM Immanuel Litzroth <firstname.lastname@example.org> wrote: > >> > >> There's that, but you're not gonna do much with that since it is > >> global to emacs. If you're brimming > >> with vigour you might achieve what you want by rebinding that each > >> time you tangle to do the correct > >> thing. Not much information is available in that hook, you get dropped > >> into a temp buffer containing the > >> result of tangling. > >> Immanuel > >> > >> On Mon, Jan 4, 2021 at 3:07 PM Diego Zamboni <email@example.com> wrote: > >> > > >> > There's =org-babel-post-tangle-hook=, which AFAICT specifies hooks that will be run with the tangled code in a temporary buffer. I couldn't find much documentation nor examples, but it is mentioned at https://orgmode.org/manual/Extracting-Source-Code.html#Hooks-3 > >> > > >> > --Diego > >> > > >> > > >> > > >> > > >> > > >> > On Fri, Jan 1, 2021 at 1:31 PM Immanuel Litzroth <firstname.lastname@example.org> wrote: > >> >> > >> >> I don't think there is an arg for that. I have written a tangler that > >> >> reuses a lot > >> >> of the org-babel machinery and has a more flexible mechanism to decide what > >> >> to do with the tangled code -- I use it for example to not write a > >> >> tangled file if it > >> >> hasn't changed, meaning that it will not trigger recompile. > >> >> The project is private now but if you're interested I can give you access to it. > >> >> What exactly are you trying to do? > >> >> Immanuel > >> >> > >> >> On Fri, Jan 1, 2021 at 2:09 AM George Mauer <email@example.com> wrote: > >> >> > > >> >> > I'd like to run some code to post-process files after they are tangled. Is there a header-arg for that? > >> >> > >> >> > >> >> > >> >> -- > >> >> -- Researching the dual problem of finding the function that has a > >> >> given point as fixpoint. > >> >> > >> > >> > >> -- > >> -- Researching the dual problem of finding the function that has a > >> given point as fixpoint. > > > > -- > -- Researching the dual problem of finding the function that has a > given point as fixpoint. -- -- Researching the dual problem of finding the function that has a given point as fixpoint.
next prev parent reply other threads:[~2021-01-04 15:37 UTC|newest] Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-01-01 1:08 George Mauer 2021-01-01 12:29 ` Immanuel Litzroth 2021-01-04 14:07 ` Diego Zamboni 2021-01-04 14:50 ` Immanuel Litzroth 2021-01-04 15:10 ` Diego Zamboni 2021-01-04 15:31 ` Immanuel Litzroth 2021-01-04 15:36 ` Immanuel Litzroth [this message] 2021-01-04 15:38 ` Immanuel Litzroth 2021-01-04 15:28 ` George Mauer
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='CAM1nAcyXaqkNRi_SoaV=c28bVcGX4_Xy9=yXN0Uemy4V+M0-Gg@mail.gmail.com' \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: ist here a :post header arg for tangling?' \ /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
Code repositories for project(s) associated with this 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).