]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/lyx_1_4.py
clean up french language handling
[lyx.git] / lib / lyx2lyx / lyx_1_4.py
index 125086ee275355f8bd16f2d005fbc4749c211d56..ca253df85c80b0d8c4fec84f63c5a1bb4db4c8e0 100644 (file)
@@ -304,7 +304,13 @@ def add_end_layout(file):
         i = find_tokens(file.body, ["\\begin_inset", "\\end_inset", "\\layout",
                                 "\\begin_deeper", "\\end_deeper", "\\the_end"], i)
 
-        token = split(file.body[i])[0]
+        if i != -1:
+            token = split(file.body[i])[0]
+        else:
+            file.warning("Truncated file.")
+            i = len(file.body)
+            file.body.insert(i, '\\the_end')
+            token = ""
 
         if token == "\\begin_inset":
             struct_stack.append(token)
@@ -518,12 +524,24 @@ def revert_end_document(file):
 #
 #\end_layout
 def convert_breaks(file):
+    par_params = ('added_space_bottom', 'added_space_top', 'align',
+                 'labelwidthstring', 'line_bottom', 'line_top', 'noindent',
+                 'pagebreak_bottom', 'pagebreak_top', 'paragraph_spacing',
+                 'start_of_appendix')
     i = 0
     while 1:
         i = find_token(file.body, "\\begin_layout", i)
         if i == -1:
             return
         i = i + 1
+
+        # Merge all paragraph parameters into a single line
+        # We cannot check for '\\' only because paragraphs may start e.g.
+        # with '\\backslash'
+        while file.body[i + 1][:1] == '\\' and split(file.body[i + 1][1:])[0] in par_params:
+            file.body[i] = file.body[i + 1] + ' ' + file.body[i]
+            del file.body[i+1]
+
         line_top   = find(file.body[i],"\\line_top")
         line_bot   = find(file.body[i],"\\line_bottom")
         pb_top     = find(file.body[i],"\\pagebreak_top")
@@ -585,21 +603,21 @@ def convert_breaks(file):
 
         if pb_bot !=-1 or line_bot != -1 or vspace_bot != -1:
 
-            paragraph_bellow = ['','\\begin_layout Standard','','']
+            paragraph_below = ['','\\begin_layout Standard','','']
 
             if line_bot != -1:
-                paragraph_bellow.extend(['\\lyxline ',''])
+                paragraph_below.extend(['\\lyxline ',''])
 
             if vspace_bot != -1:
-                paragraph_bellow.extend(['\\begin_inset VSpace ' + vspace_bot_value,'\\end_inset','',''])
+                paragraph_below.extend(['\\begin_inset VSpace ' + vspace_bot_value,'\\end_inset','',''])
 
             if pb_bot != -1:
-                paragraph_bellow.extend(['\\newpage ',''])
+                paragraph_below.extend(['\\newpage ',''])
 
-            paragraph_bellow.extend(['\\end_layout',''])
+            paragraph_below.extend(['\\end_layout',''])
 
             #inset new paragraph above the current paragraph
-            file.body[k + 1: k + 1] = paragraph_bellow
+            file.body[k + 1: k + 1] = paragraph_below
 
 
 ##
@@ -1503,8 +1521,11 @@ def convert_paperpackage(file):
         file.warning("Malformed lyx file: Missing '\\paperpackage'.")
         return
 
-    packages = {'a4':'none', 'a4wide':'a4', 'widemarginsa4':'a4wide'}
-    paperpackage = split(file.header[i])[1]
+    packages = {'default':'none','a4':'none', 'a4wide':'a4', 'widemarginsa4':'a4wide'}
+    if len(split(file.header[i])) > 1:
+        paperpackage = split(file.header[i])[1]
+    else:
+        paperpackage = "default"
     file.header[i] = replace(file.header[i], paperpackage, packages[paperpackage])
 
 
@@ -1823,6 +1844,13 @@ def revert_ert_paragraphs(file):
         i = i + 1
 
 
+def convert_french(file):
+    regexp = re.compile(r'^\\language\s+frenchb')
+    i = find_re(file.header, regexp, 0)
+    if i != -1:
+        file.header[i] = "\\language french"
+
+
 ##
 # Convertion hub
 #
@@ -1848,9 +1876,11 @@ convert = [[223, [insert_tracking_changes, add_end_header, remove_color_default,
            [238, [update_latexaccents]],
            [239, [normalize_paragraph_params]],
            [240, [convert_output_changes]],
-           [241, [convert_ert_paragraphs]]]
+           [241, [convert_ert_paragraphs]],
+           [242, [convert_french]]]
 
-revert =  [[240, [revert_ert_paragraphs]],
+revert =  [[241, []],
+           [240, [revert_ert_paragraphs]],
            [239, [revert_output_changes]],
            [238, []],
            [237, []],