}
-bool BufferView::ChangeCitationsIfUnique(string const & from,
- string const & to)
+bool BufferView::ChangeCitationsIfUnique(string const & from, string const & to)
{
typedef pair<string, string> StringPair;
- vector<StringPair> keys = buffer()->getBibkeyList();
+ vector<StringPair> keys;
+ buffer()->fillWithBibKeys(keys);
if (count_if(keys.begin(), keys.end(),
lyx::equal_1st_in_pair<StringPair>(from))
> 1)
using std::make_pair;
using std::vector;
using std::map;
-using std::max;
using std::stack;
using std::list;
using std::for_each;
params.float_placement = lex.getString();
} else if (token == "\\align") {
int tmpret = lex.findToken(string_align);
- if (tmpret == -1) ++tmpret;
+ if (tmpret == -1)
+ ++tmpret;
int const tmpret2 = int(pow(2.0, tmpret));
par->params().align(LyXAlignment(tmpret2));
} else if (token == "\\added_space_top") {
// this is to change the linebreak to do it by word a bit more
// intelligent hopefully! (only in the case where we have a
- // max linelenght!) (Jug)
+ // max linelength!) (Jug)
string word;
// This is also a buffer property (ale)
-vector<pair<string, string> > const Buffer::getBibkeyList() const
+void Buffer::fillWithBibKeys(vector<pair<string, string> > & keys) const
{
- typedef pair<string, string> StringPair;
/// if this is a child document and the parent is already loaded
- /// Use the parent's list instead [ale990412]
+ /// use the parent's list instead [ale990412]
if (!params.parentname.empty() && bufferlist.exists(params.parentname)) {
Buffer const * tmp = bufferlist.getBuffer(params.parentname);
- if (tmp)
- return tmp->getBibkeyList();
+ if (tmp) {
+ tmp->fillWithBibKeys(keys);
+ return;
+ }
}
- vector<StringPair> keys;
for (inset_iterator it = inset_const_iterator_begin();
it != inset_const_iterator_end(); ++it) {
- // Search for Bibtex or Include inset
- if (it->lyxCode() == Inset::BIBTEX_CODE) {
- vector<StringPair> tmp =
- static_cast<InsetBibtex &>(*it).getKeys(this);
- keys.insert(keys.end(), tmp.begin(), tmp.end());
- } else if (it->lyxCode() == Inset::INCLUDE_CODE) {
- vector<StringPair> const tmp =
- static_cast<InsetInclude &>(*it).getKeys();
- keys.insert(keys.end(), tmp.begin(), tmp.end());
- } else if (it->lyxCode() == Inset::BIBKEY_CODE) {
+ if (it->lyxCode() == Inset::BIBTEX_CODE)
+ static_cast<InsetBibtex &>(*it).fillWithBibKeys(this, keys);
+ else if (it->lyxCode() == Inset::INCLUDE_CODE)
+ static_cast<InsetInclude &>(*it).fillWithBibKeys(keys);
+ else if (it->lyxCode() == Inset::BIBKEY_CODE) {
InsetBibKey & bib = static_cast<InsetBibKey &>(*it);
string const key = bib.getContents();
string const opt = bib.getOptions();
string const ref; // = pit->asString(this, false);
string const info = opt + "TheBibliographyRef" + ref;
- keys.push_back(StringPair(key, info));
+ keys.push_back(pair<string, string>(key, info));
}
}
-
- return keys;
}
*/
void validate(LaTeXFeatures &) const;
- ///
- std::vector<std::pair<string, string> > const getBibkeyList() const;
+ /// return all bibkeys from buffer and its childs
+ void fillWithBibKeys(vector<pair<string, string> > & keys) const;
///
std::vector<string> const getLabelList() const;
void ControlCitation::setDaughterParams()
{
- vector<pair<string,string> > blist = buffer()->getBibkeyList();
+ vector<pair<string,string> > blist;
+ buffer()->fillWithBibKeys(blist);
typedef std::map<string, string>::value_type InfoMapValue;
// of time cause LyX3 won't use lyxlex anyway. (ale)
void InsetBibKey::write(Buffer const *, ostream & os) const
{
- os << "\n\\layout Bibliography\n\\bibitem ";
- if (! getOptions().empty())
+ os << "\n\\bibitem ";
+ if (!getOptions().empty())
os << '[' << getOptions() << ']';
- os << '{'
- << getContents() << "}\n";
+ os << '{' << getContents() << "}\n";
}
void InsetBibKey::read(Buffer const *, LyXLex & lex)
{
if (lex.eatLine()) {
- string const token = lex.getString();
- scanCommand(token);
+ scanCommand(lex.getString());
} else {
lex.printError("InsetCommand: Parse error: `$$Token'");
}
adb = os::external_path(MakeAbsPath(adb, buffer->filePath()));
db_out += adb;
db_out += ',';
- db_in= split(db_in, adb,',');
+ db_in = split(db_in, adb,',');
}
db_out = rtrim(db_out, ",");
os << "\\bibliography{" << db_out << "}\n";
// This method returns a comma separated list of Bibtex entries
-vector<pair<string, string> > const
- InsetBibtex::getKeys(Buffer const * buffer) const
+void InsetBibtex::fillWithBibKeys
+ (Buffer const * buffer, vector<pair<string, string> > & keys) const
{
- vector<pair<string,string> > keys;
-
lyx::Assert(buffer);
vector<string> const files = getFiles(*buffer);
for (vector<string>::const_iterator it = files.begin();
}
}
}
- return keys;
}
int latex(Buffer const *, std::ostream &,
bool fragile, bool freespace) const;
///
- std::vector<std::pair<string,string> > const getKeys(Buffer const *) const;
+ void fillWithBibKeys(Buffer const *,
+ std::vector<std::pair<string,string> > &) const;
///
std::vector<string> const getFiles(Buffer const &) const;
///
if (loadkeys) {
// build the keylist
typedef vector<std::pair<string, string> > InfoType;
- InfoType bibkeys = buffer->getBibkeyList();
+ InfoType bibkeys;
+ buffer->fillWithBibKeys(bibkeys);
InfoType::const_iterator bit = bibkeys.begin();
InfoType::const_iterator bend = bibkeys.end();
}
-vector<pair<string,string> > const InsetInclude::getKeys() const
+void InsetInclude::fillWithBibKeys(vector<pair<string,string> > & keys) const
{
- vector<pair<string,string> > keys;
-
if (loadIfNeeded()) {
Buffer * tmp = bufferlist.getBuffer(getFileName());
tmp->setParentName("");
- keys = tmp->getBibkeyList();
+ tmp->fillWithBibKeys(keys);
tmp->setParentName(getMasterFilename());
}
-
- return keys;
}
/// This returns the list of labels on the child buffer
std::vector<string> const getLabelList() const;
/// This returns the list of bibkeys on the child buffer
- std::vector< std::pair<string,string> > const getKeys() const;
+ void fillWithBibKeys(vector<pair<string,string> > & keys) const;
///
void edit(BufferView *, int x, int y, mouse_button::state button);
///
textclass.counters().step("bibitem");
int number = textclass.counters().value("bibitem");
//if (!par->bibkey()) {
+ // Inset * inset = new InsetBibKey(InsetCommandParams("bibitem"));
+ // //par->insertInset(0, inset);
+ //}
if (par->bibkey()) {
par->bibkey()->setCounter(number);
par->params().labelString(layout->labelstring());
}
- // else {
- // InsetCommandParams p("bibitem");
- // par->bibkey() = new InsetBibKey(p);
- //}
// In biblio should't be following counters but...
} else {
string s = layout->labelstring();