-
-@node Updating files with convert-ly
-@section Updating files with @command{convert-ly}
-
-@cindex Updating a LilyPond file
-@cindex convert-ly
-
-The LilyPond input syntax is routinely changed to simplify it or improve
-it in different ways. As a side effect of this, the LilyPond interpreter
-often is no longer compatible with older input files. To remedy this,
-the program @command{convert-ly} can be used to deal with most of the
-syntax changes between LilyPond versions.
-
-@menu
-* Invoking convert-ly::
-* Command line options for convert-ly::
-* Problems with convert-ly::
-@end menu
-
-@node Invoking convert-ly
-@subsection Invoking @command{convert-ly}
-
-@command{convert-ly} uses @code{\version} statements in the input
-file to detect the old version number. In most cases, to upgrade
-your input file it is sufficient to run
-
-@example
-convert-ly -e myfile.ly
-@end example
-
-@noindent
-in the directory containing the file. This will upgrade
-@code{myfile.ly} in-place and preserve the original file in
-@code{myfile.ly~}.
-
-To convert all the input files in a directory together use
-
-@example
-convert-ly -e *.ly
-@end example
-
-Alternatively, if you want to specify a different name for the
-upgraded file, preserving the original file and name unchanged,
-use
-
-@example
-convert-ly myfile.ly > mynewfile.ly
-@end example
-
-@command{convert-ly} always converts up to the last syntax change
-handled by it. This means that the @code{\version} number left in
-the file is usually lower than the version of @command{convert-ly}
-itself.
-
-The program will list the version numbers for which conversions
-have been made. If no version numbers are listed the file is
-already up to date.
-
-@noindent
-MacOS@tie{}X users may execute these commands under the menu entry
-@code{Compile > Update syntax}.
-
-Windows users should enter these commands in a Command Prompt window,
-which is usually found under
-@code{Start > Accessories > Command Prompt}.
-
-@node Command line options for convert-ly
-@subsection Command line options for @command{convert-ly}
-
-In general, the program is invoked as follows:
-
-@example
-convert-ly [@var{option}]@dots{} @var{filename}@dots{}
-@end example
-
-
-The following options can be given:
-
-@table @code
-@item -e,--edit
-Apply the conversions direct to the input file, modifying it
-in-place.
-
-@item -f,--from=@var{from-patchlevel}
-Set the version to convert from. If this is not set, @command{convert-ly}
-will guess this, on the basis of @code{\version} strings in the file.
-E.g. @code{--from=2.10.25}
-
-@item -n,--no-version
-Normally, @command{convert-ly} adds a @code{\version} indicator
-to the output. Specifying this option suppresses this.
-
-@item -s, --show-rules
-Show all known conversions and exit.
-
-@item --to=@var{to-patchlevel}
-Set the goal version of the conversion. It defaults to the latest
-available version. E.g. @code{--to=2.12.2}
-
-@item -h, --help
-Print usage help.
-@end table
-
-To upgrade LilyPond fragments in texinfo files, use
-
-@example
-convert-ly --from=... --to=... --no-version *.itely
-@end example
-
-To see the changes in the LilyPond syntax between two versions, use
-
-@example
-convert-ly --from=... --to=... -s
-@end example
-
-
-@node Problems with convert-ly
-@subsection Problems with @code{convert-ly}
-
-When running convert-ly in a Command Prompt window under Windows
-on a file which has spaces in the filename or in the path to it,
-it is necessary to surround the entire input file name with three
-(!) sets of double quotes:
-
-@example
-convert-ly """D:/My Scores/Ode.ly""" > "D:/My Scores/new Ode.ly"
-@end example
-
-If the simple @command{convert-ly -e *.ly} command fails because the
-expanded command line becomes too long, the @command{convert-ly}
-command may be placed in a loop instead. This example for UNIX
-will upgrade all @code{.ly} files in the current directory
-
-@example
-for f in *.ly; do convert-ly -e $f; done;
-@end example
-
-In the Windows Command Prompt window the corresponding command is
-
-@example
-for %x in (*.ly) do convert-ly -e """%x"""
-@end example
-
-Not all language changes are handled. Only one output option can be
-specified. Automatically updating scheme and LilyPond scheme
-interfaces is quite unlikely; be prepared to tweak scheme code
-manually.
-
-@verbatim
-There are a few things that the convert-ly cannot handle. Here's a list
-of limitations that the community has complained about.
-
-This bug report structure has been chosen because convert-ly has a
-structure that doesn't allow to smoothly implement all needed changes.
-Thus this is just a wishlist, placed here for reference.
-
-1.6->2.0:
- Doesn't always convert figured bass correctly, specifically things like {<
->}. Mats' comment on working around this:
- To be able to run convert-ly
- on it, I first replaced all occurrences of '{<' to some dummy like '{#'
- and similarly I replaced '>}' with '&}'. After the conversion, I could
- then change back from '{ #' to '{ <' and from '& }' to '> }'.
- Doesn't convert all text markup correctly. In the old markup syntax,
- it was possible to group a number of markup commands together within
-parentheses, e.g.
- -#'((bold italic) "string")
- This will incorrectly be converted into
- -\markup{{\bold italic} "string"}
- instead of the correct
- -\markup{\bold \italic "string"}
-2.0->2.2:
- Doesn't handle \partcombine
- Doesn't do \addlyrics => \lyricsto, this breaks some scores with multiple
-stanzas.
-2.0->2.4:
- \magnify isn't changed to \fontsize.
- - \magnify #m => \fontsize #f, where f = 6ln(m)/ln(2)
- remove-tag isn't changed.
- - \applyMusic #(remove-tag '. . .) => \keepWithTag #'. . .
- first-page-number isn't changed.
- - first-page-number no => print-first-page-number = ##f
- Line breaks in header strings aren't converted.
- - \\\\ as line break in \header strings => \markup \center-align <
- "First Line" "Second Line" >
- Crescendo and decrescendo terminators aren't converted.
- - \rced => \!
- - \rc => \!
-2.2->2.4:
- \turnOff (used in \set Staff.VoltaBracket = \turnOff) is not properly
-converted.
-2.4.2->2.5.9
- \markup{ \center-align <{ ... }> } should be converted to:
- \markup{ \center-align {\line { ... }} }
- but now, \line is missing.
-2.4->2.6
- Special LaTeX characters such as $~$ in text are not converted to UTF8.
-2.8
- \score{} must now begin with a music expression. Anything else
- (particularly \header{}) must come after the music.
-@end verbatim
-
-
-@node Reporting bugs
-@section Reporting bugs
-
-@cindex bugs
-@cindex reporting bugs
-
-If you have input that results in a crash or an erroneous output, then
-that is a bug. There is a list of current bugs on our Google bug tracker,
-
-@uref{http://code.google.com/p/lilypond/issues/list}
-
-If you have discovered a bug which is not listed, please report the
-bug by following the directions on
-
-@uref{http://lilypond.org/web/devel/participating/bugs}
-
-Please construct and submit minimal examples of bugs in reports. We do not
-have the resources to investigate reports which are not as small as possible.
-