From: Eric Schulte <schulte.eric@gmail.com>
To: Achim Gratz <Stromeko@nexgo.de>
Cc: emacs-orgmode@gnu.org
Subject: Re: Not overwriting unchanged source code files when tangling
Date: Fri, 18 Nov 2011 13:24:00 -0700 [thread overview]
Message-ID: <878vndgowv.fsf@gmail.com> (raw)
In-Reply-To: <87wrax8a5h.fsf@Rainer.invalid> (Achim Gratz's message of "Fri, 18 Nov 2011 21:10:02 +0100")
Achim Gratz <Stromeko@nexgo.de> writes:
> Eric Schulte <schulte.eric@gmail.com> writes:
>> 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.
>
> It would be wise to follow an age-old tradition and not clobber an
> existing file with before it is known that the process will finish
> without error. A temporary file is easily trashed when something goes
> wrong and the previous result still available. If all went well, the
> old file can be deleted (or renamed to a backup file) and the temporary
> file can be moved to where the old one was if the two SHA1 differ.
>
Agreed, it would be preferable to build up the tangled contents in
memory and not write to the file system until the tangling process is
complete.
>> 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.
>
> Well, I've been wondering about this for some time: can one make sort of
> an "indirect buffer" from the contents of multiple other buffers in
> Emacs? That would make such #+INCLUDEs much more seamless.
>
Hmm, this could be useful both inside and outside of Org-mode. Emacs
does have indirect buffers [1], however they are exact copies of another
buffer, I don't know if it would be possible to combine multiple
indirect buffers into a single buffer.
Thanks -- Eric
>
>
> Regards,
> Achim.
Footnotes:
[1] (info "(elisp) Indirect Buffers")
--
Eric Schulte
http://cs.unm.edu/~eschulte/
next prev parent reply other threads:[~2011-11-18 20:24 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-18 13:17 Not overwriting unchanged source code files when tangling Holger Hoefling
2011-11-18 14:23 ` Brian Wightman
2011-11-18 16:46 ` Tom Prince
2011-11-18 17:14 ` Brian Wightman
2011-11-18 14:27 ` Sebastien Vauban
2011-11-18 17:02 ` Carsten Dominik
2011-11-18 17:28 ` Brian Wightman
2011-11-18 19:42 ` Eric Schulte
2011-11-18 20:10 ` Achim Gratz
2011-11-18 20:24 ` Eric Schulte [this message]
2011-11-19 0:49 ` Holger Hoefling
2011-11-18 19:01 ` Holger Hoefling
2011-11-18 19:32 ` Nick Dokos
2011-11-19 0:51 ` Holger Hoefling
2011-11-19 4:00 ` Nick Dokos
2011-11-19 6:58 ` Holger Hoefling
2011-11-19 18:32 ` Holger Hoefling
2011-11-22 21:17 ` Allen S. Rout
2011-11-22 21:43 ` Nick Dokos
2011-11-19 18:06 ` cberry
2011-11-18 19:51 ` Achim Gratz
-- strict thread matches above, loose matches on Subject: below --
2011-11-19 15:31 Rustom Mody
2011-11-19 15:51 ` Rustom Mody
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=878vndgowv.fsf@gmail.com \
--to=schulte.eric@gmail.com \
--cc=Stromeko@nexgo.de \
--cc=emacs-orgmode@gnu.org \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.