emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
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/

  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

  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=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 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).