]> git.lyx.org Git - lyx.git/blobdiff - lib/scripts/prefs2prefs.py
FindAdv: Ignore comment-feature (but not its content)
[lyx.git] / lib / scripts / prefs2prefs.py
index 064de9c1c3b09b389003c7a29be5c19302892813..00d619de211d800978076b99583262a97c177b00 100644 (file)
@@ -4,32 +4,19 @@
 # This file is part of LyX, the document processor.
 # Licence details can be found in the file COPYING.
 
-# author Richard Heck
+# author Richard Kimberly Heck
 
 # Full author contact details are available in file CREDITS
 
 # This is the main file for the user preferences conversion system.
 # There are two subsidiary files:
-#      prefs2prefs_lfuns.py
-#      prefs2prefs_prefs.py
+#    prefs2prefs_lfuns.py
+#    prefs2prefs_prefs.py
 # The former is used to convert bind and ui files; the latter, to convert
-# the preferences file.
-#
-# I've organized it this way because, in many ways, converting bind and ui 
-# files  lfuns) and converting the preferences file are the same task. It's 
-# very line-by-line, unlike lyx2lyx and layout2layout, where changes can be 
-# more "global". So we read the file, line by line, and give a bunch of 
-# converter functions a chance to see if they want to modify that line.
-
-# The converter functions are all in the subsidiary files. They take a line 
-# as  argument and return a list: (Bool, NewLine), where the Bool says if 
-# we've modified anything and the NewLine is the new line, if so, which will
-# be used to replace the old line.
-
-# The format of the existing files is format 0, as of 2.0.alpha6. We'll 
-# introduce new format numbers as we proceed, just as with layout2layout.
-# These will be different for the bind and ui files and for the preferences
-# file. 
+# the preferences file. The converter functions are all in the subsidiary 
+# files. 
+# 
+# The format of the existing files was format 0, as of 2.0.alpha6.
 
 from __future__ import print_function
 import os, re, string, sys
@@ -44,7 +31,7 @@ def trim_bom(line):
        if line[0:3] == u"\357\273\277":
                return line[3:]
        else:
-               return  line
+               return line
 
 
 def read(source):
@@ -65,8 +52,8 @@ re_empty   = re.compile(r'^\s*$')
 
 def find_format_line(lines):
        '''
-       Returns (bool, int), where int is number of the line the `Format' 
-       specification is on, or else the number of the first non-blank, 
+       Returns (bool, int), where int is number of the line the `Format'
+       specification is on, or else the number of the first non-blank,
        non-comment line. The bool tells whether we found a format line.
        '''
        for i in range(len(lines)):
@@ -155,7 +142,7 @@ def main(argv):
                        from prefs2prefs_lfuns import conversions
                elif opt == "-p":
                        from prefs2prefs_prefs import conversions
-       
+
        if not conversions:
                usage()
                abort("Neither -l nor -p given.")
@@ -176,10 +163,15 @@ def main(argv):
                        abort("Something is wrong with the conversion chain.")
 
                for c in convert:
-                       for i in range(len(lines)):
-                               (update, newline) = c(lines[i])
-                               if update:
-                                       lines[i] = newline
+                       try:
+                               # first see if the routine will accept a list of lines
+                               c(lines)
+                       except:
+                               # if not, it wants individual lines
+                               for i in range(len(lines)):
+                                       (update, newline) = c(lines[i])
+                                       if update:
+                                               lines[i] = newline
 
                update_format(lines)
                format = get_format(lines)
@@ -199,4 +191,4 @@ def main(argv):
 
 
 if __name__ == "__main__":
-    main(sys.argv)
+       main(sys.argv)