Author: rgheck
Date: Thu May 5 22:18:16 2011
New Revision: 38596
URL: http://www.lyx.org/trac/changeset/38596
Log:
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.
Modified:
lyx-devel/trunk/src/Buffer.cpp
lyx-devel/trunk/src/output_plaintext.cpp
Modified: lyx-devel/trunk/src/Buffer.cpp
==============================================================================
--- lyx-devel/trunk/src/Buffer.cpp Thu May 5 21:51:10 2011 (r38595)
+++ lyx-devel/trunk/src/Buffer.cpp Thu May 5 22:18:16 2011 (r38596)
@@ -1086,6 +1086,11 @@
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)
return false;
@@ -1270,6 +1275,14 @@
errorList.clear();
bool failed_export = false;
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 {
os.texrow().reset();
writeLaTeXSource(os, original_path,
@@ -1343,15 +1356,6 @@
}
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:
// usual is \batchmode and has a
// special input@path to allow the including of figures
@@ -1505,6 +1509,11 @@
if (!openFileWrite(ofs, fname))
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);
ofs.close();
@@ -1579,8 +1588,6 @@
params().documentClass().counters().reset();
- updateMacros();
-
sgml::openTag(os, top);
os << '\n';
docbookParagraphs(text(), *this, os, runparams);
@@ -1598,6 +1605,11 @@
if (!openFileWrite(ofs, fname))
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);
ofs.close();
@@ -1612,10 +1624,7 @@
{
LaTeXFeatures features(*this, params(), runparams);
validate(features);
- updateBuffer(UpdateMaster, OutputUpdate);
d->bibinfo_.makeCitationLabels(*this);
- updateMacros();
- updateMacroInstances();
if (!only_body) {
os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
@@ -1701,8 +1710,6 @@
{
params().validate(features);
- updateMacros();
-
for_each(paragraphs().begin(), paragraphs().end(),
bind(&Paragraph::validate, _1, ref(features)));
@@ -3522,10 +3529,6 @@
filename = changeExtension(filename,
formats.extension(backend_format));
- // fix macros
- updateMacros();
- updateMacroInstances();
-
// Plain text backend
if (backend_format == "text") {
runparams.flavor = OutputParams::TEXT;
Modified: lyx-devel/trunk/src/output_plaintext.cpp
==============================================================================
--- lyx-devel/trunk/src/output_plaintext.cpp Thu May 5 21:51:10 2011
(r38595)
+++ lyx-devel/trunk/src/output_plaintext.cpp Thu May 5 22:18:16 2011
(r38596)
@@ -37,6 +37,11 @@
ofdocstream ofs;
if (!openFileWrite(ofs, fname))
return;
+
+ // make sure we are ready to export
+ buf.updateBuffer();
+ buf.updateMacroInstances();
+
writePlaintextFile(buf, ofs, runparams);
}