]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' into lilypond/translation
authorFrancisco Vila <francisco.vila@hispalinux.es>
Mon, 5 Sep 2011 15:43:19 +0000 (17:43 +0200)
committerFrancisco Vila <francisco.vila@hispalinux.es>
Mon, 5 Sep 2011 15:43:19 +0000 (17:43 +0200)
41 files changed:
Documentation/contributor/administration.itexi
Documentation/contributor/programming-work.itexi
Documentation/it/GNUmakefile
Documentation/it/included/GNUmakefile [new file with mode: 0644]
Documentation/notation/chords.itely
Documentation/web/community.itexi
flower/include/warn.hh
flower/warn.cc
input/regression/ambitus-with-ligature.ly [new file with mode: 0644]
input/regression/beam-skip.ly [new file with mode: 0644]
input/regression/bom-mark.ly
input/regression/book-label-no-segfault.ly [new file with mode: 0644]
input/regression/bookpart-variable.ly [new file with mode: 0644]
input/regression/chord-capo.ly [new file with mode: 0644]
input/regression/incompatible-stem-warning.ly
input/regression/metronome-multimeasure-rest-no-segfault.ly [new file with mode: 0644]
input/regression/quote-during.ly
input/regression/quote.ly
input/regression/repeat-unfold.ly
input/regression/repeat-volta.ly
input/regression/segfaults-fixed.ly [deleted file]
input/regression/skiptypesetting-all-true.ly [new file with mode: 0644]
input/regression/skiptypesetting-bar-check.ly
input/regression/skiptypesetting-multimeasurerest.ly [new file with mode: 0644]
input/regression/stem-tremolo.ly
input/regression/tablature-negative-fret.ly
input/regression/tablature-zero-finger.ly
input/regression/tie-arpeggio.ly
input/regression/warn-conflicting-key-signatures.ly
lily/chord-name-engraver.cc
lily/lily-parser-scheme.cc
lily/pango-font.cc
lily/warn-scheme.cc
python/book_latex.py
scm/chord-name.scm
scm/define-context-properties.scm
scm/define-grob-properties.scm
scm/documentation-lib.scm
scm/lily.scm
scripts/build/create-weblinks-itexi.py
scripts/convert-ly.py

index 36ead431e159695f3989bc9ec7861ce3fe57eb8c..fca8f01deaba015f9acc80f3edf184c47cc151e3 100644 (file)
@@ -528,7 +528,23 @@ can probably wrap it up with some other code-related questions.
 @node Policy decisions (finished)
 @subsection Policy decisions (finished)
 
-@subheading GOP-PROP 1: python formatting
+Here is a record the final decisions, along with links to the
+discussions.
+
+@menu
+* GOP-PROP 1 - python formatting::
+* GOP-PROP 2 - mentors and frogs::
+* GOP-PROP 3 - C++ formatting::
+* GOP-PROP 4 - lessons from 2.14::
+* GOP-PROP 5 - build system output (not accepted)::
+* GOP-PROP 6 - private mailing lists::
+* GOP-PROP 7 - developers as resources::
+* GOP-PROP 8 - issue priorities::
+* GOP-PROP 9 - behavior of make doc::
+@end menu
+
+@node GOP-PROP 1 - python formatting
+@subsubsection GOP-PROP 1 - python formatting
 
 We will follow the indentation described in PEP-8.
 @uref{http://www.python.org/dev/peps/pep-0008/}
@@ -553,8 +569,18 @@ There should be absolutely no tab characters for indentation in
 any @code{.py} file in lilypond git.  All such files should be
 converted to use spaces only.
 
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00060.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00084.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00310.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00574.html}
+@end smallexample
 
-@subheading GOP-PROP 2: mentors and frogs
+
+@node GOP-PROP 2 - mentors and frogs
+@subsubsection GOP-PROP 2 - mentors and frogs
 
 Nothing much was decided.  The list of responsibilities was
 slightly altered; see the new one in @ref{Mentors}.  We should
@@ -567,6 +593,545 @@ contributor-mentor pairs in:
 
 That's pretty much it.
 
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00311.html}
+@uref{}
+@uref{}
+@end smallexample
+
+
+@node GOP-PROP 3 - C++ formatting
+@subsubsection GOP-PROP 3 - C++ formatting
+
+Speaking academically, C++ code style is a "solved problem". Let's
+pick one of the existing solutions, and let a computer deal with
+this.  Humans should not waste their time, energy, and creativity
+manually adding tabs or spaces to source code.
+
+We have modified @code{fixcc.py} to use astyle, along with extra
+regex tweaks.
+
+@itemize
+@item
+the final script will be run @strong{blindly} on the lilypond
+source code.  We will accept whatever formatting the final version
+of this script produces, with no manual tweaking.
+
+@item
+patches which have been run through this tool will not be rejected
+for style reasons.  Any code formatting @qq{desires} which are not
+enforced by @code{fixcc.py} will not be considered grounds for
+rejecting a patch.
+
+@item
+for now, this style will not be enforced.  It is not cause for
+concern if patches which do not follow the formatting done by
+@code{fixcc.py} are pushed.  From time to time, Graham will run
+the formatter on the entire code base, and commit the resulting
+changes.
+
+In a few months, we will tighten up this policy item (with some
+sort of automatic processing), but that is outside the scope of
+this policy item and is a matter for later discussion.
+
+@item
+after the proposal is accepted, we will leave some time for
+existing patches to be accepted and pushed.  The script was
+run on the source code on @strong{2011 August 01}.
+
+@end itemize
+
+@subheading GNU code
+
+LilyPond is a GNU project, so it makes sense to follow the GNU
+coding standards.  These standards state:
+
+@quotation
+We don’t think of these recommendations as requirements, because
+it causes no problems for users if two different programs have
+different formatting styles.
+
+But whatever style you use, please use it consistently, since a
+mixture of styles within one program tends to look ugly. If you
+are contributing changes to an existing program, please follow the
+style of that program. 
+@end quotation
+
+(@uref{http://www.gnu.org/prep/standards/html_node/Formatting.html})
+
+With that in mind, we do not think that we must blindly follow the
+formatting given by the currrent version of Emacs.
+
+@subheading Implementation notes
+
+We can avoid some of the style change pollution in git history by
+ignoring whitespaces changes:
+
+@example
+git diff -w
+@end example
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00526.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00796.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00200.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00525.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00751.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00751.html}
+@end smallexample
+
+
+@node GOP-PROP 4 - lessons from 2.14
+@subsubsection GOP-PROP 4 - lessons from 2.14
+
+@subheading History
+
+A brief history of releases:
+
+@multitable @columnfractions .2 .2 .3
+@headitem date (YYYY-MM-DD) @tab version @tab comment
+@item 2008-10-28 @tab 2.11.63 @tab nobody checking regtests
+@item 2008-11-17 @tab 2.11.64
+@item 2008-11-29 @tab 2.11.65
+@item 2008-12-23 @tab 2.12.0
+@item 2009-01-01 @tab @tab somewhere around here, Graham becomes
+officially release manager, but Han-Wen still builds the actual
+releases
+@item 2009-01-01 @tab 2.12.1
+@item 2009-01-25 @tab 2.12.2
+@item 2009-02-28 @tab 2.13.0
+@item 2009-06-01 @tab 2.13.1 @tab note jump in time!
+@item 2009-06-27 @tab 2.13.2 @tab first Graham release?
+@item 2009-07-03 @tab 2.13.3
+@item 2009-09-09 @tab @tab Graham arrives in Glasgow, gets a
+powerful desktop computer, and begins serious work on GUB (sending
+bug reports to Jan).  It takes approximately 100 hours until GUB
+is stable enough to make regular releases.
+@item 2009-09-24 @tab 2.13.4
+@item 2009-10-02 @tab 2.13.5
+@item 2009-10-22 @tab 2.13.6
+@item 2009-11-05 @tab 2.13.7
+@item ...
+@item 2010-01-13 @tab 2.12.3
+@item ...
+@item 2010-03-19 @tab 2.13.16 @tab Bug squad starts doing a few
+regtest comparisons, but IIRC the effort dies out after a few
+weeks (BLUE)
+@item ...
+@item 2010-08-04 @tab 2.13.29 @tab Phil starts checking regtests (BLUE)
+@item ...
+@item 2011-01-12 @tab 2.13.46 @tab release candidate 1 (GREEN)
+@item ...
+@item 2011-05-30 @tab 2.13.63 @tab release candidate 7 (GREEN)
+@item 2011-06-06 @tab 2.14.0
+@end multitable
+
+@c A graphical display of bugs:
+@c 
+@c @image{bugs-2.13-visualization,png}
+@c @image{zoom-2.13-visualization,png}
+
+@subheading Carl's analysis of the bugs
+
+A @file{csv} spreadsheet is available.
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00852.html}
+@end smallexample
+
+@example
+@uref{lilypond-issues-analysis.csv}
+@uref{lilypond-issues-analysis-trim-duplicates.csv}
+@end example
+
+There 148 issues marked with Priority=Critical in the tracker.
+
+I've done an analysis, and it looks to me like there was initially
+a backlog of critical issues that weren't fixed, and little work
+was being done to eliminate critical issues.
+
+Somewhere about 2010-08-01, critical issues started to disappear,
+but occasional new ones appeared.
+
+There were a couple of major changes that introduced unanticipated
+regressions (new spacing code, beam collision avoidance).  These
+produced more than the expected number of regressions.
+
+It appears to me that we didn't really get serious about
+eliminating critical bugs until about 2010-06-15 or so.  After
+that point, the number of critical bugs more-or-less steadily
+decreased until we got to a release candidate.
+
+Of particular interest, the first release candidate of 2.14 was
+released on 2011-01-12.  Over the next 10 days, about a dozen bugs
+were reported and fixed.  Release candidate 2 came out on
+2011-02-09.   No surge of bugs occurred with this release.
+Candidate 3 came out on 2011-03-13; we got 2 bugs per week.
+Candidate 4 came out on 2011-03-29; 2 new bugs.  Candidate 6 came
+out on 2011-04-07.  We got a couple of bugs per week.
+
+@subheading Notes, commentary, and opinions
+
+@example
+Han-Wen: Overall, I think this cycle took too long
+Mike: I agree
+Graham: +1
+@end example
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00797.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00364.html}
+@uref{}
+@end smallexample
+
+
+@node GOP-PROP 5 - build system output (not accepted)
+@subsubsection GOP-PROP 5 - build system output (not accepted)
+
+This proposal was too broad; after a month of discussion, Graham
+withdrew the proposal.  Portions of it will be introduced in later
+proposals.
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00320.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00527.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00753.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg01042.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00116.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00310.html}
+@end smallexample
+
+
+@node GOP-PROP 6 - private mailing lists
+@subsubsection GOP-PROP 6 - private mailing list
+
+Potentially sensitive or private matters will be referred to
+Graham.  He will then decide who should discuss the matter on an
+ad-hoc basis, and forward or CC them on future emails.
+
+For emphasis, the project administrators are Han-Wen, Jan, and
+Graham; those three will always be CC'd on any important
+discussions.
+
+The lilypond-hackers mailing list will be removed.
+
+@subheading History
+
+There is some unhappy history about this idea in our development
+community:
+
+@example
+@uref{http://lists.gnu.org/archive/html/lilypond-devel/2010-09/msg00178.html}
+@uref{http://news.lilynet.net/spip.php?article121}
+@uref{http://lists.gnu.org/archive/html/lilypond-devel/2010-11/msg00076.html}
+@end example
+
+@subheading Other projects
+
+The idea of private mailing lists is hardly uncommon in
+open-source software.  For example,
+
+@example
+@uref{http://lwn.net/Articles/394660/}   about debian-private
+@uref{http://subversion.apache.org/mailing-lists.html}  private@@
+@uref{http://www.freebsd.org/administration.html#t-core}
+@uref{http://foundation.gnome.org/legal/}   board members pledge
+to keep certain matters confidential
+
+every security team of every linux distribution and OS
+@end example
+
+In fact, Karl Fogel's @qq{Producing Open Source Software}
+explicitly suggests a private mailing list for some circumstances:
+
+@example
+[on granting commit/push access to a contributor]
+
+But here is one of the rare instances where secrecy is
+appropriate. You can't have votes about potential committers
+posted to a public mailing list, because the candidate's feelings
+(and reputation) could be hurt.
+
+@uref{http://producingoss.com/en/consensus-democracy.html#electorate}
+@end example
+
+@subheading Board of governers, voting, etc?
+
+Many projects have an official board of directors, or a list of
+@qq{core developers}, with set term limits and elections and
+stuff.
+
+I don't think that we're that big.  I think we're still small
+enough, and there's enough trust and consensus decisions, that we
+can avoid that.  I would rather that we kept on going with
+trust+consensus for at least the next 2-3 years, and spent more
+time+energy on bug fixes and new features instead of
+administrative stuff.
+
+Project administrators are Han-Wen, Jan, and Graham.
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00783.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg01004.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00117.html}
+@end smallexample
+
+
+@node GOP-PROP 7 - developers as resources
+@subsubsection GOP-PROP 7 - developers as resources
+
+We shall treat developers (and contributors) as
+@strong{Independent volunteers}: each person does whatever they
+want, whenever they want.  We have busy careers and lives; we make
+no expectations of action from anybody (with the exception of the
+6 people in @qq{Meister} positions).
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg01092.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00087.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00497.html}
+@end smallexample
+
+
+@node GOP-PROP 8 - issue priorities
+@subsubsection GOP-PROP 8 - issue priorities
+
+We will delete the @qq{priority} field of the issue tracker
+altogether.  The @qq{type} system will be tweaked.
+
+Type-critical:
+
+@itemize
+
+@item
+a reproducible failure to build either @code{make} or @code{make
+doc}, from an empty build tree, in a first run, if
+@code{configure} does not report any errors.
+
+@item
+any program behaviour which is @strong{unintentionally} worse than
+the previous stable version or the current development version.
+Developers may always use the @qq{this is intentional}, or even
+the @qq{this is an unavoidable effect of an improvement in another
+area}, reason to move this to a different type.
+
+@item
+anything which stops contributors from helping out (e.g.
+lily-git.tcl not working, source tree(s) not being available,
+lilydev being unable to compile git master, inaccurate
+instructions in the Contributor's Guide 2 Quick start).
+
+To limit this scope of this point, we will assume that the
+contributor is using the latest lilydev and has read the relevant
+part(s) of the Contributor's Guide.  Problems in other chapters of
+the CG are not sufficient to qualify as Type-Critical.
+
+@end itemize
+
+@subsubheading More new/changed types and labels
+
+Unless otherwise specified, the current types and labels will
+continue to be used.  The new types introduced by this proposal
+are:
+
+@itemize
+
+@item
+Type-crash: any segfault, regardless of what the input file looks
+like or which options are given.  Disclaimer: this might not be
+possible in some cases, for example certain guile programs (we
+certainly can't predict if a piece of scheme will ever stop
+running, i.e. the halting problem), or if we rely on other
+programs (i.e. ghostscript).  If there are any such cases that
+make segfault-prevention impossible, we will document those
+exceptions (and the issue will remain as a "crash" instead of
+"documentation" until the warning has been pushed).
+
+@item
+Type-maintainability: anything which makes it difficult for
+serious contributors to help out (e.g. difficult to find the
+relevant source tree(s), confusing policies, problems with
+automatic indentation tools, etc).
+
+@item
+Type-ugly: replaces Type-collision, and it will include things
+like bad slurs in addition to actual collision.
+
+@end itemize
+
+A new label will be added:
+
+@itemize
+@item
+(label) Needs_evidence: it is not clear what the correct output
+should look like.  We need scans, references, examples, etc.
+
+@end itemize
+
+@subheading Reminding users about stars
+
+We can remind users that they can @qq{star} an issue to indicate
+that they care about it.  Since we resolved to treat developers as
+independent volunteers, there is no expectation that anybody will
+look at those stars, but if any developer want to organize their
+work schedule according to the stars, they are welcome to do so.
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00019.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00277.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00413.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00624.html}
+@uref{}
+@end smallexample
+
+
+@node GOP-PROP 9 - behavior of make doc
+@subsubsection GOP-PROP 9 - behavior of make doc
+
+If there are build problems, then it should be easier to find out
+why it's failing.  This will be achieved with log files, as well
+as possibly including scripts which automatically display portions
+of those log files for a failing build.
+
+We will also add targets for building a specific manual (for
+quick+easy checking of doc work), as well as for building all
+documentation in a specific language (either English or a
+translated language).
+
+When you run @code{make doc},
+
+@itemize
+
+@item
+All output will be saved to various log files, with the exception
+of output directly from @code{make(1)}.
+
+Note that @code{make(1)} refers to a specific executable file on
+unix computers, and is not a general term for the build system.
+
+@item
+By default, no other output will be displayed on the console, with
+one exception: if a build fails, we might display some portion(s)
+of log file(s) which give useful clues about the reason for the
+failure.
+
+The user may optionally request additional output to be printed;
+this is controlled with the @code{VERBOSE=x} flag.  In such cases,
+all output will still be written to log files; the console output
+is strictly additional to the log files.
+
+@item
+Logfiles from calling lilypond (as part of lilypond-book) will go
+in the relevant @file{build/out/lybook-db/12/lily-123456.log}
+file.  All other logfiles will go in the @file{build/logfiles/}
+directory.
+
+A single @code{make doc} will therefore result in hundreds of log
+files.  Log files produced from individual lilypond runs are not
+under our control; apart from that, I anticipate having one or two
+dozen log files.  As long as it is clear which log file is
+associated with which operation(s), I think this is entirely
+appropriate.  The precise implementation will be discussed for
+specific patches as they appear.
+
+@item
+Both stderr and stdout will be saved in @code{*.log}.  The order
+of lines from these streams should be preserved.
+
+@item
+There will be no additional @qq{progress messages} during the
+build process.  If you run @code{make --silent}, a non-failing
+build should print absolutely nothing to the screen.
+
+@item
+Assuming that the loglevels patch is accepted, lilypond (inside
+lilypond-book) will be run with --loglevel=WARN.
+@uref{http://codereview.appspot.com/4822055/}
+
+@item
+Ideally, a failing build should provide hints about the reason why
+it failed, or at least hints about which log file(s) to examine.
+
+@end itemize
+
+If this proposal is accepted, none of these policies will be
+assumed to apply to any other aspect of the build system.
+Policies for any other aspect of the build system will be
+discussed in separate proposals.
+
+@subheading Don't cause more build problems
+
+However, there is a danger in this approach, that vital error
+messages can also be lost, thus preventing the cause of the
+failure of a make being found.  We therefore need to be
+exceptionally careful to move cautiously, include plenty of tests,
+and give time for people to experiment/find problems in each stage
+before proceeding to the next stage.
+
+This will be done by starting from individual lilypond calls
+within lilypond-book, and slowly moving to @qq{larger} targets of
+the build system -- after the individual lilypond calls are are
+producing the appropriate amount of output and this is saved in
+the right place and we can automatically isolate parts of a
+failing build, we will work on lilypond-book in general, and only
+then will we look at the build system itself.
+
+@subheading Implementation notes
+
+There is an existing make variable QUIET_BUILD, which
+alter the amount of output being displayed
+(@uref{
+http://lilypond.org/doc/v2.15/Documentation/contributor/useful-make-variables}
+).  We are not planning on keeping this make variable.
+
+The standard way for GNU packages to give more output is with a
+@code{V=x} option.  Presumably this is done by increasing
+@code{x}?  If we support this option, we should still write log
+files; we would simply print more of the info in those log files
+to screen.
+
+The command @code{tee} may be useful to write to a file and
+display to stdout (in the case of VERBOSE).
+
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00378.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00703.html}
+@end smallexample
+
+
+@ignore
+@n ode GOP-PROP 10 - scheme indentation
+@s ubsubsection GOP-PROP 10 - scheme indentation
+
+still under discussion
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00625.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg01026.html}
+@c @uref{}
+@end smallexample
+@end ignore
+
+
 
 @node Grand LilyPond Input Syntax Standardization (GLISS)
 @section Grand LilyPond Input Syntax Standardization (GLISS)
index aa243e0e0c7c9434be2031f68ef12d68f1a5e68f..8fa3d6ed9cc08e33d756a5f441b778def8078053 100644 (file)
@@ -795,7 +795,7 @@ treated as if @code{Input::error} was called.
 @tab @code{Input::warning (msg)}
 
 @item BASIC
-@tab @code{successful (msg)}
+@tab @code{basic_progress (msg)}
 @tab -
 
 @item PROGRESS
@@ -855,7 +855,7 @@ treated as if @code{Input::error} was called.
 @tab @code{(ly:input-warning input msg args)}
 
 @item BASIC
-@tab @code{(ly:success msg args)}
+@tab @code{(ly:basic-progress msg args)}
 @tab -
 
 @item PROGRESS
index df35c4cf1beef83a9bbf4116198a4c98be9a1478..db64d84904f814b5c3e7044661b18e5e713ff9bd 100644 (file)
@@ -1,6 +1,6 @@
 ISOLANG = it
 depth = ../..
-SUBDIRS = learning texidocs web usage
+SUBDIRS = learning texidocs web usage included
 STEPMAKE_TEMPLATES = documentation
 LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root
 
diff --git a/Documentation/it/included/GNUmakefile b/Documentation/it/included/GNUmakefile
new file mode 100644 (file)
index 0000000..425cc1d
--- /dev/null
@@ -0,0 +1,5 @@
+depth = ../../..
+
+LOCALSTEPMAKE_TEMPLATES = ly
+
+include $(depth)/make/stepmake.make
index 50ac2bf9ed2277191bae3c5a9a8be1c3670f74c9..baa216b0052d85b0d8557850acabeac00f1860c0 100644 (file)
@@ -506,6 +506,56 @@ Rests passed to a @code{ChordNames} context will cause the
 }
 @end lilypond
 
+@cindex Transposing guitar chords for capo
+
+If the @code{capoPitch} property is set, then the chords will additionally be printed
+transposed for a guitar with the capo set appropriately. By default the chords are
+printed on one line, but if the @code{capoVertical} property is set, the chords will be
+printed one above the other.
+
+In make-pitch, leave the first argument at 0, the second argument is the
+interval (-2 is a third), and the third argument adjusts it up or down a
+semitone.
+
+@lilypond[verbatim,quote,ragged-right]
+<<
+  \new ChordNames \chordmode {
+    c1
+    r1
+    g1
+    c1
+    \break
+    c1
+    r1
+    g1
+    c1
+    \break
+    c1
+    r1
+    g1
+    c1
+  }
+  \chordmode {
+    c1
+    r1
+    g1
+    c1
+    \break
+    \set ChordNames.capoPitch = #(ly:make-pitch 0 -2 -1/2)
+    c1
+    r1
+    g1
+    c1
+    \break
+    \set ChordNames.capoVertical = ##t
+    c1
+    r1
+    g1
+    c1
+  }
+>>
+@end lilypond
+
 @snippets
 
 @c Keep index entries with following snippet
index a5d4784df23f639b317456e0d589ee0d0b7a1f5d..7c938ea74f4df8fa4fff1b3c7d958e0484fa7268 100644 (file)
@@ -262,6 +262,13 @@ guidelines for @ref{Bug reports}.}
 
 @divEnd
 
+@divClass{column-right-bottom}
+@subheading Sensitive emails
+
+Private matters should be sent to Graham Percival (project
+manager), who will discuss it with those concerned.
+
+@divEnd
 
 
 @node Tiny examples
index 7d381f1f08e3d01c832e16f7650922b57848fd16..3b66f65b7bf48bbeb149a1c3dfed35265ec7ad66 100644 (file)
@@ -47,7 +47,7 @@ void error (string s, string location = ""); // Fatal error, exits lilypond!
 void programming_error (string s, string location = "");
 void non_fatal_error (string, string location = "");
 void warning (string s, string location = "");
-void successful (string s, string location = "");
+void basic_progress (string s, string location = "");
 /* progress_indication does by default *NOT* start on a new line */
 void progress_indication (string s, bool newline = false, string location = "");
 void message (string s, bool newline = true, string location = "");
index 870420380ed4729c9c9d54be25ab09011837b71b..a6e1fa5f90b27c1c3416877e78eb80a8ad4ebc49 100644 (file)
@@ -162,9 +162,9 @@ warning (string s, string location)
 
 /* Display a success message.  */
 void
-successful (string s, string location)
+basic_progress (string s, string location)
 {
-  print_message (LOG_BASIC, location, _f ("success: %s", s) + "\n", true);
+  print_message (LOG_BASIC, location, s + "\n", true);
 }
 
 /* Display information about the progress.  */
diff --git a/input/regression/ambitus-with-ligature.ly b/input/regression/ambitus-with-ligature.ly
new file mode 100644 (file)
index 0000000..c82e51c
--- /dev/null
@@ -0,0 +1,15 @@
+\version "2.14"
+
+\header {
+  texidoc = "
+A @code{\Voice} should be able to contain both an @code{Ambitus_engraver}
+and a @code{Mensural_ligature_engraver} without segfaulting.
+  "
+}
+
+\new Voice \with  {
+  \consists Ambitus_engraver
+  \consists Mensural_ligature_engraver
+} {
+  \[ c'\longa c''\longa \]
+}
diff --git a/input/regression/beam-skip.ly b/input/regression/beam-skip.ly
new file mode 100644 (file)
index 0000000..798eb88
--- /dev/null
@@ -0,0 +1,8 @@
+
+\header {
+  texidoc = "Beams over skips do not cause a segfault."
+}
+
+\version "2.15.3"
+
+\new Voice << { c'4 c'8 c' } { s8[ s] s[ s] } >>
index 19895a5af8151d00f7656ea5e51df0d214cd5b5d..854754bafb9b50af6232ada6967cd2d1705cd6da 100644 (file)
@@ -1,6 +1,6 @@
+#(ly:set-option 'warning-as-error #f)
  ď»ż\version "2.15.9"
 
-#(ly:set-option 'warning-as-error #f)
 
 \header {
   texidoc = "This input file contains a UTF-8 BOM not at the very beginning,
diff --git a/input/regression/book-label-no-segfault.ly b/input/regression/book-label-no-segfault.ly
new file mode 100644 (file)
index 0000000..d011c4e
--- /dev/null
@@ -0,0 +1,10 @@
+\version "2.14.0"
+
+\header {
+  texidoc = "
+A book(part) can contain only a label without causing a segfault.
+"
+}
+
+\book {\markup "foo"}   % necessary to produce some output
+\book { \label #'foo }
diff --git a/input/regression/bookpart-variable.ly b/input/regression/bookpart-variable.ly
new file mode 100644 (file)
index 0000000..992294c
--- /dev/null
@@ -0,0 +1,19 @@
+\version "2.14.0"
+
+
+\header {
+  texidoc = "
+A @code{\bookpart} variable can be inserted in a @code{\book}.
+No segfault should occur in this case.
+"
+}
+
+mypart = \bookpart {
+  \relative c' {
+    c1
+  }
+}
+
+\book {
+  \mypart
+}
diff --git a/input/regression/chord-capo.ly b/input/regression/chord-capo.ly
new file mode 100644 (file)
index 0000000..48bb6de
--- /dev/null
@@ -0,0 +1,28 @@
+\version "2.14.0"
+
+\header{
+  texidoc="Properties capoPitch, capoVertical: display chordnames, suitably
+transposed for a guitar capo, either in a line or one above the other.
+"
+}
+
+<<
+  \new ChordNames \chordmode {
+    c1
+    g1
+    c1
+    g1
+    c1
+    g1
+  }
+  \chordmode {
+    c1
+    g1
+    \set ChordNames.capoPitch = #(ly:make-pitch 0 -2 -1/2)
+    c1
+    g1
+    \set ChordNames.capoVertical = ##t
+    c1
+    g1
+  }
+>>
index 287c67403d2994fcae337d1d6d286b503e80cef9..29631053fe76151f90d570321b4dec561aa4a98d 100644 (file)
@@ -1,4 +1,5 @@
 \version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
 
 \header {
 
diff --git a/input/regression/metronome-multimeasure-rest-no-segfault.ly b/input/regression/metronome-multimeasure-rest-no-segfault.ly
new file mode 100644 (file)
index 0000000..ceec61d
--- /dev/null
@@ -0,0 +1,27 @@
+\version "2.14.0"
+\header {
+  texidoc = "
+A metronome marking can be added to a multimeasure rest whose
+engraver was moved to the Staff, without segfaulting.
+"
+}
+
+
+\score {
+  \new Staff {
+    \tempo 4=150
+    R1 |
+  }
+  \layout {
+    \context {
+      \Score
+      \remove "Metronome_mark_engraver"
+      \remove "Staff_collecting_engraver"
+    }
+    \context {
+      \Staff
+      \consists "Metronome_mark_engraver"
+    }
+  }
+}
+
index 3abc0eb6338a989b33136cde65e3b9fc56356106..aa14aef30cac9d70ff11833b7512ff22e4436150 100644 (file)
@@ -32,9 +32,9 @@ original = \relative c'' { c8 d s2 es8 gis8 }
        
        \set Staff.instrumentName = "orig+quote"        
        \set Staff.quotedEventTypes = #'(note-event articulation-event)
-       \new Voice {
+       \new Voice {\voiceOne
            \override Voice . Beam #'collision-voice-only = ##t
            \original }
-       { s4 \quoteDuring #"quoteMe" { s2. } }
+       \new Voice {\voiceTwo s4 \quoteDuring #"quoteMe" { s2. } }
     >>
 >>
index 97e158ed90f86993246eb53bf4d5058a434859b2..ee26fc453f24bd9d9c03e1d43ac69708096841b7 100644 (file)
@@ -30,10 +30,9 @@ original = \relative c'' { c8 d s2 es8 gis8 }
     \new Staff \relative c'' <<
        \set Staff.instrumentName = "orig+quote"        
        \set Staff.quotedEventTypes = #'(note-event articulation-event)
-       \new Voice {
-           \override Voice . Beam #'collision-voice-only = ##t
+       \new Voice {\voiceOne
            \original }
-       \new Voice {
+         \new Voice {\voiceTwo
            s4
            \set fontSize = #-4
            \override Stem #'length-fraction = #(magstep -4)
index c48bb909cb25539cdc58580773548a8859eaa318..9b1578266db459c2b1ce005dd21efaf4ac539427 100644 (file)
@@ -11,6 +11,8 @@ get to the number of repeats.
 Unfolded behavior:"
 }
 
+#(ly:set-option 'warning-as-error #f)
+
 \context Voice \relative c'' {
   \repeat unfold 3 { c^"3x 0a" d }
   %% less alts than body
index 2614b237e8401819cee32c3efca80b3305c4f711..d1c26e76c34fb2a04aafe61a6b157bb7fe6cb088 100644 (file)
@@ -1,4 +1,5 @@
 \version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
 
 \header{
   texidoc="
diff --git a/input/regression/segfaults-fixed.ly b/input/regression/segfaults-fixed.ly
deleted file mode 100644 (file)
index c6749ed..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-\version "2.15.9"
-
-\header {
-  texidoc = "
-This tests various segfault fixes from merging previously-separate
-regtests together.  The output is not important; all that matters
-is that it compiles.
-
-Hopefully we can separate the regtests again in the future.
-"
-}
-% merged to avoid
-% http://code.google.com/p/lilypond/issues/detail?id=1821
-
-
-%%% book-label-no-segfault.ly
-% A book(part) can contain only a label without causing a segfault.
-\book {\markup "foo"}   % necessary to produce some output
-\book { \label #'foo }
-
-
-%%% metronome-multimeasure-rest-no-segfault.ly
-% A metronome marking can be added to a multimeasure rest whose
-% engraver was moved to the Staff, without segfaulting.
-\score {
-  \new Staff {
-    \tempo 4=150
-    R1 |
-  }
-  \layout {
-    \context {
-      \Score
-      \remove "Metronome_mark_engraver"
-      \remove "Staff_collecting_engraver"
-    }
-    \context {
-      \Staff
-      \consists "Metronome_mark_engraver"
-    }
-  }
-}
-
-
-%%% ambitus-with-ligature.ly
-% A @code{\Voice} should be able to contain both an
-% @code{Ambitus_engraver} and a @code{Mensural_ligature_engraver}
-% without segfaulting.
-\new Voice \with  {
-  \consists Ambitus_engraver
-  \consists Mensural_ligature_engraver
-} {
-  \[ c'\longa c''\longa \]
-}
-
-
-%%% beam-skip.ly
-% Beams over skips do not cause a segfault.
-\new Voice << { c'4 c'8 c' } { s8[ s] s[ s] } >>
-
-
-%%% bookpart-variable.ly
-% A @code{\bookpart} variable can be inserted in a @code{\book}.
-% No segfault should occur in this case.
-mypart = \bookpart {
-  \relative c' {
-    c1
-  }
-}
-\book {
-  \mypart
-}
-
-
-%%% skiptypesetting-all-true.ly
-% A score with @code{skipTypesetting} set for the whole score
-% will not segfault.
-{
-  \set Score.skipTypesetting = ##t
-  c'4
-}
-
-
-%%% skiptypesetting-multimeasurerest.ly
-% When @code{skipTypesetting} is set during a
-% @code{skipBars}-induced @code{MultiMeasureRest} spanner, no
-% segfault occurs.
-<<
-  {
-    \time 3/4
-    \set Score.skipBars = ##t
-    a4 a a
-    R2.*2
-  }
-  \\
-  {
-    \set Score.skipTypesetting = ##t
-    s2. s4
-    \set Score.skipTypesetting = ##f
-  }
->>
-
-
-
-
diff --git a/input/regression/skiptypesetting-all-true.ly b/input/regression/skiptypesetting-all-true.ly
new file mode 100644 (file)
index 0000000..0765480
--- /dev/null
@@ -0,0 +1,15 @@
+\version "2.14.0"
+
+\header{
+  texidoc = "
+A score with @code{skipTypesetting} set for the whole score
+will not segfault.
+"
+}
+
+
+{
+  \set Score.skipTypesetting = ##t
+  c'4
+}
+
index 5658d5ef37c5a2ef421f961320354106f223a4be..ce0daec988f7630176f83bd5baa299861d3d12a9 100644 (file)
@@ -1,4 +1,5 @@
 \version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
 
 \header {
 
diff --git a/input/regression/skiptypesetting-multimeasurerest.ly b/input/regression/skiptypesetting-multimeasurerest.ly
new file mode 100644 (file)
index 0000000..2a27f63
--- /dev/null
@@ -0,0 +1,23 @@
+\version "2.14.0"
+
+\header {
+  texidoc = "
+When @code{skipTypesetting} is set during a @code{skipBars}-induced
+@code{MultiMeasureRest} spanner, no segfault occurs.
+"
+}
+
+<<
+  {
+    \time 3/4
+    \set Score.skipBars = ##t
+    a4 a a
+    R2.*2
+  }
+  \\
+  {
+    \set Score.skipTypesetting = ##t
+    s2. s4
+    \set Score.skipTypesetting = ##f
+  }
+>>
index 166ebbceb610a99ca95b533ed9f0908814fca35c..8c0ef57d7924cd8d227939317f0a3934e6f20360 100644 (file)
@@ -15,7 +15,7 @@ a fixed distance from the note head.
 "
 }
 
-
+#(ly:set-option 'warning-as-error #f)
 
 \context Voice \relative c''{
   \textSpannerUp
index fd7b7cea2ee50bcfbad493773b6c13c9ec1e3943..0010438d2620417650e9a62e405ad2f26b659790 100644 (file)
@@ -1,4 +1,5 @@
 \version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
 
 \header {
 
index 89db7ab1aacf4c51de0eeb966638714ef85eb56d..60c0113dc653915efa3abf3aaa3e820b95a44870 100644 (file)
@@ -1,4 +1,5 @@
 \version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
 
 \header {
   texidoc="
index 6c313623636965f02fd6dde2e79c1879b87c6fed..99ff64c71427d551ec3b9770a4701493e1a2072a 100644 (file)
@@ -1,16 +1,16 @@
+\version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
+
 \header
 {
 
   texidoc =
-
   "when @code{tieWaitForNote} is set, the right-tied note does not
  have to follow the lef-tied note directly. When @code{tieWaitForNote}
  is set to false, any tie will erase all pending ties."
   
 }
 
-\version "2.14.0"
-
 \paper { ragged-right =  ##t }
 \relative c' {
   c~ e~ g~ <c, e g>
index 75d6cfc63abef971a4e6daddddec77d4ac13a1c3..0845cc5f60bcabbaf7a7911711aaca8c4e3bfeb3 100644 (file)
@@ -1,4 +1,5 @@
 \version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
 
 \header {
   texidoc = "If you specify two different key signatures at one point, a
index e2281400d01007ac9f14173a51dad0f9c9515b4b..b55668bec8e7d6fadb466d7bc950779b2df1a476 100644 (file)
@@ -124,8 +124,8 @@ Chord_name_engraver::process_music ()
 
       pitches = scm_sort_list (pitches, Pitch::less_p_proc);
 
-      SCM name_proc = get_property ("chordNameFunction");
-      markup = scm_call_4 (name_proc, pitches, bass, inversion,
+      SCM capo_proc = ly_lily_module_constant ("capo-handler");
+      markup = scm_call_4 (capo_proc, pitches, bass, inversion,
                            context ()->self_scm ());
     }
   /*
index dc6b652b3d285503ff089ea1b587632868f5c80e..0848ec70f6114018ceaf3ebabbdf2f70f313491c 100644 (file)
@@ -114,8 +114,7 @@ LY_DEFINE (ly_parse_file, "ly:parse-file",
       sources.set_path (&global_path);
 
       string mapped_fn = map_file_name (file_name);
-      message (_f ("Processing `%s'", mapped_fn.c_str ()));
-      progress_indication ("\n");
+      basic_progress (_f ("Processing `%s'", mapped_fn.c_str ()));
 
       Lily_parser *parser = new Lily_parser (&sources);
 
index 1be0656f75dc360e1a8ddbf8fec32cc6f2efe718..291895eb3325873f8ad2fe49d2ad436ae2cd2d13 100644 (file)
@@ -231,7 +231,7 @@ Pango_font::pango_item_string_stencil (PangoGlyphItem const *glyph_item) const
                         SCM_EOL);
       tail = SCM_CDRLOC (*tail);
     }
-
+  pango_fc_font_unlock_face (fcfont);
   pango_glyph_string_free (pgs);
   pgs = 0;
   PangoFontDescription *descr = pango_font_describe (pa->font);
index 1587d7f5abf477d18b7aae76369e25ebf7c53c3f..69fba1b8b7d94b14fed096a679e337e37e9db935 100644 (file)
@@ -85,14 +85,14 @@ LY_DEFINE (ly_progress, "ly:progress",
   return SCM_UNSPECIFIED;
 }
 
-LY_DEFINE (ly_success, "ly:success",
+LY_DEFINE (ly_basic_progress, "ly:basic-progress",
            1, 0, 1, (SCM str, SCM rest),
-           "A Scheme callable function to issue a success message @var{str}."
+           "A Scheme callable function to issue a basic progress message @var{str}."
            "  The message is formatted with @code{format} and @var{rest}.")
 {
   LY_ASSERT_TYPE (scm_is_string, str, 1);
   str = scm_simple_format (SCM_BOOL_F, str, rest);
-  successful (ly_scm2string (str));
+  basic_progress (ly_scm2string (str));
   return SCM_UNSPECIFIED;
 }
 
index fbf98e66bf7fd8af28ffa2eccf6df4fec82d94f0..c94240cd54e2b3dc783a7b65b8e93d7ae5718e61 100644 (file)
@@ -134,9 +134,9 @@ Latex_output = {
     PRINTFILENAME: '''\\texttt{%(filename)s}
 ''',
 
-    QUOTE: r'''\begin{quotation}
+    QUOTE: r'''\begin{quote}
 %(str)s
-\end{quotation}''',
+\end{quote}''',
 
     VERBATIM: r'''\noindent
 \begin{verbatim}%(verb)s\end{verbatim}
index e3447eba2778aee22b26d941df17dae55d9eff36..0542893cc02726e42a400f494d861d8dec90ce66 100644 (file)
@@ -170,3 +170,31 @@ FOOBAR-MARKUP) if OMIT-ROOT is given and non-false.
         (alist (map chord-to-exception-entry elts)))
     (filter (lambda (x) (cdr x)) alist)))
 
+(define-public (capo-handler pitches bass inversion context)
+  (let ((chord-function
+          (ly:context-property context 'chordNameFunction 'jazz-chord-names))
+        (capo-pitch (ly:context-property context 'capoPitch #f)))
+    (if (not capo-pitch)
+        (chord-function pitches bass inversion context)  ;; call the chordNameFunction as of old
+        (let* ((new-pitches   ;; else transpose the pitches and do the chord twice
+               (map (lambda (p)
+                       (ly:pitch-transpose p capo-pitch))
+                    pitches))
+               (new-bass
+                 (if (ly:pitch? bass)
+                     (ly:pitch-transpose bass capo-pitch)
+                     '()))
+               (new-inversion
+                 (if (ly:pitch? inversion)
+                     (ly:pitch-transpose inversion capo-pitch)
+                     '()))
+               (capo-markup
+                 (make-parenthesize-markup
+                   (chord-function new-pitches new-bass new-inversion context)))
+               (name-markup (chord-function pitches bass  inversion context))
+               (capo-vertical (ly:context-property context 'capoVertical #f)))
+          (if capo-vertical
+              (make-column-markup (list name-markup capo-markup))
+              (make-line-markup (list name-markup
+                                      (make-hspace-markup 1)
+                                      capo-markup)))))))
index e9acd9690713e8924844cda7d0ff90f3f565a16c..a238998d033cc77fc841b48ceb4e4b66ec5cc8aa 100644 (file)
@@ -135,6 +135,8 @@ that normally end on beats.")
      (beatStructure ,list? "List of @code{baseMoment}s that are combined
 to make beats.")
 
+     (capoPitch ,ly:pitch? "The pitch to transpose chords down by when using the capo.")
+     (capoVertical ,boolean? "Whether to display actual and transposed pitches above each other or not.")
      (chordChanges ,boolean? "Only show changes in chords scheme?")
      (chordNameExceptions ,list? "An alist of chord exceptions.
 Contains @code{(@var{chord} . @var{markup})} entries.")
index d9a38bfd5ff7ddf7954a0c961676122daaaa97de..ecd67e5b122df92430f7465fc9f61bc1b3e1b67d 100644 (file)
@@ -838,7 +838,7 @@ the @code{staff-staff-spacing} property of the staff's
 structure.")
      (stem-attachment ,number-pair? "An @code{(@var{x} . @var{y})}
 pair where the stem attaches to the notehead.")
-     (stem-begin-position ,ly:dimension? "User override for the
+     (stem-begin-position ,number? "User override for the
 begin position of a stem.")
      ;;[TODO: doco]
      (stem-spacing-correction ,number? "Optical correction amount for
index 013cc2a4377bc0b373db7364221feedc96fe6d95..a033186067d998e51af075c695b9ce2fcaae7ec3 100644 (file)
@@ -56,7 +56,7 @@
        (node-children node)))
 
 (define (processing name)
-  (ly:message (_ "Processing ~S...") name))
+  (ly:basic-progress (_ "Processing ~S...") name))
 
 (define (self-evaluating? x)
   (or (number? x) (string? x) (procedure? x) (boolean? x)))
index 55d989e2d2ba7d8260f90955bbf86d0cc720a9c6..f7e53cb1793838947ea2072f9b8ae75c9dc5ffce 100644 (file)
@@ -642,7 +642,7 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
                        ".scm"))
         (outfile (open-file out-file-name "w")))
     (set! gc-dumping #t)
-    (format #t "Dumping GC statistics ~a...\n" out-file-name)
+    (ly:progress "Dumping GC statistics ~a...\n" out-file-name)
     (for-each (lambda (y)
                 (let ((x (car y))
                       (c (cdr y)))
@@ -662,16 +662,16 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
     (newline outfile)
     (if (defined? 'gc-live-object-stats)
         (let* ((stats #f))
-          (display "Live object statistics: GC'ing\n")
+          (ly:progress "Live object statistics: GC'ing\n")
           (ly:reset-all-fonts)
           (gc)
           (gc)
-          (display "Asserting dead objects\n")
+          (ly:progress "Asserting dead objects\n")
           (ly:set-option 'debug-gc-assert-parsed-dead #t)
           (gc)
           (ly:set-option 'debug-gc-assert-parsed-dead #f)
           (set! stats (gc-live-object-stats))
-          (display "Dumping live object statistics.\n")
+          (ly:progress "Dumping live object statistics.\n")
           (dump-live-object-stats outfile)))
     (newline outfile)
     (let* ((stats (gc-stats)))
@@ -702,7 +702,8 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
          (mem (string->number (match:substring (car interesting) 1))))
     (format #t "VMDATA: ~a\n" mem)
     (display (gc-stats))
-    (if (> mem 100000)
+    (newline)
+    (if (> mem 500000)
         (begin (dump-gc-protects)
                (raise 1)))))
 
@@ -727,7 +728,7 @@ PIDs or the number of the process."
   "Exit function for lilypond"
   (if (not silently)
       (case status
-        ((0) (ly:success (_ "Compilation successfully completed")))
+        ((0) (ly:basic-progress (_ "Success: compilation successfully completed")))
         ((1) (ly:warning (_ "Compilation completed with warnings or errors")))
         (else (ly:message ""))))
   (exit status))
index cba1c9cd35b307f803ee64d53dc6820e91cf2c8b..d799925909c9c4933527cafe77bfb56149977c4b 100644 (file)
@@ -9,21 +9,14 @@ import sys
 import os
 import glob
 
+# these links are relative from /website/ on lilypond.org
+depth = "../"
+
 ### translation data -- shouldn't be here; see issue
 ### http://code.google.com/p/lilypond/issues/detail?id=1050
 
-langs = []
-
-import langdefs
-langobjs = langdefs.LANGUAGES
-for i in langobjs:
-    if i.code == 'en':
-        langs.append ('')
-    else:
-        langs.append(i.code)
-
-# these links are relative from /website/ on lilypond.org
-depth = "../"
+#langs = ['', 'cs', 'de', 'es', 'fr', 'hu', 'it', 'ja', 'nl', 'zh']
+langs = ['', 'cs', 'de', 'es', 'fr', 'hu', 'it', 'ja', 'nl', 'zh']
 
 # Get/update node translations
 '''
index c0c7ee3e354fdee020bfeeb971cf92f91be57ec0..930c11da107db7bb24345a13216beaf6dc9c5fce 100644 (file)
@@ -182,9 +182,11 @@ string."""
     conv_list = get_conversions (from_version, to_version)
 
     error_file_write (_ ("Applying conversion: "))
-        
+
     last_conversion = ()
     try:
+        if not conv_list:
+            last_conversion = to_version
         for x in conv_list:
             error_file_write (tup_to_str (x[0]))
             if x != conv_list[-1]:
@@ -275,7 +277,7 @@ def do_one_file (infile_name):
         elif not global_options.skip_version_add:
             result = newversion + '\n' + result
             
-        error_file_write ('\n')            
+        error_file_write ('\n')
     
         if global_options.edit:
             try: