[LyX/2.1.x] Adapt output to the on-screen representation.

2014-05-17 Thread Enrico Forestieri
commit 1fa06296b66bc562ba8d21b6e5e97e87fd495977
Author: Enrico Forestieri for...@lyx.org
Date:   Sat May 17 22:05:07 2014 +0200

Adapt output to the on-screen representation.

LyX assumes that a standard paragraph following a layout with
NextNoIndent==false has to be indented on screen, so output the
necessary blank line to make it so also in the output.

diff --git a/src/output_latex.cpp b/src/output_latex.cpp
index 31211d1..1fd387c 100644
--- a/src/output_latex.cpp
+++ b/src/output_latex.cpp
@@ -198,8 +198,10 @@ static TeXEnvironmentData prepareEnvironment(Buffer const 
 buf,
 }
 
 
-static void finishEnvironment(otexstream  os, OutputParams const  runparams,
-  TeXEnvironmentData const  data)
+static void finishEnvironment(Buffer const  buf, Text const  text,
+ pit_type nextpit, otexstream  os,
+ OutputParams const  runparams,
+ TeXEnvironmentData const  data)
 {
if (open_encoding_ == CJK  data.cjk_nested) {
// We need to close the encoding even if it does not change
@@ -227,6 +229,14 @@ static void finishEnvironment(otexstream  os, 
OutputParams const  runparams,
os  
setEncoding(data.prev_encoding-iconvName());
}
}
+
+   // Check whether we should output a blank line after the environment
+   DocumentClass const  tclass = buf.params().documentClass();
+   ParagraphList const  pars = text.paragraphs();
+   bool next_style_is_default = (nextpit = runparams.par_end) ? false
+   : tclass.isDefaultLayout(pars.constIterator(nextpit)-layout());
+   if (!data.style-nextnoindent  next_style_is_default)
+   os  '\n';
 }
 
 
@@ -306,7 +316,7 @@ void TeXEnvironment(Buffer const  buf, Text const  text,
prepareEnvironment(buf, text, par, os, runparams);
// Recursive call to TeXEnvironment!
TeXEnvironment(buf, text, runparams, pit, os);
-   finishEnvironment(os, runparams, data);
+   finishEnvironment(buf, text, pit + 1, os, runparams, data);
}
 
if (pit != runparams.par_end)
@@ -1142,7 +1152,7 @@ void latexParagraphs(Buffer const  buf,
prepareEnvironment(buf, text, par, os, runparams);
// pit can be changed in TeXEnvironment.
TeXEnvironment(buf, text, runparams, pit, os);
-   finishEnvironment(os, runparams, data);
+   finishEnvironment(buf, text, pit + 1, os, runparams, data);
}
 
if (pit == runparams.par_end) {
diff --git a/status.21x b/status.21x
index 5e7c88f..f08a5ca 100644
--- a/status.21x
+++ b/status.21x
@@ -80,6 +80,8 @@ What's new
 
 - Fix table cell rotation conversion from 2.1 to 2.0 format.
 
+- Honor the NextNoIndent layout parameter also in the exported output.
+
 
 * USER INTERFACE
 


[LyX/2.1.x] Adapt output to the on-screen representation.

2014-05-17 Thread Enrico Forestieri
commit 1fa06296b66bc562ba8d21b6e5e97e87fd495977
Author: Enrico Forestieri 
Date:   Sat May 17 22:05:07 2014 +0200

Adapt output to the on-screen representation.

LyX assumes that a standard paragraph following a layout with
NextNoIndent==false has to be indented on screen, so output the
necessary blank line to make it so also in the output.

diff --git a/src/output_latex.cpp b/src/output_latex.cpp
index 31211d1..1fd387c 100644
--- a/src/output_latex.cpp
+++ b/src/output_latex.cpp
@@ -198,8 +198,10 @@ static TeXEnvironmentData prepareEnvironment(Buffer const 
& buf,
 }
 
 
-static void finishEnvironment(otexstream & os, OutputParams const & runparams,
-  TeXEnvironmentData const & data)
+static void finishEnvironment(Buffer const & buf, Text const & text,
+ pit_type nextpit, otexstream & os,
+ OutputParams const & runparams,
+ TeXEnvironmentData const & data)
 {
if (open_encoding_ == CJK && data.cjk_nested) {
// We need to close the encoding even if it does not change
@@ -227,6 +229,14 @@ static void finishEnvironment(otexstream & os, 
OutputParams const & runparams,
os << 
setEncoding(data.prev_encoding->iconvName());
}
}
+
+   // Check whether we should output a blank line after the environment
+   DocumentClass const & tclass = buf.params().documentClass();
+   ParagraphList const & pars = text.paragraphs();
+   bool next_style_is_default = (nextpit >= runparams.par_end) ? false
+   : tclass.isDefaultLayout(pars.constIterator(nextpit)->layout());
+   if (!data.style->nextnoindent && next_style_is_default)
+   os << '\n';
 }
 
 
@@ -306,7 +316,7 @@ void TeXEnvironment(Buffer const & buf, Text const & text,
prepareEnvironment(buf, text, par, os, runparams);
// Recursive call to TeXEnvironment!
TeXEnvironment(buf, text, runparams, pit, os);
-   finishEnvironment(os, runparams, data);
+   finishEnvironment(buf, text, pit + 1, os, runparams, data);
}
 
if (pit != runparams.par_end)
@@ -1142,7 +1152,7 @@ void latexParagraphs(Buffer const & buf,
prepareEnvironment(buf, text, par, os, runparams);
// pit can be changed in TeXEnvironment.
TeXEnvironment(buf, text, runparams, pit, os);
-   finishEnvironment(os, runparams, data);
+   finishEnvironment(buf, text, pit + 1, os, runparams, data);
}
 
if (pit == runparams.par_end) {
diff --git a/status.21x b/status.21x
index 5e7c88f..f08a5ca 100644
--- a/status.21x
+++ b/status.21x
@@ -80,6 +80,8 @@ What's new
 
 - Fix table cell rotation conversion from 2.1 to 2.0 format.
 
+- Honor the NextNoIndent layout parameter also in the exported output.
+
 
 * USER INTERFACE