]> git.lyx.org Git - lyx.git/blobdiff - src/Layout.cpp
Try even harder to obtain an instant preview
[lyx.git] / src / Layout.cpp
index 46035513c7bd163a28d15c6505941f48c2001d12..1e8943377716c393cbefbeff80cb3ab64fa40f0a 100644 (file)
@@ -51,6 +51,7 @@ enum LayoutTags {
        LT_FONT,
        LT_FREE_SPACING,
        LT_PASS_THRU,
+       LT_PASS_THRU_CHARS,
        LT_PARBREAK_IS_NEWLINE,
        LT_ITEMCOMMAND,
        LT_ITEMSEP,
@@ -105,6 +106,7 @@ enum LayoutTags {
        LT_RESETARGS,
        LT_RIGHTDELIM,
        LT_FORCELOCAL,
+       LT_TOGGLE_INDENT,
        LT_INTITLE // keep this last!
 };
 
@@ -148,6 +150,7 @@ Layout::Layout()
        spellcheck = true;
        forcelocal = 0;
        itemcommand_ = "item";
+       toggle_indent = ITOGGLE_DOCUMENT_DEFAULT;
 }
 
 
@@ -233,6 +236,7 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass)
                { "parsep",         LT_PARSEP },
                { "parskip",        LT_PARSKIP },
                { "passthru",       LT_PASS_THRU },
+               { "passthruchars",  LT_PASS_THRU_CHARS },
                { "preamble",       LT_PREAMBLE },
                { "refprefix",      LT_REFPREFIX },
                { "requires",       LT_REQUIRES },
@@ -243,6 +247,7 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass)
                { "spellcheck",     LT_SPELLCHECK },
                { "textfont",       LT_TEXTFONT },
                { "toclevel",       LT_TOCLEVEL },
+               { "toggleindent",   LT_TOGGLE_INDENT },
                { "topsep",         LT_TOPSEP }
        };
 
@@ -383,6 +388,19 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass)
                        lex >> nextnoindent;
                        break;
 
+               case LT_TOGGLE_INDENT: {
+                       string tog;
+                       lex >> tog;
+                       tog = support::ascii_lowercase(tog);
+                       if (tog == "always")
+                               toggle_indent = ITOGGLE_ALWAYS;
+                       else if (tog == "never")
+                               toggle_indent = ITOGGLE_NEVER;
+                       else
+                               toggle_indent = ITOGGLE_DOCUMENT_DEFAULT;
+                       break;
+               }
+
                case LT_COMMANDDEPTH:
                        lex >> commanddepth;
                        break;
@@ -532,6 +550,10 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass)
                        lex >> pass_thru;
                        break;
 
+               case LT_PASS_THRU_CHARS:
+                       lex >> pass_thru_chars;
+                       break;
+
                case LT_PARBREAK_IS_NEWLINE:
                        lex >> parbreak_is_newline;
                        break;
@@ -775,6 +797,8 @@ void Layout::readLabelType(Lexer & lex)
 
 void Layout::readEndLabelType(Lexer & lex)
 {
+       // this should be const, but can't be because
+       // of PushPopHelper.
        static LexerKeyword endlabelTypeTags[] = {
                { "box",              END_LABEL_BOX },
                { "filled_box", END_LABEL_FILLED_BOX },
@@ -1262,6 +1286,8 @@ void Layout::write(ostream & os) const
                os << "\tLabelCounter \"" << to_utf8(counter) << "\"\n";
        os << "\tFreeSpacing " << free_spacing << '\n';
        os << "\tPassThru " << pass_thru << '\n';
+       if (!pass_thru_chars.empty())
+               os << "\tPassThruChars " << to_utf8(pass_thru_chars) << '\n';
        os << "\tParbreakIsNewline " << parbreak_is_newline << '\n';
        switch (spacing.getSpace()) {
        case Spacing::Double:
@@ -1505,14 +1531,11 @@ void Layout::makeDefaultCSS() const
                htmldefaultstyle_ += from_ascii(tmp);
        }
 
-// tex2lyx does not see output_xhtml.cpp
-#ifndef NO_LAYOUT_CSS
        // alignment
        string where = alignmentToCSS(align);
        if (!where.empty()) {
                htmldefaultstyle_ += from_ascii("text-align: " + where + ";\n");
        }
-#endif
 
        // wrap up what we have, if anything
        if (!htmldefaultstyle_.empty())