emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Immanuel Litzroth <immanuel.litzroth@gmail.com>
To: Diego Zamboni <diego@zzamboni.org>
Cc: gmauer@gmail.com, emacs-orgmode <emacs-orgmode@gnu.org>
Subject: Re: ist here a :post header arg for tangling?
Date: Mon, 4 Jan 2021 16:31:36 +0100	[thread overview]
Message-ID: <CAM1nAczgzNvdfTPw+YAKar2Jc7FJtop+fTeZuHVgYapAF9PwBA@mail.gmail.com> (raw)
In-Reply-To: <CAGY83EcjGPJnSkdJ=m47Yv7Z4Phg+sby_8bm8itiLwBoQN2sTg@mail.gmail.com>

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 <diego@zzamboni.org> 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 <immanuel.litzroth@gmail.com> 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 <diego@zzamboni.org> 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 <immanuel.litzroth@gmail.com> 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 <gmauer@gmail.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.


  reply	other threads:[~2021-01-04 15:33 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-01  1:08 ist here a :post header arg for tangling? 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 [this message]
2021-01-04 15:36           ` Immanuel Litzroth
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=CAM1nAczgzNvdfTPw+YAKar2Jc7FJtop+fTeZuHVgYapAF9PwBA@mail.gmail.com \
    --to=immanuel.litzroth@gmail.com \
    --cc=diego@zzamboni.org \
    --cc=emacs-orgmode@gnu.org \
    --cc=gmauer@gmail.com \
    /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).