emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Not overwriting unchanged source code files when tangling


From: Eric Schulte
Subject: Re: [O] Not overwriting unchanged source code files when tangling
Date: Fri, 18 Nov 2011 12:42:01 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.91 (gnu/linux)

Brian Wightman <address@hidden> writes:

> On Fri, Nov 18, 2011 at 11:02 AM, Carsten Dominik
> <address@hidden> wrote:
>> How about changing the make file so that the dependence is on the Org file, 
>> not on the source file?
>> You could then arrange for make to call emacs in batch-mode to tangle the 
>> source file and then compile it?
>
> The original question was trying to avoid recompiling everything
> generated from a tangle if the content didn't actually change.
> Because retangling the source rewrites /all/ of the files, and resets
> the dates, even if nothing has changed, make will then rebuild
> everything that was tangled, not just the partial set of tangled files
> that actually changed.
>

I think the best approach in this case would be to tangle each file out
to a temporary buffer, and then just before exiting the tangle function
the content of these temporary buffers could be checked against the
files on disk, and only those buffers which differ from disk would be
written.  See ob-tangle.el around line 240 for the relevant code.
Unfortunately this would not be trivial, as currently content is written
to the target files incrementally block by block.

If the code in the .org file is grouped by subtree it may be possible to
place calls to org-narrow-to-subtree in the Makefile before tangling, so
that only part of the file is tangled.

Finally, it may be easiest simply to play make's game as it were and
break up the Org-mode file into multiple files.  These multiple files
could still be combined during export using #+INCLUDE lines from a
single master Org-mode file.

Best -- Eric

>
> Brian
>

-- 
Eric Schulte
http://cs.unm.edu/~eschulte/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]