Font const & font,
Layout const & style)
{
- if (style.pass_thru || runparams.verbatim)
+ if (style.pass_thru || runparams.pass_thru)
return false;
if (i + 1 < int(text_.size())) {
}
-void Paragraph::Private::latexInset(
- BufferParams const & bparams,
- odocstream & os,
- TexRow & texrow,
- OutputParams & runparams,
- Font & running_font,
- Font & basefont,
- Font const & outerfont,
- bool & open_font,
- Change & running_change,
- Layout const & style,
- pos_type & i,
- unsigned int & column)
+void Paragraph::Private::latexInset(BufferParams const & bparams,
+ odocstream & os,
+ TexRow & texrow,
+ OutputParams & runparams,
+ Font & running_font,
+ Font & basefont,
+ Font const & outerfont,
+ bool & open_font,
+ Change & running_change,
+ Layout const & style,
+ pos_type & i,
+ unsigned int & column)
{
Inset * inset = owner_->getInset(i);
LASSERT(inset, /**/);
{
char_type const c = text_[i];
- if (style.pass_thru) {
+ if (style.pass_thru || runparams.pass_thru) {
if (c != '\0')
// FIXME UNICODE: This can fail if c cannot
// be encoded in the current encoding.
return;
}
- if (runparams.verbatim) {
- // FIXME UNICODE: This can fail if c cannot
- // be encoded in the current encoding.
- os.put(c);
- return;
- }
-
// If T1 font encoding is used, use the special
// characters it provides.
// NOTE: some languages reset the font encoding
Font f;
TexRow tr;
odocstringstream ods;
- owner_->latex(bp, f, ods, tr, features.runparams());
- docstring d = ods.str();
- if (!d.empty())
- features.addPreambleSnippet(to_utf8(d));
+ // we have to provide all the optional arguments here, even though
+ // the last one is the only one we care about.
+ owner_->latex(bp, f, ods, tr, features.runparams(), 0, -1, true);
+ docstring const d = ods.str();
+ if (!d.empty()) {
+ // this will have "{" at the beginning, but not at the end
+ string const content = to_utf8(d);
+ string const cmd = layout_->latexname();
+ features.addPreambleSnippet("\\" + cmd + content + "}");
+ }
}
if (features.runparams().flavor == OutputParams::HTML
// This one spits out the text of the paragraph
-bool Paragraph::latex(BufferParams const & bparams,
+void Paragraph::latex(BufferParams const & bparams,
Font const & outerfont,
odocstream & os, TexRow & texrow,
OutputParams const & runparams,
- int start_pos, int end_pos) const
+ int start_pos, int end_pos, bool force) const
{
LYXERR(Debug::LATEX, "Paragraph::latex... " << this);
- if (layout().inpreamble)
- return true;
-
- bool return_value = false;
-
- bool const allowcust = allowParagraphCustomization();
-
// FIXME This check should not be needed. Perhaps issue an
// error if it triggers.
Layout const & style = inInset().forcePlainLayout() ?
bparams.documentClass().plainLayout() : *d->layout_;
+ if (!force && style.inpreamble)
+ return;
+
+ bool const allowcust = allowParagraphCustomization();
+
// Current base font for all inherited font changes, without any
// change caused by an individual character, except for the language:
// It is set to the language of the first character.
}
// Switch file encoding if necessary (and allowed)
- if (!runparams.verbatim &&
+ if (!runparams.pass_thru && !style.pass_thru &&
runparams.encoding->package() != Encoding::none &&
font.language()->encoding()->package() != Encoding::none) {
pair<bool, int> const enc_switch = switchEncoding(os, bparams,
if (open_font) {
#ifdef FIXED_LANGUAGE_END_DETECTION
if (next_) {
- running_font
- .latexWriteEndChanges(os, bparams, runparams,
- basefont,
+ running_font.latexWriteEndChanges(os, bparams,
+ runparams, basefont,
next_->getFont(bparams, 0, outerfont));
} else {
running_font.latexWriteEndChanges(os, bparams,
// Needed if there is an optional argument but no contents.
if (body_pos > 0 && body_pos == size()) {
os << "}]~";
- return_value = false;
}
if (allowcust && d->endTeXParParams(bparams, os, texrow, runparams)
}
LYXERR(Debug::LATEX, "Paragraph::latex... done " << this);
- return return_value;
}
}
-bool Paragraph::spellCheck(pos_type & from, pos_type & to, WordLangTuple & wl,
+SpellChecker::Result Paragraph::spellCheck(pos_type & from, pos_type & to, WordLangTuple & wl,
docstring_list & suggestions, bool do_suggestion) const
{
SpellChecker * speller = theSpellChecker();
if (!speller)
- return false;
+ return SpellChecker::WORD_OK;
if (!d->layout_->spellcheck || !inInset().allowSpellCheck())
- return false;
+ return SpellChecker::WORD_OK;
locateWord(from, to, WHOLE_WORD);
if (from == to || from >= pos_type(d->text_.size()))
- return false;
+ return SpellChecker::WORD_OK;
docstring word = asString(from, to, AS_STR_INSETS);
// Ignore words with digits
}
wl = WordLangTuple(word, lang);
SpellChecker::Result res = ignored ?
- SpellChecker::OK : speller->check(wl);
-#if 0
-// FIXME: the code below makes aspell abort if a word in an unknown
-// language is checked.
- // Just ignore any error that the spellchecker reports.
- // FIXME: we should through out an exception and catch it in the GUI to
- // display the error.
- if (!speller->error().empty())
- return false;
-#endif
+ SpellChecker::WORD_OK : speller->check(wl);
- bool const misspelled = res != SpellChecker::OK
- && res != SpellChecker::IGNORED_WORD;
+ bool const misspelled_ = SpellChecker::misspelled(res) ;
if (lyxrc.spellcheck_continuously)
- d->fontlist_.setMisspelled(from, to, misspelled);
+ d->fontlist_.setMisspelled(from, to, misspelled_);
- if (misspelled && do_suggestion)
+ if (misspelled_ && do_suggestion)
speller->suggest(wl, suggestions);
else
suggestions.clear();
- return misspelled;
+ return res;
}
pos_type to = pos;
WordLangTuple wl;
docstring_list suggestions;
- return spellCheck(from, to, wl, suggestions, false);
+ SpellChecker::Result res = spellCheck(from, to, wl, suggestions, false);
+ return SpellChecker::misspelled(res) ;
}