#include "Paragraph.h"
#include "paragraph_funcs.h"
#include "ParagraphParameters.h"
+#include "TextClass.h"
#include "TextMetrics.h"
#include "VSpace.h"
#include "WordLangTuple.h"
#include "insets/InsetSpecialChar.h"
#include "insets/InsetTabular.h"
+#include "support/docstream.h"
#include "support/lstrings.h"
#include "support/textutils.h"
#include "support/convert.h"
using support::bformat;
using support::contains;
using support::split;
+using support::subst;
using cap::cutSelection;
using cap::pasteParagraphList;
lex.eatLine();
docstring layoutname = lex.getDocString();
- font = Font(Font::ALL_INHERIT, bp.language);
+ font = Font(inherit_font, bp.language);
change = Change(Change::UNCHANGED);
TextClass const & tclass = bp.getTextClass();
}
} else if (token == "\\family") {
lex.next();
- font.setLyXFamily(lex.getString());
+ setLyXFamily(lex.getString(), font.fontInfo());
} else if (token == "\\series") {
lex.next();
- font.setLyXSeries(lex.getString());
+ setLyXSeries(lex.getString(), font.fontInfo());
} else if (token == "\\shape") {
lex.next();
- font.setLyXShape(lex.getString());
+ setLyXShape(lex.getString(), font.fontInfo());
} else if (token == "\\size") {
lex.next();
- font.setLyXSize(lex.getString());
+ setLyXSize(lex.getString(), font.fontInfo());
} else if (token == "\\lang") {
lex.next();
string const tok = lex.getString();
}
} else if (token == "\\numeric") {
lex.next();
- font.setNumber(font.setLyXMisc(lex.getString()));
+ font.fontInfo().setNumber(font.setLyXMisc(lex.getString()));
} else if (token == "\\emph") {
lex.next();
- font.setEmph(font.setLyXMisc(lex.getString()));
+ font.fontInfo().setEmph(font.setLyXMisc(lex.getString()));
} else if (token == "\\bar") {
lex.next();
string const tok = lex.getString();
if (tok == "under")
- font.setUnderbar(Font::ON);
+ font.fontInfo().setUnderbar(FONT_ON);
else if (tok == "no")
- font.setUnderbar(Font::OFF);
+ font.fontInfo().setUnderbar(FONT_OFF);
else if (tok == "default")
- font.setUnderbar(Font::INHERIT);
+ font.fontInfo().setUnderbar(FONT_INHERIT);
else
lex.printError("Unknown bar font flag "
"`$$Token'");
} else if (token == "\\noun") {
lex.next();
- font.setNoun(font.setLyXMisc(lex.getString()));
+ font.fontInfo().setNoun(font.setLyXMisc(lex.getString()));
} else if (token == "\\color") {
lex.next();
- font.setLyXColor(lex.getString());
+ setLyXColor(lex.getString(), font.fontInfo());
} else if (token == "\\InsetSpace" || token == "\\SpecialChar") {
// Insets don't make sense in a free-spacing context! ---Kayvan
break;
}
- LYXERR(Debug::PARSER) << "Handling paragraph token: `"
- << token << '\'' << endl;
+ LYXERR(Debug::PARSER, "Handling paragraph token: `" << token << '\'');
if (token == "\\begin_layout" || token == "\\end_document"
|| token == "\\end_inset" || token == "\\begin_deeper"
|| token == "\\end_deeper") {
static docstring const number_unary_operators = from_ascii("+-");
static docstring const number_seperators = from_ascii(".,:");
- if (cur.current_font.number() == Font::ON) {
+ if (cur.current_font.fontInfo().number() == FONT_ON) {
if (!isDigit(c) && !contains(number_operators, c) &&
!(contains(number_seperators, c) &&
cur.pos() != 0 &&
cur.pos() != cur.lastpos() &&
- tm.getDisplayFont(pit, cur.pos()).number() == Font::ON &&
- tm.getDisplayFont(pit, cur.pos() - 1).number() == Font::ON)
+ tm.getDisplayFont(pit, cur.pos()).fontInfo().number() == FONT_ON &&
+ tm.getDisplayFont(pit, cur.pos() - 1).fontInfo().number() == FONT_ON)
)
number(cur); // Set current_font.number to OFF
} else if (isDigit(c) &&
tm.font_);
} else if (contains(number_seperators, c)
&& cur.pos() >= 2
- && tm.getDisplayFont(pit, cur.pos() - 2).number() == Font::ON) {
+ && tm.getDisplayFont(pit, cur.pos() - 2).fontInfo().number() == FONT_ON) {
setCharFont(buffer, pit, cur.pos() - 1, cur.current_font,
tm.font_);
}
if ((cur.pos() >= 2) && (par.isLineSeparator(cur.pos() - 1))) {
// get font in front and behind the space in question. But do NOT
// use getFont(cur.pos()) because the character c is not inserted yet
- Font const & pre_space_font = tm.getDisplayFont(cur.pit(), cur.pos() - 2);
+ Font const pre_space_font = tm.getDisplayFont(cur.pit(), cur.pos() - 2);
Font const & post_space_font = cur.real_current_font;
bool pre_space_rtl = pre_space_font.isVisibleRightToLeft();
bool post_space_rtl = post_space_font.isVisibleRightToLeft();
// the cursor set functions have a special mechanism. When they
// realize, that you left an empty paragraph, they will delete it.
-bool Text::cursorRightOneWord(Cursor & cur)
+bool Text::cursorForwardOneWord(Cursor & cur)
{
BOOST_ASSERT(this == cur.text());
}
-bool Text::cursorLeftOneWord(Cursor & cur)
+bool Text::cursorBackwardOneWord(Cursor & cur)
{
BOOST_ASSERT(this == cur.text());
else {
cur.resetAnchor();
cur.selection() = true;
- cursorRightOneWord(cur);
+ cursorForwardOneWord(cur);
cur.setSelection();
cutSelection(cur, true, false);
checkBufferStructure(cur.buffer(), cur);
else {
cur.resetAnchor();
cur.selection() = true;
- cursorLeftOneWord(cur);
+ cursorBackwardOneWord(cur);
cur.setSelection();
cutSelection(cur, true, false);
checkBufferStructure(cur.buffer(), cur);
} else {
from = cur.top();
getWord(from, to, PARTIAL_WORD);
- cursorRightOneWord(cur);
+ cursorForwardOneWord(cur);
}
cur.recordUndoSelection();
ParagraphList plist;
if (cur.lastpit() != 0 || cur.lastpos() != 0)
plist = paragraphs();
- cur.popLeft();
+ cur.popBackward();
// store cursor offset
if (spit == 0)
spos += cur.pos();
Paragraph par;
par.params().depth(depth);
- par.setFont(0, Font(Font::ALL_INHERIT, buf.params().language));
+ par.setFont(0, Font(inherit_font, buf.params().language));
pars_.push_back(par);
// FIXME: goddamn InsetTabular makes us pass a Buffer
// font. (Asger)
// No, from the document font (MV)
Font font = cur.real_current_font;
- font.reduce(buf.params().getFont());
+ font.fontInfo().reduce(buf.params().getFont().fontInfo());
os << bformat(_("Font: %1$s"), font.stateText(&buf.params()));
docstring text;
docstring par_text = pars_[pit].asString(cur.buffer(), false);
+ string piece;
+ // the return string of math matrices might contain linebreaks
+ par_text = subst(par_text, '\n', '-');
for (int i = 0; i < lyxrc.label_init_length; ++i) {
if (par_text.empty())
break;