mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 05:16:21 +00:00
Move global variable to preamble
This will be needed in the future, when I need to parse the preamble twice for detecting japanese encoding (bug #8218).
This commit is contained in:
parent
41405babc5
commit
59b705dcd9
@ -39,9 +39,6 @@ using namespace lyx::support;
|
||||
|
||||
namespace lyx {
|
||||
|
||||
// special columntypes
|
||||
extern map<char, int> special_columns;
|
||||
|
||||
Preamble preamble;
|
||||
|
||||
namespace {
|
||||
@ -402,6 +399,15 @@ Author const & Preamble::getAuthor(std::string const & name) const
|
||||
}
|
||||
|
||||
|
||||
int Preamble::getSpecialTableColumnArguments(char c) const
|
||||
{
|
||||
map<char, int>::const_iterator it = special_columns_.find(c);
|
||||
if (it == special_columns_.end())
|
||||
return -1;
|
||||
return it->second;
|
||||
}
|
||||
|
||||
|
||||
void Preamble::add_package(string const & name, vector<string> & options)
|
||||
{
|
||||
// every package inherits the global options
|
||||
@ -1240,7 +1246,7 @@ void Preamble::parse(Parser & p, string const & forceclass,
|
||||
TeX2LyXDocClass & tc)
|
||||
{
|
||||
// initialize fixed types
|
||||
special_columns['D'] = 3;
|
||||
special_columns_['D'] = 3;
|
||||
bool is_full_document = false;
|
||||
bool is_lyx_file = false;
|
||||
bool in_lyx_preamble = false;
|
||||
@ -1705,7 +1711,7 @@ void Preamble::parse(Parser & p, string const & forceclass,
|
||||
istringstream is(string(opts, 1));
|
||||
is >> nargs;
|
||||
}
|
||||
special_columns[name[0]] = nargs;
|
||||
special_columns_[name[0]] = nargs;
|
||||
h_preamble << "\\newcolumntype{" << name << "}";
|
||||
if (nargs)
|
||||
h_preamble << "[" << nargs << "]";
|
||||
|
@ -85,6 +85,9 @@ public:
|
||||
void registerAuthor(std::string const & name);
|
||||
/// Get author named \p name (must be registered first)
|
||||
Author const & getAuthor(std::string const & name) const;
|
||||
/// Get number of arguments of special table column type \c or -1
|
||||
/// if no column type \p c exists
|
||||
int getSpecialTableColumnArguments(char c) const;
|
||||
|
||||
/// Parses the LaTeX preamble into internal data
|
||||
void parse(Parser & p, std::string const & forceclass,
|
||||
@ -214,7 +217,10 @@ private:
|
||||
///
|
||||
void handle_if(Parser & p, bool in_lyx_preamble);
|
||||
|
||||
///
|
||||
AuthorList authors_;
|
||||
/// special table column types
|
||||
std::map<char, int> special_columns_;
|
||||
};
|
||||
|
||||
|
||||
|
@ -31,9 +31,6 @@ using namespace std;
|
||||
|
||||
namespace lyx {
|
||||
|
||||
// filled in preamble.cpp
|
||||
map<char, int> special_columns;
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
@ -420,29 +417,22 @@ void handle_colalign(Parser & p, vector<ColInfo> & colinfo,
|
||||
next.special += t.character();
|
||||
next.special += '{' + p.verbatim_item() + '}';
|
||||
break;
|
||||
default:
|
||||
default: {
|
||||
// try user defined column types
|
||||
if (special_columns.find(t.character()) !=
|
||||
special_columns.end()) {
|
||||
ci2special(next);
|
||||
next.special += t.character();
|
||||
int const nargs =
|
||||
special_columns[t.character()];
|
||||
for (int i = 0; i < nargs; ++i)
|
||||
next.special += '{' +
|
||||
p.verbatim_item() +
|
||||
'}';
|
||||
colinfo.push_back(next);
|
||||
next = ColInfo();
|
||||
} else {
|
||||
// unknown column specifier, assume no arguments
|
||||
ci2special(next);
|
||||
next.special += t.character();
|
||||
colinfo.push_back(next);
|
||||
next = ColInfo();
|
||||
}
|
||||
// unknown column types (nargs == -1) are
|
||||
// assumed to consume no arguments
|
||||
ci2special(next);
|
||||
next.special += t.character();
|
||||
int const nargs =
|
||||
preamble.getSpecialTableColumnArguments(t.character());
|
||||
for (int i = 0; i < nargs; ++i)
|
||||
next.special += '{' +
|
||||
p.verbatim_item() + '}';
|
||||
colinfo.push_back(next);
|
||||
next = ColInfo();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Maybe we have some column separators that need to be added to the
|
||||
|
Loading…
Reference in New Issue
Block a user