namespace {
-int const LYX_FORMAT = 339; //rgh: removed modules
+int const LYX_FORMAT = 340; //jamatos: add plain layout
typedef map<string, bool> DepClean;
typedef map<docstring, pair<InsetLabel const *, Buffer::References> > RefCache;
wa_->closeAll();
delete wa_;
}
+ delete inset;
}
-
+
BufferParams params;
LyXVC lyxvc;
FileName temppath;
/// which maps the macro definition position to the scope and the MacroData.
NamePositionScopeMacroMap macros;
bool macro_lock;
-
+
/// positions of child buffers in the buffer
typedef map<Buffer const * const, DocIterator> BufferPositionMap;
typedef pair<DocIterator, Buffer const *> ScopeBuffer;
/// documents), needed for appropriate update of natbib labels.
mutable support::FileNameList bibfilesCache_;
- // FIXME The caching mechanism could be improved. At present, we have a
+ // FIXME The caching mechanism could be improved. At present, we have a
// cache for each Buffer, that caches all the bibliography info for that
- // Buffer. A more efficient solution would be to have a global cache per
+ // Buffer. A more efficient solution would be to have a global cache per
// file, and then to construct the Buffer's bibinfo from that.
/// A cache for bibliography info
mutable BiblioInfo bibinfo_;
mutable RefCache ref_cache_;
/// our Text that should be wrapped in an InsetText
- InsetText inset;
+ InsetText * inset;
};
Buffer::Impl::Impl(Buffer & parent, FileName const & file, bool readonly_)
: parent_buffer(0), lyx_clean(true), bak_clean(true), unnamed(false),
read_only(readonly_), filename(file), file_fully_loaded(false),
- toc_backend(&parent), macro_lock(false), timestamp_(0),
+ toc_backend(&parent), macro_lock(false), timestamp_(0),
checksum_(0), wa_(0), undo_(parent), bibinfoCacheValid_(false)
{
temppath = createBufferTmpDir();
{
LYXERR(Debug::INFO, "Buffer::Buffer()");
- d->inset.setBuffer(*this);
- d->inset.initParagraphs(*this);
- d->inset.setAutoBreakRows(true);
- d->inset.getText(0)->setMacrocontextPosition(par_iterator_begin());
+ d->inset = new InsetText(*this);
+ d->inset->setAutoBreakRows(true);
+ d->inset->getText(0)->setMacrocontextPosition(par_iterator_begin());
}
Text & Buffer::text() const
{
- return const_cast<Text &>(d->inset.text_);
+ return d->inset->text();
}
Inset & Buffer::inset() const
{
- return const_cast<InsetText &>(d->inset);
+ return *d->inset;
}
params().clearLayoutModules();
params().clearRemovedModules();
params().pdfoptions().clear();
-
+
for (int i = 0; i < 4; ++i) {
params().user_defined_bullet(i) = ITEMIZE_DEFAULTS[i];
params().temp_bullet(i) = ITEMIZE_DEFAULTS[i];
errorList.push_back(ErrorItem(_("Document header error"),
s, -1, 0, 0));
}
-
+
params().makeDocumentClass();
return unknown_tokens;
}
// read main text
- bool const res = text().read(*this, lex, errorList, &(d->inset));
+ bool const res = text().read(*this, lex, errorList, d->inset);
updateMacros();
updateMacroInstances();
"representable in the chosen encoding.\n"
"Changing the document encoding to utf8 could help."),
e.par_id, e.pos, e.pos + 1));
- failed_export = true;
+ failed_export = true;
}
catch (iconv_codecvt_facet_exception & e) {
errorList.push_back(ErrorItem(_("iconv conversion failed"),
// because then the macros will not get the right "redefinition"
// flag as they don't see the parent macros which are output before.
updateMacros();
-
+
// fold macros if possible, still with parent buffer as the
// macros will be put in the prefix anyway.
updateMacroInstances();
-
+
// There are a few differences between nice LaTeX and usual files:
// usual is \batchmode and has a
// special input@path to allow the including of figures
// Write the preamble
runparams.use_babel = params().writeLaTeX(os, features, d->texrow);
+ runparams.use_japanese = features.isRequired("japanese");
+
if (!output_body)
return;
// make the body.
os << "\\begin{document}\n";
d->texrow.newline();
-
+
// output the parent macros
MacroSet::iterator it = parentMacros.begin();
MacroSet::iterator end = parentMacros.end();
for (; it != end; ++it)
- (*it)->write(os, true);
+ (*it)->write(os, true);
} // output_preamble
d->texrow.start(paragraphs().begin()->id(), 0);
-
+
LYXERR(Debug::INFO, "preamble finished, now the body.");
// if we are doing a real file with body, even if this is the
if (runparams.flavor == OutputParams::XML)
top += params().language->code();
else
- top += params().language->code().substr(0,2);
+ top += params().language->code().substr(0, 2);
top += '"';
if (!params().options.empty()) {
}
-void Buffer::invalidateBibinfoCache()
+void Buffer::invalidateBibinfoCache()
{
d->bibinfoCacheValid_ = false;
}
BiblioInfo const & Buffer::masterBibInfo() const
-{
+{
// if this is a child document and the parent is already loaded
// use the parent's list instead [ale990412]
Buffer const * const tmp = masterBuffer();
Branch * branch = branchList.find(branchName);
if (!branch)
LYXERR0("Branch " << branchName << " does not exist.");
- else
+ else
branch->setSelected(func.action == LFUN_BRANCH_ACTIVATE);
if (result)
*result = true;
{
LASSERT(d->filename.exists(), /**/);
// if method == timestamp, check timestamp before checksum
- return (method == checksum_method
+ return (method == checksum_method
|| d->timestamp_ != d->filename.lastModified())
&& d->checksum_ != d->filename.checksum();
}
{
if (!d->parent_buffer)
return this;
-
+
return d->parent_buffer->masterBuffer();
}
return m.end();
it--;
- return it;
+ return it;
}
-MacroData const * Buffer::getBufferMacro(docstring const & name,
+MacroData const * Buffer::getBufferMacro(docstring const & name,
DocIterator const & pos) const
{
LYXERR(Debug::MACROS, "Searching for " << to_ascii(name) << " at " << pos);
// we haven't found anything yet
DocIterator bestPos = par_iterator_begin();
MacroData const * bestData = 0;
-
+
// find macro definitions for name
Impl::NamePositionScopeMacroMap::iterator nameIt
= d->macros.find(name);
bestData = &it->second.second;
break;
}
-
+
// try previous macro if there is one
if (it == nameIt->second.begin())
break;
break;
--it;
}
-
+
// return the best macro we have found
return bestData;
}
DocIterator const & pos, bool global) const
{
if (d->macro_lock)
- return 0;
+ return 0;
// query buffer macros
MacroData const * data = getBufferMacro(name, pos);
InsetList::const_iterator end = insets.end();
for (; iit != end; ++iit) {
it.pos() = iit->pos;
-
+
// is it a nested text inset?
if (iit->inset->asInsetText()) {
// Inset needs its own scope?
- InsetText const * itext
+ InsetText const * itext
= iit->inset->asInsetText();
bool newScope = itext->isMacroScope();
- // scope which ends just behind the inset
+ // scope which ends just behind the inset
DocIterator insetScope = it;
++insetScope.pos();
it.pop_back();
continue;
}
-
+
// is it an external file?
if (iit->inset->lyxCode() == INCLUDE_CODE) {
// get buffer of external file
- InsetCommand const & inset
+ InsetCommand const & inset
= static_cast<InsetCommand const &>(*iit->inset);
InsetCommandParams const & ip = inset.params();
d->macro_lock = true;
Buffer * child = loadIfNeeded(*this, ip);
d->macro_lock = false;
if (!child)
- continue;
+ continue;
// register its position, but only when it is
// included first in the buffer
if (d->children_positions.find(child)
== d->children_positions.end())
d->children_positions[child] = it;
-
+
// register child with its scope
d->position_to_children[it] = Impl::ScopeBuffer(scope, child);
continue;
if (iit->inset->lyxCode() != MATHMACRO_CODE)
continue;
-
+
// get macro data
MathMacroTemplate & macroTemplate
= static_cast<MathMacroTemplate &>(*iit->inset);
return;
d->macro_lock = true;
-
+
// loop over macro names
Impl::NamePositionScopeMacroMap::iterator nameIt = d->macros.begin();
Impl::NamePositionScopeMacroMap::iterator nameEnd = d->macros.end();
if (d->parent_buffer)
d->parent_buffer->listMacroNames(macros);
- d->macro_lock = false;
+ d->macro_lock = false;
}
{
if (!d->parent_buffer)
return;
-
+
MacroNameSet names;
d->parent_buffer->listMacroNames(names);
-
+
// resolve macros
MacroNameSet::iterator it = names.begin();
MacroNameSet::iterator end = names.end();
for (; it != end; ++it) {
// defined?
- MacroData const * data =
+ MacroData const * data =
d->parent_buffer->getMacro(*it, *this, false);
if (data) {
macros.insert(data);
-
+
// we cannot access the original MathMacroTemplate anymore
// here to calls validate method. So we do its work here manually.
// FIXME: somehow make the template accessible here.
///
int start()
{
- command_ = to_utf8(bformat(_("Auto-saving %1$s"),
+ command_ = to_utf8(bformat(_("Auto-saving %1$s"),
from_utf8(fname_.absFilename())));
return run(DontWait);
}
return "docbook";
if (isLiterate())
return "literate";
+ if (params().encoding().package() == Encoding::japanese)
+ return "platex";
return "latex";
}