* src/insets/insetinclude.h
(updateBibfilesCache): adjust comment
(getBibfilesCache): ditto
* src/insets/insetinclude.C
(getChildBuffer): new, return the buffer of the child if it exists
(updateBibfilesCache): update the child buffer only if already loaded
(getBibfilesCache): scan the child buffer only if already loaded
* src/buffer.h
(updateBibfilesCache): adjust comment
(getBibfilesCache): ditto
(bibfilesCache_): ditto
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13869
a592a061-630c-0410-9148-
cb99ea01b6c8
/// return all bibkeys from buffer and its childs
void fillWithBibKeys(std::vector<std::pair<std::string, std::string> > & keys) const;
/// Update the cache with all bibfiles in use (including bibfiles
- /// of child documents).
+ /// of loaded child documents).
void updateBibfilesCache();
/// Return the cache with all bibfiles in use (including bibfiles
- /// of child documents).
+ /// of loaded child documents).
std::vector<std::string> const & getBibfilesCache() const;
///
void getLabelList(std::vector<std::string> &) const;
/// it's BufferView, this should be FIXED in future.
StableDocIterator cursor_;
StableDocIterator anchor_;
- /// A cache for the bibfiles (including bibfiles of child documents),
- /// needed for appropriate update of natbib labels.
+ /// A cache for the bibfiles (including bibfiles of loaded child
+ /// documents), needed for appropriate update of natbib labels.
std::vector<std::string> bibfilesCache_;
};
namespace {
+/// return the child buffer if the file is a LyX doc and is loaded
+Buffer * getChildBuffer(Buffer const & buffer, InsetCommandParams const & params)
+{
+ if (isVerbatim(params))
+ return 0;
+
+ string const included_file = includedFilename(buffer, params);
+ if (!isLyXFilename(included_file))
+ return 0;
+
+ return bufferlist.getBuffer(included_file);
+}
+
+
/// return true if the file is or got loaded.
bool loadIfNeeded(Buffer const & buffer, InsetCommandParams const & params)
{
void InsetInclude::updateBibfilesCache(Buffer const & buffer)
{
- if (loadIfNeeded(buffer, params_)) {
- string const included_file = includedFilename(buffer, params_);
- Buffer * tmp = bufferlist.getBuffer(included_file);
+ Buffer * const tmp = getChildBuffer(buffer, params_);
+ if (tmp) {
tmp->setParentName("");
tmp->updateBibfilesCache();
tmp->setParentName(parentFilename(buffer));
std::vector<string> const &
InsetInclude::getBibfilesCache(Buffer const & buffer) const
{
- if (loadIfNeeded(buffer, params_)) {
- string const included_file = includedFilename(buffer, params_);
- Buffer * tmp = bufferlist.getBuffer(included_file);
+ Buffer * const tmp = getChildBuffer(buffer, params_);
+ if (tmp) {
tmp->setParentName("");
std::vector<string> const & cache = tmp->getBibfilesCache();
tmp->setParentName(parentFilename(buffer));
std::vector<std::pair<std::string,std::string> > & keys) const;
/** Update the cache with all bibfiles in use of the child buffer
* (including bibfiles of grandchild documents).
+ * Does nothing if the child document is not loaded to prevent
+ * automatic loading of all child documents upon loading the master.
* \param buffer the Buffer containing this inset.
*/
void updateBibfilesCache(Buffer const & buffer);
/** Return the cache with all bibfiles in use of the child buffer
* (including bibfiles of grandchild documents).
+ * Return an empty vector if the child doc is not loaded.
* \param buffer the Buffer containing this inset.
*/
std::vector<std::string> const &