commit 2fe07e1fe1e2253dcf8a3f505cb832f2841ea069
Author: Georg Baum <[email protected]>
Date:   Fri Apr 25 21:35:51 2014 +0200

    Fix data loss in user guide conversion to 2.0.x
    
    When doing the lyx2lyx round trip of the 2.0.8 user guide from format
    413 -> 474 -> 413 you do not get a zero diff. The most important problem is
    caused by the conversion of the argument insets to the old syntax: This
    conversion adds an additional empty line (harmless), and it destroys the
    document structure if the first inset in e.g. a subsection is not an 
argument
    inset, but e.g. an index or label inset.
    The fix is quite easy: Ensure that the paragraph begin is set to the first
    argument inset.

diff --git a/lib/lyx2lyx/lyx_2_1.py b/lib/lyx2lyx/lyx_2_1.py
index 2a5360e..8ab0d28 100644
--- a/lib/lyx2lyx/lyx_2_1.py
+++ b/lib/lyx2lyx/lyx_2_1.py
@@ -1552,12 +1552,18 @@ def revert_latexargs(document):
             continue
         parbeg = parent[1]
         parend = parent[2]
-        realparbeg = parent[3]
-        # Collect all arguments in this paragraph 
+        # Do not set realparbeg to parent[3], since this does not work if we
+        # have another inset (e.g. label or index) before the first argument
+        # inset (this is the case in the user guide of LyX 2.0.8)
+        realparbeg = -1
+        # Collect all arguments in this paragraph
         realparend = parend
         for p in range(parbeg, parend):
             m = rx.match(document.body[p])
             if m:
+                if realparbeg < 0:
+                    # This is the first argument inset
+                    realparbeg = p
                 val = int(m.group(1))
                 j = find_end_of_inset(document.body, p)
                 # Revert to old syntax
@@ -1573,8 +1579,11 @@ def revert_latexargs(document):
                 del document.body[p : j + 1]
             if p >= realparend:
                 break
+        if realparbeg < 0:
+            # No argument inset found
+            realparbeg = parent[3]
         # Now sort the arg insets
-        subst = [""]
+        subst = []
         for f in sorted(args):
             subst += args[f]
             del args[f]

Reply via email to