#endif
#include "insetquotes.h"
-#include "support/lyxlib.h"
-#include "debug.h"
-#include "lyxfont.h"
-#include "lyxrc.h"
-#include "buffer.h"
-#include "LaTeXFeatures.h"
+
+#include "support/LAssert.h"
#include "support/lstrings.h"
+#include "BufferView.h"
+#include "LaTeXFeatures.h"
#include "Painter.h"
+#include "buffer.h"
+#include "debug.h"
#include "font.h"
#include "language.h"
-#include "BufferView.h"
+#include "lyxfont.h"
+#include "lyxrc.h"
+#include "paragraph.h"
using std::ostream;
using std::endl;
{
// Decide whether left or right
switch (c) {
- case ' ': case '(': case '{': case '[': case '-': case ':':
+ case ' ': case '(':
case Paragraph::META_HFILL:
case Paragraph::META_NEWLINE:
side_ = LeftQ; // left quote
disp += disp;
if (lyxrc.font_norm_type == LyXRC::ISO_8859_1
- || lyxrc.font_norm_type == LyXRC::ISO_8859_15)
+ || lyxrc.font_norm_type == LyXRC::ISO_8859_3
+ || lyxrc.font_norm_type == LyXRC::ISO_8859_4
+ || lyxrc.font_norm_type == LyXRC::ISO_8859_9) {
+ if (disp == "'")
+ disp = "´";
+ else if (disp == "''")
+ disp = "´´";
+ }
+ if (lyxrc.font_norm_type == LyXRC::ISO_8859_1
+ || lyxrc.font_norm_type == LyXRC::ISO_8859_9
+ || lyxrc.font_norm_type == LyXRC::ISO_8859_15) {
if (disp == "<<")
disp = '«';
else if (disp == ">>")
disp = '»';
+ }
// in french, spaces are added inside double quotes
if (times_ == DoubleQ && prefixIs(loclang->code(), "fr")) {
}
+#if 0
LyXFont const InsetQuotes::convertFont(LyXFont const & f) const
{
+#if 1
+ return f;
+#else
LyXFont font(f);
-#ifndef NO_LATEX
- // quotes-insets cannot be latex of any kind
- font.setLatex(LyXFont::OFF);
-#endif
return font;
+#endif
}
+#endif
void InsetQuotes::draw(BufferView * bv, LyXFont const & font,
void InsetQuotes::read(Buffer const *, LyXLex & lex)
{
lex.nextToken();
- parseString(lex.GetString());
+ parseString(lex.getString());
lex.next();
- if (lex.GetString() != "\\end_inset")
+ if (lex.getString() != "\\end_inset") {
lex.printError("Missing \\end_inset at this point");
+ }
}
extern bool use_babel;
int InsetQuotes::latex(Buffer const * buf, ostream & os,
- bool /*fragile*/, bool) const
+ bool /*fragile*/, bool /* free_spc */) const
{
-#ifdef WITH_WARNINGS
-#warning How do we get the local language here??
-#endif
- string const doclang = buf->getLanguage()->babel();
+ // How do we get the local language here??
+ lyx::pos_type curr_pos = parOwner()->getPositionOfInset(this);
+ lyx::Assert(curr_pos != -1);
+ string const curr_lang =
+ parOwner()->getFont(buf->params,
+ curr_pos).language()->babel();
+
const int quoteind = quote_index[side_][language_];
string qstr;
if (language_ == FrenchQ && times_ == DoubleQ
- && doclang == "frenchb") {
+ && curr_lang == "frenchb") {
if (side_ == LeftQ)
qstr = "\\og "; //the spaces are important here
else
qstr = " \\fg{}"; //and here
} else if (language_ == FrenchQ && times_ == DoubleQ
- && doclang == "french") {
+ && curr_lang == "french") {
if (side_ == LeftQ)
qstr = "<< "; //the spaces are important here
else
}
-int InsetQuotes::docBook(Buffer const *, ostream & os) const
+int InsetQuotes::docbook(Buffer const *, ostream & os) const
{
if (times_ == DoubleQ) {
if (side_ == LeftQ)
&& lyxrc.fontenc != "T1") {
if (times_ == SingleQ)
switch (type) {
- case ',': features.quotesinglbase = true; break;
- case '<': features.guilsinglleft = true; break;
- case '>': features.guilsinglright = true; break;
+ case ',': features.require("quotesinglbase"); break;
+ case '<': features.require("guilsinglleft"); break;
+ case '>': features.require("guilsinglright"); break;
default: break;
}
else
switch (type) {
- case ',': features.quotedblbase = true; break;
- case '<': features.guillemotleft = true; break;
- case '>': features.guillemotright = true; break;
+ case ',': features.require("quotedblbase"); break;
+ case '<': features.require("guillemotleft"); break;
+ case '>': features.require("guillemotright"); break;
default: break;
}
}