I just had a look at the bug list and don't see anything which should be fixed for 1.2.0. The only incompatibility with 1.1.6 is still that we forget about the paragrap-extra "indent" stuff (we loose this information). This is actually an added "left-indent" for the whole paragraph (not only the first row of the paragraph).
With the attached patch we read/write/handle this information again. The only thing missing in the patch is the visual UI to input/change the information which should be in the Paragrap-Layout, but IMO that can be done also later. For now we don't loose old information and also handle it quite good. Jug -- -._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._ Dr. Jürgen Vigna E-Mail: [EMAIL PROTECTED] Italienallee 13/N Tel/Fax: +39-0471-450260 / +39-0471-450253 I-39100 Bozen Web: http://www.sad.it/~jug -._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._ You can't kiss a girl unexpectedly -- only sooner than she thought you would.
Index: src/LaTeXFeatures.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/LaTeXFeatures.C,v retrieving revision 1.61 diff -u -p -r1.61 LaTeXFeatures.C --- src/LaTeXFeatures.C 23 Apr 2002 22:34:24 -0000 1.61 +++ src/LaTeXFeatures.C 3 May 2002 13:34:09 -0000 @@ -303,8 +303,8 @@ string const LaTeXFeatures::getMacros() // other if (isRequired("NeedLyXMinipageIndent")) macros << minipageindent_def; - if (isRequired("ParagraphIndent")) - macros << paragraphindent_def; + if (isRequired("ParagraphLeftIndent")) + macros << paragraphleftindent_def; if (isRequired("NeedLyXFootnoteCode")) macros << floatingfootnote_def; Index: src/ParagraphParameters.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ParagraphParameters.C,v retrieving revision 1.8 diff -u -p -r1.8 ParagraphParameters.C --- src/ParagraphParameters.C 21 Mar 2002 17:25:09 -0000 1.8 +++ src/ParagraphParameters.C 3 May 2002 13:34:09 -0000 @@ -268,6 +268,21 @@ void ParagraphParameters::labelWidthStri set_from_struct(tmp); } + + +LyXLength const & ParagraphParameters::leftIndent() const +{ + return param->leftindent; +} + + +void ParagraphParameters::leftIndent(LyXLength const & li) +{ + ParameterStruct tmp(*param); + tmp.leftindent = li; + set_from_struct(tmp); +} + #ifndef NO_PEXTRA_REALLY int ParagraphParameters::pextraType() const { Index: src/ParagraphParameters.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ParagraphParameters.h,v retrieving revision 1.7 diff -u -p -r1.7 ParagraphParameters.h --- src/ParagraphParameters.h 3 Aug 2001 18:28:03 -0000 1.7 +++ src/ParagraphParameters.h 3 May 2002 13:34:09 -0000 @@ -87,6 +87,11 @@ public: string const & labelWidthString() const; /// void labelWidthString(string const &); + /// + LyXLength const & leftIndent() const; + /// + void leftIndent(LyXLength const &); + /// #ifndef NO_PEXTRA_REALLY /// int pextraType() const; Index: src/ParameterStruct.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ParameterStruct.h,v retrieving revision 1.5 diff -u -p -r1.5 ParameterStruct.h --- src/ParameterStruct.h 21 Mar 2002 17:25:09 -0000 1.5 +++ src/ParameterStruct.h 3 May 2002 13:34:09 -0000 @@ -6,6 +6,7 @@ #include "vspace.h" #include "Spacing.h" #include "layout.h" +#include "lyxlength.h" #ifdef __GNUG__ #pragma interface @@ -45,6 +46,9 @@ struct ParameterStruct { string labelstring; /// string labelwidthstring; + /// + LyXLength leftindent; + /// #ifndef NO_PEXTRA_REALLY /// int pextra_type; @@ -93,6 +97,7 @@ bool operator==(ParameterStruct const & && ps1.appendix == ps2.appendix && ps1.labelstring == ps2.labelstring && ps1.labelwidthstring == ps2.labelwidthstring + && ps1.leftindent == ps2.leftindent #ifndef NO_PEXTRA_REALLY && ps1.pextra_type == ps2.pextra_type && ps1.pextra_width == ps2.pextra_width Index: src/buffer.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/buffer.C,v retrieving revision 1.332 diff -u -p -r1.332 buffer.C --- src/buffer.C 2 May 2002 12:21:41 -0000 1.332 +++ src/buffer.C 3 May 2002 13:34:12 -0000 @@ -718,6 +718,10 @@ Buffer::parseSingleLyXformat2Token(LyXLe params.fonts = lex.getString(); } else if (token == "\\noindent") { par->params().noindent(true); + } else if (token == "\\leftindent") { + lex.nextToken(); + LyXLength value(lex.getString()); + par->params().leftIndent(value); } else if (token == "\\fill_top") { par->params().spaceTop(VSpace(VSpace::VFILL)); } else if (token == "\\fill_bottom") { @@ -1385,6 +1389,11 @@ Buffer::parseSingleLyXformat2Token(LyXLe } parBeforeMinipage->insertInset (parBeforeMinipage->size(), mini, font); + } else if (par->params().pextraType() == Paragraph::PEXTRA_INDENT) { + +par->params().leftIndent(LyXLength(par->params().pextraWidth())); + if (!par->params().pextraWidthp().empty()) { + +par->params().leftIndent(LyXLength((par->params().pextraWidthp())+"col%")); + } } } // End of pextra_minipage compability @@ -2587,7 +2596,9 @@ void Buffer::latexParagraphs(ostream & o was_title = false; } - if (layout.isEnvironment()) { + if (layout.isEnvironment() || + !par->params().leftIndent().zero()) + { par = par->TeXEnvironment(this, params, ofs, texrow); } else { par = par->TeXOnePar(this, params, ofs, texrow, false); Index: src/lyx_sty.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyx_sty.C,v retrieving revision 1.8 diff -u -p -r1.8 lyx_sty.C --- src/lyx_sty.C 21 Mar 2002 17:25:12 -0000 1.8 +++ src/lyx_sty.C 3 May 2002 13:34:12 -0000 @@ -75,8 +75,8 @@ string const guilsinglright_def = " {\\usefont{U}{lasy}{m}{n}\\char'51}%\n" "}"; -string const paragraphindent_def = - "\\newenvironment{LyXParagraphIndent}[1]%\n" +string const paragraphleftindent_def = + "\\newenvironment{LyXParagraphLeftIndent}[1]%\n" "{\n" " \\begin{list}{}{%\n" " \\setlength\\topsep{0pt}%\n" Index: src/lyx_sty.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyx_sty.h,v retrieving revision 1.9 diff -u -p -r1.9 lyx_sty.h --- src/lyx_sty.h 21 Mar 2002 17:25:12 -0000 1.9 +++ src/lyx_sty.h 3 May 2002 13:34:12 -0000 @@ -53,7 +53,7 @@ extern string const guilsinglleft_def; /// extern string const guilsinglright_def; /// -extern string const paragraphindent_def; +extern string const paragraphleftindent_def; /// extern string const floatingfootnote_def; /// Index: src/paragraph.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/paragraph.C,v retrieving revision 1.202 diff -u -p -r1.202 paragraph.C --- src/paragraph.C 12 Apr 2002 10:29:12 -0000 1.202 +++ src/paragraph.C 3 May 2002 13:34:13 -0000 @@ -231,7 +231,11 @@ void Paragraph::writeFile(Buffer const * // Noindent? if (params().noindent()) os << "\\noindent "; - + + // Do we have a manual left indent? + if (!params().leftIndent().zero()) + os << "\\leftindent " << params().leftIndent().asString() << " "; + // Alignment? if (params().align() != LYX_ALIGN_LAYOUT) { int h = 0; @@ -389,6 +393,9 @@ void Paragraph::validate(LaTeXFeatures & } } + if (!params().leftIndent().zero()) + features.require("ParagraphLeftIndent"); + // then the insets LyXLayout const & lout = textclasslist[bparams.textclass][layout()]; @@ -1843,6 +1850,14 @@ Paragraph * Paragraph::TeXEnvironment(Bu texrow.newline(); } } + + bool leftindent_open = false; + if (!params().leftIndent().zero()) { + os << "\\begin{LyXParagraphLeftIndent}{" << + params().leftIndent().asLatexString() << "}\n"; + texrow.newline(); + leftindent_open = true; + } if (style.isEnvironment()) { if (style.latextype == LATEX_LIST_ENVIRONMENT) { @@ -1888,13 +1903,19 @@ Paragraph * Paragraph::TeXEnvironment(Bu } } while (par && par->layout() == layout() - && par->params().depth() == params().depth()); + && par->params().depth() == params().depth() + && par->params().leftIndent() == params().leftIndent()); if (style.isEnvironment()) { os << "\\end{" << style.latexname() << "}\n"; texrow.newline(); } + if (leftindent_open) { + os << "\\end{LyXParagraphLeftIndent}\n"; + texrow.newline(); + } + lyxerr[Debug::LATEX] << "TeXEnvironment...done " << par << endl; return par; // ale970302 } Index: src/text.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text.C,v retrieving revision 1.245 diff -u -p -r1.245 text.C --- src/text.C 3 May 2002 09:22:07 -0000 1.245 +++ src/text.C 3 May 2002 13:34:16 -0000 @@ -842,6 +842,15 @@ int LyXText::leftMargin(BufferView * bvi break; } + if ((workWidth(bview) > 0) && + !row->par()->params().leftIndent().zero()) + { + LyXLength const len = row->par()->params().leftIndent(); + int const tw = inset_owner ? + inset_owner->latexTextWidth(bview) : workWidth(bview); + x += len.inPixels(tw, bview->text->defaultHeight()); + } + LyXAlignment align; // wrong type if (row->par()->params().align() == LYX_ALIGN_LAYOUT)