#include "TextClassList.h"
#include "TextClass.h"
-#include "support/debug.h"
#include "Lexer.h"
+#include "support/debug.h"
+#include "support/FileName.h"
#include "support/filetools.h"
#include <boost/bind.hpp>
#include <fstream>
+using namespace std;
+using namespace lyx::support;
namespace lyx {
-using support::FileName;
-using support::addName;
-using support::libFileSearch;
-using support::makeDisplayPath;
-
using boost::bind;
using boost::regex;
using boost::smatch;
-using namespace std;
-
// Gets textclass number from name
pair<bool, textclass_type> const
TextClassList::numberOfClass(string const & textclass) const
// used when sorting the textclass list.
class less_textclass_avail_desc
- : public std::binary_function<TextClass, TextClass, int>
+ : public binary_function<TextClass, TextClass, int>
{
public:
int operator()(TextClass const & tc1,
bool TextClassList::read()
{
Lexer lex(0, 0);
- support::FileName const real_file = libFileSearch("", "textclass.lst");
+ FileName const real_file = libFileSearch("", "textclass.lst");
LYXERR(Debug::TCLASS, "Reading textclasses from `" << real_file << '\'');
if (real_file.empty()) {
// fname, clname, desc, and avail
TextClass tmpl(fname, clname, desc, avail);
if (lyxerr.debugging(Debug::TCLASS)) {
+ // only system layout files are loaded here so no
+ // buffer path is needed.
tmpl.load();
}
classlist_.push_back(tmpl);
}
-std::pair<bool, textclass_type> const
-TextClassList::addTextClass(std::string const & textclass, std::string const & path)
+pair<bool, textclass_type> const
+TextClassList::addTextClass(string const & textclass, string const & path)
{
// only check for textclass.layout file, .cls can be anywhere in $TEXINPUTS
// NOTE: latex class name is defined in textclass.layout, which can be different from textclass
if (pp.first && classlist_[pp.second].description() == tmpl.description())
return pp;
classlist_.push_back(tmpl);
+ // This textclass is added on request so it will definitely be
+ // used. Load it now because other load() calls may fail if they
+ // are called in a context without buffer path information.
+ classlist_.back().load(path);
return make_pair(true, classlist_.size() - 1);
}
}