From ab66c18a9d7f39c766795b78dc0ba84076a82d4b Mon Sep 17 00:00:00 2001 From: Julien Rioux Date: Sat, 3 Dec 2011 22:58:38 +0000 Subject: [PATCH] Remove the .aux and .bbl files when we switch the citation engine or style. --- src/Buffer.cpp | 18 ++++++++++++++++++ src/Buffer.h | 3 +++ src/frontends/qt4/GuiDocument.cpp | 2 ++ src/insets/InsetBibtex.cpp | 8 ++++++-- 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/Buffer.cpp b/src/Buffer.cpp index ac4f018ac0..40e650c632 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -2052,6 +2052,24 @@ bool Buffer::citeLabelsValid() const } +void Buffer::removeBiblioTempFiles() const +{ + // We remove files that contain LaTeX commands specific to the + // particular bibliographic style being used, in order to avoid + // LaTeX errors when we switch style. + FileName const aux_file(addName(temppath(), changeExtension(latexName(),".aux"))); + FileName const bbl_file(addName(temppath(), changeExtension(latexName(),".bbl"))); + LYXERR(Debug::FILES, "Removing the .aux file " << aux_file); + aux_file.removeFile(); + LYXERR(Debug::FILES, "Removing the .bbl file " << bbl_file); + bbl_file.removeFile(); + // Also for the parent buffer + Buffer const * const pbuf = parent(); + if (pbuf) + pbuf->removeBiblioTempFiles(); +} + + bool Buffer::isDepClean(string const & name) const { DepClean::const_iterator const it = d->dep_clean.find(name); diff --git a/src/Buffer.h b/src/Buffer.h index 410cb978a7..7d48cb671a 100644 --- a/src/Buffer.h +++ b/src/Buffer.h @@ -475,6 +475,9 @@ public: /// void getLabelList(std::vector &) const; + /// This removes the .aux and .bbl files from the temp dir. + void removeBiblioTempFiles() const; + /// void changeLanguage(Language const * from, Language const * to); diff --git a/src/frontends/qt4/GuiDocument.cpp b/src/frontends/qt4/GuiDocument.cpp index 600e4f2860..315c32162c 100644 --- a/src/frontends/qt4/GuiDocument.cpp +++ b/src/frontends/qt4/GuiDocument.cpp @@ -2214,6 +2214,8 @@ void GuiDocument::applyView() else bp_.bibtex_command = bibtex_command + " " + bibtex_options; + buffer().removeBiblioTempFiles(); + // Indices indicesModule->apply(bp_); diff --git a/src/insets/InsetBibtex.cpp b/src/insets/InsetBibtex.cpp index 16dbfb2d85..abc7e0ff6d 100644 --- a/src/insets/InsetBibtex.cpp +++ b/src/insets/InsetBibtex.cpp @@ -57,14 +57,17 @@ namespace os = support::os; InsetBibtex::InsetBibtex(Buffer * buf, InsetCommandParams const & p) : InsetCommand(buf, p) { - buffer().invalidateBibfileCache(); + buffer().invalidateBibinfoCache(); + buffer().removeBiblioTempFiles(); } InsetBibtex::~InsetBibtex() { - if (isBufferLoaded()) + if (isBufferLoaded()) { buffer().invalidateBibfileCache(); + buffer().removeBiblioTempFiles(); + } } @@ -107,6 +110,7 @@ void InsetBibtex::doDispatch(Cursor & cur, FuncRequest & cmd) cur.recordUndo(); setParams(p); buffer().invalidateBibfileCache(); + buffer().removeBiblioTempFiles(); cur.forceBufferUpdate(); break; } -- 2.39.5