Start the clean up of the updateMacros() calls by moving the necessary

calls into the file writing routines and out of doExport(). They were in
both places before: Called once in doExport, and then again in the e.g.
writeLaTeXSource()---and then again, actually, in validate().

It is possible this will reveal some missing updateBuffer() calls
somewhere. But it should somewhat speed up View>Source, since we now do
not do an extra set of such calls in that routine. Rather, we rely upon
the Buffer's having been made up to date first, by the updateBuffer()
call after dispatch.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38596 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2011-05-05 20:18:16 +00:00
parent 96e86c8113
commit d1f15298f7
2 changed files with 28 additions and 20 deletions

View File

@ -1086,6 +1086,11 @@ bool Buffer::save() const
bool Buffer::writeFile(FileName const & fname) const bool Buffer::writeFile(FileName const & fname) const
{ {
// FIXME Do we need to do these here? I don't think writing
// the LyX file depends upon it. (RGH)
// updateBuffer();
// updateMacroInstances();
if (d->read_only && fname == d->filename) if (d->read_only && fname == d->filename)
return false; return false;
@ -1270,6 +1275,14 @@ bool Buffer::makeLaTeXFile(FileName const & fname,
errorList.clear(); errorList.clear();
bool failed_export = false; bool failed_export = false;
otexstream os(ofs, d->texrow); otexstream os(ofs, d->texrow);
// make sure we are ready to export
// this needs to be done before we validate
// FIXME Do we need to do this all the time? I.e., in children
// of a master we are exporting?
updateBuffer();
updateMacroInstances();
try { try {
os.texrow().reset(); os.texrow().reset();
writeLaTeXSource(os, original_path, writeLaTeXSource(os, original_path,
@ -1343,15 +1356,6 @@ void Buffer::writeLaTeXSource(otexstream & os,
} }
LYXERR(Debug::INFO, "lyx document header finished"); LYXERR(Debug::INFO, "lyx document header finished");
// Don't move this behind the parent_buffer=0 code below,
// because then the macros will not get the right "redefinition"
// flag as they don't see the parent macros which are output before.
updateBuffer();
// fold macros if possible, still with parent buffer as the
// macros will be put in the prefix anyway.
updateMacroInstances();
// There are a few differences between nice LaTeX and usual files: // There are a few differences between nice LaTeX and usual files:
// usual is \batchmode and has a // usual is \batchmode and has a
// special input@path to allow the including of figures // special input@path to allow the including of figures
@ -1505,6 +1509,11 @@ void Buffer::makeDocBookFile(FileName const & fname,
if (!openFileWrite(ofs, fname)) if (!openFileWrite(ofs, fname))
return; return;
// make sure we are ready to export
// this needs to be done before we validate
updateBuffer();
updateMacroInstances();
writeDocBookSource(ofs, fname.absFileName(), runparams, body_only); writeDocBookSource(ofs, fname.absFileName(), runparams, body_only);
ofs.close(); ofs.close();
@ -1579,8 +1588,6 @@ void Buffer::writeDocBookSource(odocstream & os, string const & fname,
params().documentClass().counters().reset(); params().documentClass().counters().reset();
updateMacros();
sgml::openTag(os, top); sgml::openTag(os, top);
os << '\n'; os << '\n';
docbookParagraphs(text(), *this, os, runparams); docbookParagraphs(text(), *this, os, runparams);
@ -1598,6 +1605,11 @@ void Buffer::makeLyXHTMLFile(FileName const & fname,
if (!openFileWrite(ofs, fname)) if (!openFileWrite(ofs, fname))
return; return;
// make sure we are ready to export
// this has to be done before we validate
updateBuffer(UpdateMaster, OutputUpdate);
updateMacroInstances();
writeLyXHTMLSource(ofs, runparams, body_only); writeLyXHTMLSource(ofs, runparams, body_only);
ofs.close(); ofs.close();
@ -1612,10 +1624,7 @@ void Buffer::writeLyXHTMLSource(odocstream & os,
{ {
LaTeXFeatures features(*this, params(), runparams); LaTeXFeatures features(*this, params(), runparams);
validate(features); validate(features);
updateBuffer(UpdateMaster, OutputUpdate);
d->bibinfo_.makeCitationLabels(*this); d->bibinfo_.makeCitationLabels(*this);
updateMacros();
updateMacroInstances();
if (!only_body) { if (!only_body) {
os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
@ -1701,8 +1710,6 @@ void Buffer::validate(LaTeXFeatures & features) const
{ {
params().validate(features); params().validate(features);
updateMacros();
for_each(paragraphs().begin(), paragraphs().end(), for_each(paragraphs().begin(), paragraphs().end(),
bind(&Paragraph::validate, _1, ref(features))); bind(&Paragraph::validate, _1, ref(features)));
@ -3522,10 +3529,6 @@ bool Buffer::doExport(string const & format, bool put_in_tempdir,
filename = changeExtension(filename, filename = changeExtension(filename,
formats.extension(backend_format)); formats.extension(backend_format));
// fix macros
updateMacros();
updateMacroInstances();
// Plain text backend // Plain text backend
if (backend_format == "text") { if (backend_format == "text") {
runparams.flavor = OutputParams::TEXT; runparams.flavor = OutputParams::TEXT;

View File

@ -37,6 +37,11 @@ void writePlaintextFile(Buffer const & buf, FileName const & fname,
ofdocstream ofs; ofdocstream ofs;
if (!openFileWrite(ofs, fname)) if (!openFileWrite(ofs, fname))
return; return;
// make sure we are ready to export
buf.updateBuffer();
buf.updateMacroInstances();
writePlaintextFile(buf, ofs, runparams); writePlaintextFile(buf, ofs, runparams);
} }