]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.3.42 release/1.3.42
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 3 Apr 2000 08:19:38 +0000 (10:19 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 3 Apr 2000 08:19:38 +0000 (10:19 +0200)
===========

* Lots of fixes to windows distribution scripts.

* Added configuration features --program-prefix, --program suffix.

* lily/my-lily-parser.cc (get_chord): Bugfix, don't use deleted pitch.
This fixes inversions c/g and bass additions d/+c on chords.

1.3.41.

68 files changed:
CHANGES
Documentation/faq.texi
Documentation/user/invoking.itexi
Documentation/user/lilypond.tely
Documentation/user/ly2dvi.texi
Documentation/user/mudela-book.tely
Documentation/user/properties.itely
Documentation/user/refman.itely
Documentation/user/tutorial.itely
VERSION
aclocal.m4
buildscripts/make-cygwin-cross.sh
configure
debian/changelog
debian/control
debian/copyright
debian/out/control
debian/postinst
debian/rules
input/test/staff-margin.ly
input/test/standchen-as5.ly
input/test/tchaikovsky.ly
input/tutorial/galuppi.ly
lily/align-interface.cc
lily/axis-group-interface.cc
lily/bar-engraver.cc
lily/bar.cc
lily/base-span-bar-engraver.cc [deleted file]
lily/break-align-engraver.cc
lily/break-align-item.cc
lily/breathing-sign-engraver.cc
lily/clef-engraver.cc
lily/include/align-interface.hh
lily/include/axis-group-interface.hh
lily/include/bar.hh
lily/include/base-span-bar-engraver.hh [deleted file]
lily/include/break-align-item.hh
lily/include/span-bar.hh
lily/include/system-start-delimiter.hh [new file with mode: 0644]
lily/include/translator-group.hh
lily/instrument-name-engraver.cc [new file with mode: 0644]
lily/key-engraver.cc
lily/new-span-bar-engraver.cc [new file with mode: 0644]
lily/side-position-interface.cc
lily/spacing-spanner.cc
lily/span-bar-engraver.cc
lily/span-bar.cc
lily/span-score-bar-engraver.cc
lily/staff-margin-engraver.cc
lily/system-start-delimiter-engraver.cc [new file with mode: 0644]
lily/system-start-delimiter.cc [new file with mode: 0644]
lily/time-signature-engraver.cc
lily/timing-engraver.cc
lily/translator-group.cc
ly/engraver.ly
make/out/lilypond.lsm
make/out/lilypond.spec
mutopia/Coriolan/clarinetti.ly
mutopia/F.Schubert/standchen.ly
mutopia/Hymns/maccabaeus.ly
mutopia/Hymns/ode.ly
mutopia/Hymns/stille.ly
mutopia/J.S.Bach/Duette/global-i.ly
mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly
mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly
mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly
scm/lily.scm
stepmake/configure

diff --git a/CHANGES b/CHANGES
index 136a684c8d89b4b7e785488f1b7d96d0ef8a2600..32c873871198950ccd50115aa17b7aff8edd8207 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,40 +1,7 @@
---- ../lilypond-1.3.41.jcn3/CHANGES    Sat Apr  1 16:51:17 2000
-++ b/CHANGES   Mon Apr  3 10:06:40 2000
-@@ -1,3 +1,8 @@
-1.3.41.jcn4
-===========
-
-* Windows distribution does not longer require Cygnus' usertools.
-
- 1.3.41.jcn3
- ===========
- --- ../lilypond-1.3.41/CHANGES        Thu Mar 30 11:05:01 2000
-++ b/CHANGES   Sat Apr  1 20:35:51 2000
-@@ -1,3 +1,8 @@
-1.3.41.mb1
 
-* Avoid that xxxXXXVerticalExtent is used for empty HaraKiriStaff 
-  lines.
-
- 1.3.40.jcn3
- ===========
- --- ../lilypond-1.3.41.jcn2/CHANGES   Sat Apr  1 13:09:18 2000
-++ b/CHANGES   Sat Apr  1 16:51:17 2000
-@@ -1,3 +1,9 @@
 1.3.41.jcn3
 ===========
 
-* chord.cc (to_chord): Forgot to remove early chord bugfix, introducing
-a new bug.
-
- 1.3.41.jcn2
- ===========
- --- ../lilypond-1.3.41.jcn1/CHANGES   Thu Mar 30 17:50:26 2000
-++ b/CHANGES   Sat Apr  1 13:09:18 2000
-@@ -1,3 +1,13 @@
-1.3.41.jcn2
-===========
-
 * Lots of fixes to windows distribution scripts.
 
 * Added configuration features --program-prefix, --program suffix.
@@ -42,25 +9,30 @@ a new bug.
 * lily/my-lily-parser.cc (get_chord): Bugfix, don't use deleted pitch.
 This fixes inversions c/g and bass additions d/+c on chords.
 
- 1.3.41.jcn1
- ===========
- --- ../lilypond-1.3.41/CHANGES        Thu Mar 30 04:05:01 2000
-++ b/CHANGES   Fri Mar 31 00:30:53 2000
-@@ -1,3 +1,10 @@
-1.3.41.mwd1
+1.3.41.mb1
+==========
+
+* Avoid that xxxXXXVerticalExtent is used for empty HaraKiriStaff
+  lines.
+
+1.3.41.hwn1
 ===========
 
-* Fixed extra dots on repeat span-bars.
+* Debian patches (thanks Anthony!)
 
-* Changed the look of :|: repeat bars.
+* Use symbols for prefatory matter spacing. Do not use the typename
+for looking up item pairs in the table, but read element property
+break-align-symbol
 
- 1.3.40.jcn3
- ===========
- 1.3.41.jcn1
-===========
+* Instrument_name_engraver, uses break alignment instead of
+side-position.
+
+* System_start_delimiter_engraver, System_start_delimiter, uses a
+spanner for the braces/brackets at the left of the system. Remove all
+old Span_score_bar engravers.
 
-* More windows distribution changes: distribute minimal .zip too, and
-fixes to setup scripts.
+* Removed Base_span_bar_engraver::use_prority_b_, and moved
+Base_span_bar_engraver into Span_bar_engraver.
 
 1.3.40.jcn3
 ===========
@@ -69,7 +41,7 @@ fixes to setup scripts.
 
 * input/test: Removed stale AutoStaffSwitch examples.
 
-* mutopia/E.Saite: Fixed gnossiene-4, doing \autochange.  Removed
+* mutopia/E.Satie: Fixed gnossiene-4, doing \autochange.  Removed
 stale copy of gnossiene-4.
 
 * buildscripts/make-cygwin-cross.sh: Made some small .zip package fixes.
index 6953ff89b7ad3b1e7ea8a7dca1ae744265228ae6..03b04ab6e967ae39d8e1518f55ddddd568f31500 100644 (file)
@@ -120,7 +120,7 @@ be used by LilyPond, not by any other programs.
 @node Documentation, Language- mudela, Installing, FAQ - GNU LilyPond FAQs
 @section Documentation
 
-@subsubsection What  a sober website/manual you have there!
+@subsubsection What a sober website/manual you have there!
 
 LilyPond development is moving quite fast, documentation will often lag
 a bit behind.  But don't hesitate to point out inaccuracies. Whip up
index c8c67759651d23d6bd15d941403492233c99b85f..747153935601f2a32c6676bb9673232d3b042a41 100644 (file)
 
 @table @samp
 @item -f,--format=
-       Output format for sheet music. Choices are tex (for TeX
+       Output format for sheet music. Choices are tex (for @TeX{}
        output), ps (for PostScript) and scm (for GUILE)
 @item -I,--include=
     add @file{FILE} to the search path for input files.
 @item -m,--midi
-    Disable TeX output. If you have a \midi definition, it will do the 
+    Disable @TeX{} output. If you have a \midi definition, it will do the 
     midi output only.
 @item -M,--dependencies
     Also output rules to be included in Makefile.
@@ -26,7 +26,7 @@
     which lists what functions and classes may produce copious debugging
     output.
 @item -s,--safe
-    Disallow untrusted @code{\include} directives, backslashes in TeX
+    Disallow untrusted @code{\include} directives, backslashes in @TeX{}
 code and named output.
 @item -t,--test
     Switch on any experimental features.  Not for general public use.
index 987e40be36b09b65e77594425873d308e32a48da..b4bbf8a654a0c8339fede48c3a4c41d0a2523bf6 100644 (file)
@@ -9,7 +9,7 @@
 @subtitle The GNU Project Typesetter
 @author Han-Wen Nienhuys, Jan Nieuwenhuizen and Adrian Mariano
 
-     Copyright @copyright 1999 by the authors
+     Copyright @copyright{} 1999 by the authors
 
 @vskip 0pt plus 1filll
 
index d7cf664d129e50095a9475909ab8a8881feec9f9..89793cf69649ee52a398068b2719d7dd326945b2 100644 (file)
@@ -5,13 +5,13 @@
 @chapter Ly2dvi
 
 @section DESCRIPTION
-ly2dvi is a Python script which creates input file for LaTeX,
+ly2dvi is a Python script which creates input file for La@TeX{},
 based on information from the output files from LilyPond.
 The script handles multiple files. If a mudela file name is
-specified LilyPond is run to make an output (TeX) file.
+specified LilyPond is run to make an output (@TeX{}) file.
 
-One or more LaTeX files are created, based on information found
-in the output (TeX) files, and latex is finally run to create
+One or more La@TeX{} files are created, based on information found
+in the output (@TeX{}) files, and latex is finally run to create
 one or more DVI files.
 
 The majority of this utility came from a bourne script written by Jan
@@ -30,10 +30,10 @@ Arne Fagertun name @file{ly2dvi}.
     info is written, in level two the command @strong{set -x} is run, which
     echoes every command in the ly2dvi script.
 @item -F,--headers=
-    Name of additional LaTeX headers file. This is included in the
+    Name of additional La@TeX{} headers file. This is included in the
     tex file at the end of the headers, last line before @code{\begin@{document@}}
 @item -H,--Heigth=
-    Set paper heigth (points). Used together with width and LaTeX name of
+    Set paper heigth (points). Used together with width and La@TeX{} name of
     papersize in case of papersize unknown to ly2dvi.
 @item -K,--keeplilypond
     Keep LilyPond output after the run.
@@ -47,16 +47,16 @@ Arne Fagertun name @file{ly2dvi}.
 @item -P,--postscript
     In addition to the DVI file, also Generate a postsript file.
 @item -W,--Width=
-    Set paper width (points). Used together with heigth and LaTeX name of
+    Set paper width (points). Used together with heigth and La@TeX{} name of
     papersize in case of papersize unknown to ly2dvi.
 @item -d,--dependencies
     Tell lilypond to make dependencies file.
 @item -h,--help
     Print help.
 @item -k,--keeply2dvi
-    Keep the LaTeX file after the run.
+    Keep the La@TeX{} file after the run.
 @item -l,--language=
-    Specify LaTeX language.
+    Specify La@TeX{} language.
     (@strong{-l norsk} produces @code{\usepackage[norsk]@{babel@}}).
 @item -o,--output=
     Set output directory.
@@ -64,7 +64,7 @@ Arne Fagertun name @file{ly2dvi}.
     Specify papersize.
     (@strong{-p a4} produces @code{\usepackage[a4paper]@{article@}})
 @item -s,--separate
-    Normally all output files are included into one LaTeX file.
+    Normally all output files are included into one La@TeX{} file.
     With this switch all files are run separately, to produce one
     DVI file for each.
 @end table
@@ -77,9 +77,9 @@ file. They are overridden by corresponding command line options.
 
 @table @samp
 @item language="";
-    Specify LaTeX language
+    Specify La@TeX{} language
 @item latexheaders="";
-    Specify additional LaTeX headers file
+    Specify additional La@TeX{} headers file
 @item orientation="";
     Set orientation.
 @item paperlinewidth="";
@@ -156,9 +156,9 @@ This turns off (default) or on the ability to keep the temporary files
 that are generated by the ly2dvi job.  Possible values are 0 (off) and
 1 (on)
 @item LANGUAGE=value
-Specify LaTeX language.  Possible value is a valid LaTeX language.
+Specify La@TeX{} language.  Possible value is a valid La@TeX{} language.
 @item LATEXHF=value
-Specify additional LaTeX headers file.  Possible value is a file
+Specify additional La@TeX{} headers file.  Possible value is a file
 specification. 
 @item LILYINCLUDE=value
 Additional directories for input files.  Possible value is a delimited
@@ -237,7 +237,7 @@ If you have found a bug, you should send a bugreport.
 @section Remarks
 
 Many papersizes are now supported. Information on other sizes
-(LaTeX names, horizontal and vertical sizes) should be mailed to
+(La@TeX{} names, horizontal and vertical sizes) should be mailed to
 the author or to the mailing list.
 
 Supported papersizes are:
@@ -255,6 +255,3 @@ Original bourne shell version author:
 @email{Jan.A.Fagertun@@energy.sintef.no, Jan Arne Fagertun},
 @uref{http://www.termo.unit.no/mtf/people/janaf/}
 
-
-
-
index 8b8509d582cdb9412bd265d51c3aa89013f976c9..e9953bcbce1902878c4cada6941fb2676fb4ca75 100644 (file)
@@ -5,10 +5,10 @@
 
 @titlepage
 @title mudela-book Manual
-@subtitle Integrating mudela with LateX and TeXinfo
+@subtitle Integrating mudela with La@TeX{} and TeXinfo
 @author Tom Cato Amundsen and  Han-Wen Nienhuys
 
-     Copyright @copyright 1999 by the authors
+     Copyright @copyright{} 1999 by the authors
 
 @vskip 0pt plus 1filll
 
@@ -78,19 +78,19 @@ translation approved by the Free Software Foundation.
 
 [TODO: THIS MANUAL IS OUTDATED. FIXME.]
 
-Mudela-book is a script that process your \LaTeX file and with great
+Mudela-book is a script that process your La@TeX{} file and with great
 help from GNU LilyPond it translates blocks of mudela code it finds
 inside @code{mudela} environments to tex or eps graphics. It then
-creates a new file that can be sent through \LaTeX to create a
+creates a new file that can be sent through La@TeX{} to create a
 @file{.dvi} file with lines of music integrated with text.
 
 Mudela-book will do its best to try to align the music to the left and
 right margins. Currently the most used papersizes and one- and
 twocolumn mode is supported, but if you use the geometry-package from
-LaTeX or change the margins things will break.
+La@TeX{} or change the margins things will break.
 
 This document assumes you have basic knowledge of GNU LilyPond and
-LaTeX.
+La@TeX{}.
 
 So what does this look like? Well, here is an example:
 @mudela[veryverbatim, intertext="produces this music:"]
@@ -105,8 +105,8 @@ So what does this look like? Well, here is an example:
 }
 @end mudela
 If you are lucky, the above example show a nice feature of LilyPond
-and LaTeX. Since LilyPond can output the music as \TeX graphics,
-LaTeX can insert pagebreaks between the lines of music.
+and La@TeX{}. Since LilyPond can output the music as @TeX{} graphics,
+La@TeX{} can insert pagebreaks between the lines of music.
 
 Notice that there is no @code{\paper} statement in the example
 above. Mudela-book will insert some code for you that defines the
@@ -186,7 +186,7 @@ was created with this code:
 @end mudela
 @end example
 
-To avoid that LaTeX places the music on a line of its one, there should
+To avoid that La@TeX{} places the music on a line of its one, there should
 be no empty lines between the normal text and the mudela
 environment. 
 
@@ -266,7 +266,7 @@ if you need this one of these options.
 
 This was all options to @code{\begin}. The rest of the mudela
 document will show some ways you can use mudela in
-LaTeX documents. It will also act as a simple test-suite for
+La@TeX{} documents. It will also act as a simple test-suite for
 mudela-book. You can place @code{eps} mudela in and marginspars just
 as any other included eps graphics.
 
@@ -315,8 +315,8 @@ Mudela-book does know about @code{\onecolumn} and @code{\twocolumn}.
 So the music will be adjusted to the new linewith:
 
 Verbatim environments will also ignore the page margins. That is
-a feature of LaTeX. (But you usually put things inside a verbatim
-environment when you don't want LaTeX to do any linebreaking)
+a feature of La@TeX{}. (But you usually put things inside a verbatim
+environment when you don't want La@TeX{} to do any linebreaking)
 
 
 @section Texinfo behavior
@@ -326,9 +326,9 @@ environment when you don't want LaTeX to do any linebreaking)
 @section Invocation
 
 @file{mudela-book} is a script that helps integrating mudela and
-LaTeX.  mudela-book runs LilyPond on fragments of mudela in your
+La@TeX{}.  mudela-book runs LilyPond on fragments of mudela in your
 source file, and includes the results into document that can be
-processed with LaTeX.  The result is a text document with formatted
+processed with La@TeX{}.  The result is a text document with formatted
 music integrated.
 
 Lilypond will by default create all output files in directory @file{out}.
@@ -382,7 +382,7 @@ to whatever he wants.
     Force all mudela to use this fontsize, overriding options
     given to \begin@{mudela@}
 @item --outname=FILE
-    The name of LaTeX file to output. If this option  is not given,
+    The name of La@TeX{} file to output. If this option  is not given,
 the output name derived from the input name.
 @item --out-www=DIRECTORY
     The name of the directory to output lilypond output and input to.
@@ -406,9 +406,9 @@ the output name derived from the input name.
 
 @section Bugs
   
-The LaTeX \includeonly@{...@} command is ignored.
+The La@TeX{} \includeonly@{...@} command is ignored.
 
-Ignores almost all LaTeX commands that changes margins and linewidths.
+Ignores almost all La@TeX{} commands that changes margins and linewidths.
 
 @section Authors
 
@@ -419,8 +419,3 @@ Ignores almost all LaTeX commands that changes margins and linewidths.
 
 @bye
 
-
-
-
-
-
index 3804e11ab8c293600f9f688b3d178a9699cd9364..15418e5a662b479a50097e4df7b414e79e25deb4 100644 (file)
@@ -8,22 +8,21 @@ property is listed in parentheses after the property name.
 @end macro
 
 @table @samp
-  @item @code{Generic_property_list} Defines names and types for
-generic properties. These are properties than can be plugged into the
-backend directly. See the init file @file{generic-property.scm} for
-details.  For internal use only.
+  @item @code{Generic_property_list}
+    Defines names and types for generic properties. These are properties
+    than can be plugged into the backend directly. See the init file
+    @file{generic-property.scm} for details.  For internal use only.
 
-
-@item @code{XXXVerticalExtent}@indexcode{groupVerticalExtent}
-@propertytype{Interval: a cons of numbers}
-
-   Hard code the size of the vertical group in context XXX, example
+  @item @code{XXXVerticalExtent}@indexcode{groupVerticalExtent} @propertytype{Interval: a cons of numbers}
+    Hard code the size of the vertical group in context XXX, example
 @example
-  \property Staff.StaffVerticalExtent = #(-5.0 . 5.0)
+\property Staff.StaffVerticalExtent = #(-5.0 . 5.0)
 @end example
-  The value is a cons of real numbers, that measure the extent in
-staff spaces
-   
+    The value is a cons of real numbers, that measure the extent in
+    staff spaces.
+@end table   
+
+@subsubheading Lyrics properties
 
 @cindex properties!Lyrics
 
@@ -39,6 +38,7 @@ staff spaces
     dot.
 @end table
 
+@subsubheading Thread properties
 
 @cindex properties!Thread
 
@@ -377,7 +377,10 @@ Normally a tuplet bracket is as wide as the
 property, you can make brackets last shorter. Example
 
 @mudela[verbatim,fragment]
-\context Voice \times 2/3 { \property  Voice.tupletSpannerDuration = #(make-moment 1 4) [c8 c c] [c c c] }
+\context Voice \times 2/3 {
+  \property Voice.tupletSpannerDuration = #(make-moment 1 4)
+  [c8 c c] [c c c]
+}
 @end mudela
 
 @end table
@@ -572,6 +575,7 @@ no clef is printed upon creation.
     the music given in an @code{\alternative}.
 @end table
    
+@subsubheading GrandStaff properties
 
 @cindex properties!GrandStaff
 
@@ -583,6 +587,7 @@ no clef is printed upon creation.
     Set the minimum vertical distance between staffs.  
 @end table
 
+@subsubheading Score properties
 
 @cindex properties!Score
 
@@ -618,6 +623,7 @@ r1 r1*3 R1*3\property Score.skipBars=1 r1*3 R1*3
 @end example
 @end table
 
+@subsubheading ChordNamesVoice properties
 
 @cindex properties!ChordNamesVoice
 
index 2827b4b0f874b1af782e4d158e49085cc1198b72..eb8dc396e14f387abeca82dfbd5a9d2b5856e28d 100644 (file)
@@ -312,8 +312,6 @@ Simply include the language specific init file.  For example:
 `@code{\include "english.ly"}'.  The available language files and the
 names they define are:
 
-@quotation
-
 @example 
                         Note Names               sharp       flat
 nederlands.ly  c   d   e   f   g   a   bes b   -is         -es
@@ -325,8 +323,6 @@ italiano.ly    do  re  mi  fa  sol la  sid si  -d          -b
 catalan.ly     do  re  mi  fa  sol la  sid si  -d/-s       -b 
 @end example 
 
-@end quotation
-
 Pitch names can be redefined using the
 @code{\notenames}@keyindex{notenames} command, see
 subsection XREF-notenames [FIXME].
@@ -394,7 +390,7 @@ different modes have different rules for deciding what is a word.
     over 127, or a two-character combination of a backslash followed
     by one of `@code{`}', `@code{'}', `@code{"}', or
     `@code{^}'.@footnote{The purpose of Lyrics mode is that you can
-    enter lyrics in TeX format or a standard encoding without
+    enter lyrics in @TeX{} format or a standard encoding without
     needing quotes.  The precise definition of this mode indeed is
     ludicrous.  This will remain so until the authors of LilyPond
     acquire a deeper understanding of character encoding, or someone
@@ -410,10 +406,7 @@ different modes have different rules for deciding what is a word.
     spaces into words without using quotes.  Quoted words can also be
     used in Lyrics mode to specify words that cannot be written with
     the above rules.  Here are some examples.  Not all of these words
-    are printable by TeX.
-
-
-    @quotation
+    are printable by @TeX{}.
 
 @example 
 Ah!             % a word
@@ -422,8 +415,6 @@ Ah!             % a word
 _ _ _ _         % 4 words, each one a space 
 @end example 
 
-    @end quotation
-
     Since combinations of numbers and dots are used for indicating
     durations, you can not enter real numbers in this mode.
 @end table
@@ -1136,7 +1127,7 @@ name of the corresponding symbol appearing underneath.
 @end mudela
 
 In addition, it is possible to place arbitrary strings of text or
-TeX above or below notes by using a string instead of an
+@TeX{} above or below notes by using a string instead of an
 identifier: `@code{c^"text"}'.  Fingerings 
 @cindex fingering
  can be
@@ -2837,8 +2828,7 @@ instrument name should be chosen from the following list.  If the
 selected string does not exactly match, then LilyPond uses the default
 piano.
 
-
-@quotation
+@c @quotation
 
 @example 
 "acoustic grand"            "contrabass"           "lead 7 (fifths)"
@@ -2886,7 +2876,7 @@ piano.
 "cello"                     "lead 6 (voice)" 
 @end example 
 
-@end quotation
+@c @end quotation
 
 
 @cindex MIDI types and performers
index cbaa5f041bb0b4e370940a4585f97ed2d8079822..9bd5e9e28e81424e44014ebc440d04238f9d01e0 100644 (file)
@@ -73,7 +73,7 @@ Enter it (or copy it, the filename is @file{menuet.ly}), compile it
 with LilyPond and view the output.  Details of this procedure may vary
 from system to system.  To create the output, one would issue the
 command `@code{ly2dvi menuet}'.  @file{ly2dvi} is a program that does
-the job of running LilyPond and TeX, handling of titles and
+the job of running LilyPond and @TeX{}, handling of titles and
 adjusting of page margins.
 
 If all goes well, the file @file{menuet.dvi} will be created.
@@ -113,7 +113,8 @@ By default, LilyPond will use definitions for a 20
 point@footnote{A point is the standard measure of length for
 printing.  One point is 1/72.27 inch.} high staff.  We want smaller
 output (16 point staff height), so we must import the settings for
-that size, which is done.@example 
+that size, which is done.
+@example 
 
         \score @{
  
@@ -146,28 +147,32 @@ as close as possible (graphically, on the staff) to the the preceding
 note.  If you add a high-quote an extra octave is added.  The lowered
 quote (a comma) will subtract an extra octave.  Because the first note
 has no predecessor, you have to give the (absolute) pitch of the note
-to start with.@example 
+to start with.
+@example 
 
         \sequential @{
  
 @end example 
   What follows is sequential music, i.e.,
-notes that are to be played and printed after each other.@example 
+notes that are to be played and printed after each other.
+@example 
 
         \time 3/4;
  
 @end example 
   This command changes the time signature of the current piece: a 3/4
 sign is printed.  This command is also used to generate bar lines in
-the right spots.@example 
+the right spots.
+@example 
 
         \key g;
  
 @end example 
- This command changes the current key to G-major.  Although this
 This command changes the current key to G-major.  Although this
 command comes after the @code{\time} command, in the output, the key
 signature comes before the time signature: LilyPond knows about music
-typesetting conventions. @example 
+typesetting conventions.
+@example 
 
         \repeat "volta" 2
  
@@ -182,7 +187,8 @@ alternatives---if there were any.
 @end example 
 The subject of the repeat is again sequential music.  Since
 @code{\sequential} is such a common construct, a shorthand is provided:
-just leave off @code{\sequential}, and the result is the same. @example 
+just leave off @code{\sequential}, and the result is the same.
+@example 
 
         d4
  
@@ -190,14 +196,16 @@ just leave off @code{\sequential}, and the result is the same. @example
  This is a note with pitch @code{d} (determined up to octaves).  The
 relative music was started with a @code{c''}, so the real pitch of this
 note is @code{d''}.  The @code{4} designates the duration of the note
-(it is a quarter note). @example 
+(it is a quarter note).
+@example 
 
         a b
  
 @end example 
 These are notes with pitch @code{a} and @code{b}.  Because their
 duration is the same as the @code{g}, there is no need to enter the
-duration (You may enter it anyway, eg. @code{a4 b4}) @example 
+duration (You may enter it anyway, e.g. @code{a4 b4})
+@example 
 
         d4 g, g |
  
@@ -227,32 +235,37 @@ In this case, a beam over 4 eighths is added.
 the beginning and ending note of the slur is marked with an opening and
 closing parenthesis respectively.  In the line shown above this is
 done for two slurs.  Slur markers (parentheses) are between
-the notes.@example 
+the notes.
+@example 
 
         a4 [b8 a] [g fis] 
  
 @end example 
 Automatic beaming can be overridden by inserting beam marks
-(brackets).  Brackets are put around notes you want beamed.@example 
+(brackets).  Brackets are put around notes you want beamed.
+@example 
 
         g2.  |
  
 @end example 
 A duration with augmentation dot  is notated
-with the duration number followed by a period.@example 
+with the duration number followed by a period.
+@example 
 
         @}
  
 @end example 
   This ends the sequential music to be repeated.  LilyPond will typeset
-a repeat bar.  @example 
+a repeat bar.
+@example 
 
         cis'4 b8 cis a4 |
  
 @end example 
  This line shows that Lily will print an accidental if that is
 needed: the first C sharp will be printed with an accidental, the
-second one without.  @example 
+second one without.
+@example 
 
         a8-. b-. cis-. d-. e-. fis-.
  
@@ -260,7 +273,8 @@ second one without.  @example
 You can enter articulation signs either in a verbose form using a
 shorthand.  Here we demonstrate the shorthand: it is formed by a dash
 and the the character for the articulation to use, e.g. `@code{-.}' for
-staccato as shown above.  @example 
+staccato as shown above.
+@example 
 
         fis a, r8 cis8
  
@@ -277,7 +291,8 @@ an invisible rest by using the special notename `@code{s}'.
 command `@code{\fermata}' is not part of the core of the language (most
 of the other discussed elements are), but it is a shorthand for a more
 complicated description of a fermata.  @code{\fermata} names that
-description and is therefore called an @emph{identifier}. @example 
+description and is therefore called an @emph{identifier}.
+@example 
 
         @}
  
@@ -417,7 +432,8 @@ accompaniment =\chords {
 }
 @end mudela
 
-Again, we will dissect the file line by line.@example 
+Again, we will dissect the file line by line.
+@example 
 
         \header @{
  
@@ -436,12 +452,14 @@ with a string.  (which is unquoted, in this case). Then comes the
 equal sign `@code{=}'.  After the equal sign comes the expression you
 want to store.  In this case, you want to put in strings.  The
 information has to be quoted here, because it contains spaces. The
-assignment is finished with a semicolon.@example 
+assignment is finished with a semicolon.
+@example 
 
         \include "paper16.ly"
  
 @end example 
-Smaller size for inclusion in a book.@example 
+Smaller size for inclusion in a book.
+@example 
 
         melody = \notes \relative c' @{
  
@@ -461,7 +479,6 @@ The piece starts with an anacrusis of one eighth.
 @end example
 The key is C minor: we have three flats.
 
-
 @example 
 
         c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
@@ -469,14 +486,17 @@ The key is C minor: we have three flats.
         \bar "|.";
  
 @end example 
+
 We use explicit beaming.  Since this is a song,  we will turn automatic
-beams off, and use explicit beaming where needed.@example 
+beams off, and use explicit beaming where needed.
+@example 
 
         @}
  
 @end example 
 This ends the definition of @code{melody}.  Note that there are no
-semicolons after assignments at top level.@example 
+semicolons after assignments at top level.
+@example 
 
         text = \lyrics @{
  
@@ -485,11 +505,12 @@ Another identifier assignment.  This one is for the lyrics.
 Lyrics are formed by syllables that have duration, and not by
 notes. To make LilyPond parse words as syllables,  switch it  into
 lyrics mode with @code{\lyrics}.  Again, the brace after @code{\lyrics}
-is a shorthand for @code{\sequential @{}. @example 
+is a shorthand for @code{\sequential @{}.
+@example 
 
-        The4 ri -- ver is flo- __ wing,  flo -- wing and gro -- wing, the
-        ri- ver is flo- __ wing down to the sea.
-        @}
+  The4 ri -- ver is flo- __ wing,  flo -- wing and gro -- wing, the
+  ri- ver is flo- __ wing down to the sea.
+@}
  
 @end example 
 The syllables  themselves are  separated by spaces.  You can get syllable
@@ -510,7 +531,8 @@ of the chords you want, instead of the notes comprising the chord.
         r8
  
 @end example 
-There is no accompaniment during the anacrusis.@example 
+There is no accompaniment during the anacrusis.
+@example 
 
         c2:3- f:3-.7
  
@@ -520,13 +542,15 @@ first one lasts a half note.  An unadorned note creates a major
 triad, while a minor triad is wanted.  @code{3-} modifies the third to
 be small. @code{7} modifies (adds) a seventh, which is small by default
 to create the @code{f a c es} chord.  Multiple modifiers must be
-separated by a dot.@example 
+separated by a dot.
+@example 
 
         d:min es4 c8:min r8
  
 @end example 
 Some modifiers have predefined names, eg. @code{min} is  the same as
-@code{3-}, so @code{d-min} is a minor @code{d} chord.@example 
+@code{3-}, so @code{d-min} is a minor @code{d} chord.
+@example 
 
         c2:min f:min7 g:7^3.5 c:min @}
  
@@ -535,7 +559,8 @@ A named modifier @code{min} and a normal modifier @code{7} do not have
 to be separated by a dot.  Tones from a chord are removed with chord
 subtractions.  Subtractions are started with a caret, and they are
 also separated by dots.  In this example, @code{g:7^3.5} produces a
-minor seventh.  The brace ends the sequential music. @example 
+minor seventh.  The brace ends the sequential music.
+@example 
 
         \score @{
                 \simultaneous @{
@@ -543,7 +568,8 @@ minor seventh.  The brace ends the sequential music. @example
 @end example 
 We assemble the music in the @code{\score} block.  Melody, lyrics and
 accompaniment have to sound at the same time, so they should be
-@code{\simultaneous}.@example 
+@code{\simultaneous}.
+@example 
 
         %\accompaniment
  
@@ -551,7 +577,8 @@ accompaniment have to sound at the same time, so they should be
 Chord mode generates notes grouped in @code{\simultaneous} music.  If
 you remove the comment sign, you can see the chords in normal
 notation: they will be printed as note heads on a separate
-staff. @example 
+staff.
+@example 
 
         \context ChordNames \accompaniment
  
@@ -575,7 +602,8 @@ two arguments.  The first is the name of a interpretation context.
 The name is a string, it can be quoted with double quotes).  The
 second argument is the music that should be interpreted in this
 context.  For the previous line, we could have written @code{\context
-Staff \accompaniment}, and get the same effect.@example 
+Staff \accompaniment}, and get the same effect.
+@example 
 
         \addlyrics
  
@@ -586,7 +614,8 @@ pieces of music (usually a melody and lyrics, in that order) and
 aligns the syllables of the second piece under the notes of the
 first piece.  If you would reverse the order, the notes would be
 aligned on the lyrics, which is not very useful. (Besides, it looks
-silly.)@example 
+silly.)
+@example 
 
         \context Staff = mel @{
  
@@ -596,7 +625,8 @@ This is the argument of @code{\addlyrics}.  We instantiate a
 before the ``note heads'' version of the accompaniment, the
 accompaniment will be on a nameless staff.  The melody has to be on a
 different staff as the accompaniment.  This is accomplished by giving
-the melody staff a different name.@example 
+the melody staff a different name.
+@example 
 
         \property Staff.noAutoBeaming = "1"
  
@@ -604,14 +634,16 @@ the melody staff a different name.@example
 An interpretation context has variables that tune its behaviour.  One
 of the variables is @code{noAutoBeaming}.  If set and non-zero (i.e.,
 true) LilyPond will not try to put automatic beaming on the current
-staff.@example 
+staff.
+@example 
 
         \property Staff.automaticMelismata = "1"
  
 @end example 
 Similarly, we  don't want to print a  syllable when there is
 a slur. This sets up the Staff context to signal slurs while
-@code{\addlyrics} is processed. @example 
+@code{\addlyrics} is processed.
+@example 
 
           \melody
         @}
@@ -620,7 +652,8 @@ a slur. This sets up the Staff context to signal slurs while
 Finally, we put the melody on the current staff.  Note that the
 @code{\property} directives and @code{\melody} are grouped in sequential
 music,  so the property settings are done before the melody is
-processed.  @example 
+processed.
+@example 
 
         \context Lyrics \text
  
@@ -628,12 +661,14 @@ processed.  @example
 The second argument of @code{\addlyrics} is the text. The text also
 should not land on a Staff, but on a interpretation context for
 syllables, extenders, hyphens etc.  This context is called
-Lyrics.@example 
+Lyrics.
+@example 
 
         @}
  
 @end example 
-This ends @code{\simultaneous}.@example 
+This ends @code{\simultaneous}.
+@example 
 
         \midi  @{ @}
  
@@ -642,13 +677,15 @@ This makes the music go to a MIDI file.  MIDI is great for
 checking music you enter.  You listen to the MIDI file: if you hear
 something unexpected, it's probably a typing error.  @code{\midi} is an
 `output definition', a declaration that specifies how to output music
-analogous to @code{\paper @{ @}}.@example 
+analogous to @code{\paper @{ @}}.
+@example 
 
         \paper @{ linewidth = 10.0\cm; @}
  
 @end example 
 We also want notation output.  The linewidth is short so the piece
-will be set in two lines. @example 
+will be set in two lines.
+@example 
 
         @}
  
@@ -725,7 +762,8 @@ bassvoices = \notes \relative c' {
 
 If it looks like incomprehensible gibberish to you@dots{} Then you are
 right.  The author has doctored this example to have as many quirks in
-one system as possible.@example 
+one system as possible.
+@example 
 viola = \notes \relative c'  \context Voice = viola @{ 
 @end example 
 In this example, you can see multiple parts on a staff.  Each part is
@@ -734,12 +772,14 @@ stems and dynamics (among others).  The name of this context is
 @code{Voice}.  For each part we have to make sure that there is
 precisely one Voice context@footnote{If @code{\context} would not
 have been specified explicitly, three @code{Voice} contexts would be
-created: one for each note  in the first chord.}.@example 
+created: one for each note  in the first chord.}.
+@example 
 <c4-\f g' c> 
 @end example 
 @code{<} and @code{>} are short hands for @code{\simultaneous @{} and
 @code{@}}. So the expression enclosed in @code{<} and @code{>} is a
-chord.  @code{\f} places a forte symbol  under the chord.@example 
+chord.  @code{\f} places a forte symbol  under the chord.
+@example 
 \property Voice.verticalDirection = \down 
 @end example 
 @code{verticalDirection} is a property of the voice context. It
@@ -747,7 +787,8 @@ controls the directions of stems, articulations marks and other
 symbols.
   If @code{verticalDirection} is set to @code{\down}
 (identifier for the integer -1) the stems go down,
-@code{\up} (identifier for the integer 1) makes the stems go up.@example 
+@code{\up} (identifier for the integer 1) makes the stems go up.
+@example 
         g'8. b,16 
 @end example 
 Relative octaves work a little differently with chords.  The starting
@@ -759,13 +800,15 @@ note of the previous chord (the central C).
 s1 s2. r4 
 @end example 
 @code{s} is a `spacer' rest.  It does not print anything,  but it does
-have the duration of a rest.   @example 
+have the duration of a rest.
+@example 
 oboes = \notes \relative c'' \context Voice = oboe @{ 
 @end example 
 Now comes a part for two oboes.  They play homophonically, so we
 print the notes as one voice that makes chords. Again, we insure that
 these notes are indeed processed by precisely one context with
-@code{\context}.@example 
+@code{\context}.
+@example 
 \stemup s4  g8. b,16 c8 r <e'8.-\p g> <f16 a> 
 @end example 
 @code{\stemup} is an identifier reference.  It is shorthand for
@@ -786,35 +829,41 @@ Tuplets are made with the @code{\times} keyword.  It takes two
 arguments: a fraction and a piece of music.  The duration of the
 second argument is multiplied by the first argument.  Triplets make
 notes occupy 2/3 of their notated duration, so in this case the
-fraction is 2/3. @example 
+fraction is 2/3.
+@example 
 @{ <d8 \< f> <e g> <f a> @} 
 @end example 
 The piece of music to be `tripletted' is sequential music containing
 three notes.  On the first chord (the @code{d}), a crescendo is started
-with @code{\<}.@example 
+with @code{\<}.
+@example 
 < 
 @end example 
 At this point, the homophonic music splits into two rhythmically
 different parts.  We can't use a sequence of chords to enter this, so
 we make a `chord' of sequences to do it.  We start with the upper
-voice, which continues with upward stems: @example 
+voice, which continues with upward stems:
+@example 
  @{ \times 2/3 @{ a8 g c @} \! c2 @} 
 @end example 
 The crescendo is ended at the half note by the escaped exclamation
-mark `@code{\!}'.  @example 
+mark `@code{\!}'.
+@example 
 \context Voice = oboeTwo @{
 \stemdown 
 @end example 
 We can't share stems with the other voice, so we have to create a new
 @code{Voice} context.  We give it the name @code{oboeTwo} to distinguish
-it from the other context.  Stems go down in this voice. @example 
+it from the other context.  Stems go down in this voice.
+@example 
 \grace @{  
 @end example 
 When a grace section is processed, a @code{Grace} context is
 created. This context acts like a miniature score of its own.  It has
 its own time bookkeeping, and you can make notes, beams, slurs
 etc. Here fiddle with a property and make a beam.  The argument of
-@code{\grace} is sequential music.@example 
+@code{\grace} is sequential music.
+@example 
 \property Grace.verticalDirection = \down
 [f,16 g] @} 
 @end example 
@@ -829,7 +878,8 @@ the @code{f}.
   f8 e e2
 @} > 
 @end example 
-This ends the two-part section. @example 
+This ends the two-part section.
+@example 
 \stemboth
 \grace <c,8( e> <)b8. d8.-\trill> <c16 e> |  
 @end example 
@@ -837,7 +887,8 @@ This ends the two-part section. @example
 positioned as if it were single part music.
 
 The bass has a little hoom-pah melody to demonstrate parts switching
-between staffs.  Since it is repetitive, we use identifiers:@example 
+between staffs.  Since it is repetitive, we use identifiers:
+@example 
 hoomPah  = \notes \transpose c' @{ 
 @end example 
 Transposing can be done with @code{\transpose}.  It takes two
@@ -852,7 +903,8 @@ mode will leave the contents of @code{\hoomPah} alone.  We can use it
 without having to worry about getting the motive in a wrong
 octave@footnote{@code{hoomPah = \relative @dots{}} would be more
 intuitive to use, but that would not let me plug @code{\transpose}
-:-).}.@example 
+:-).}.
+@example 
 c8 \translator Staff = top \stemdown  
 @end example 
 We assume that the first note will be put in the lower staff.  After
@@ -860,11 +912,13 @@ that note we switch to the upper staff with @code{\translator}.  To be
 precise, this @code{\translator} entry switches the current voice to a
 @code{Staff} named @code{top}. So we have to name the upper staff
 `@code{top}'.  Stem directions are set to avoid interfering with the
-oboe voices.  @example 
+oboe voices.
+@example 
 c'8 \translator Staff = bottom \stemup @} 
 @end example 
 Then a note is put on the upper staff, and we switch again.  We have
-to name the lower staff `@code{bottom}'. @example 
+to name the lower staff `@code{bottom}'.
+@example 
 hoomPahHoomPah = @{ [\hoomPah \hoomPah] @} 
 @end example 
 Put two of these fragments in sequence, and beam them.@example 
@@ -874,17 +928,21 @@ c4 g8. b,16
 \hoomPahHoomPah 
 @end example 
 Entering the bass part is easy: the hoomPahHoomPah variable is
-referenced four times.@example 
+referenced four times.
+@example 
 \context Voice = reallyLow  @{\stemdown g2 ~ | g4 c8 @} > 
 @end example 
-After skipping some lines, we see @code{~}.  This mark makes ties.@example 
+After skipping some lines, we see @code{~}.  This mark makes ties.
+@example 
 \context PianoStaff 
 @end example 
 For piano music, a special context is needed to get cross staff
-beaming right.  It is called @code{PianoStaff}.@example 
+beaming right.  It is called @code{PianoStaff}.
+@example 
 \context Staff = bottom < \time 2/2; \clef bass; 
 @end example 
-The bottom staff must have a different clef.@example 
+The bottom staff must have a different clef.
+@example 
 indent = 0.0; 
 @end example 
 To make some more room on the line, the first (in this case the only)
diff --git a/VERSION b/VERSION
index 059be63c20adbd426a768a7213825af7670ef6bc..11e6788b01bf45d7b5ada6baa796e5814327c9a9 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=41
-MY_PATCH_LEVEL=jcn4
+PATCH_LEVEL=42
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index 3e488a8f4f66b06d2b65bb93931053027c2d6bae..00a23fdb1948e6eda4edf0165dbc41aaa3425c29 100644 (file)
@@ -1,3 +1,5 @@
+dnl WARNING WARNING WARNING WARNING
+dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
 dnl aclocal.m4   -*-shell-script-*-
 dnl StepMake subroutines for configure.in
 
index 936bb54a6f0735193170a8b69f60b7d12fb3ab57..73a1a40990cdcacf1a7c26996bbace2978c5ec30 100644 (file)
@@ -677,3 +677,6 @@ gzip -f rpm
 gzip -f bash
 gzip -f cygpath
 
+
+
+
index 9a27b707610bfdbe9d8b5a12835d9319de00695f..a2f17f4bb3c0ae5e618438571d3d51bea4f977ab 100755 (executable)
--- a/configure
+++ b/configure
@@ -618,8 +618,16 @@ fi
     fi
     stepmake=`echo ${stepmake} | sed "s!\\\${prefix}!$presome!"`
 
+    # urg, how is this supposed to work?
+    if test "$program_prefix" = "NONE"; then
+         program_prefix=
+    fi
+    if test "$program_suffix" = "NONE"; then
+         program_suffix=
+    fi
+
     echo $ac_n "checking Package""... $ac_c" 1>&6
-echo "configure:623: checking Package" >&5
+echo "configure:631: checking Package" >&5
     if test "x$PACKAGE" = "xSTEPMAKE"; then
        echo "$ac_t""Stepmake package!" 1>&6
 
@@ -671,7 +679,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
        fi
 
        echo $ac_n "checking for stepmake""... $ac_c" 1>&6
-echo "configure:675: checking for stepmake" >&5
+echo "configure:683: checking for stepmake" >&5
        # Check for installed stepmake
        if test -d $stepmake; then
            echo "$ac_t""$stepmake" 1>&6
@@ -793,7 +801,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:797: checking host system type" >&5
+echo "configure:805: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -818,7 +826,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:822: checking for $ac_word" >&5
+echo "configure:830: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -853,7 +861,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:857: checking for $ac_word" >&5
+echo "configure:865: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -890,7 +898,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:894: checking for $ac_word" >&5
+echo "configure:902: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -925,7 +933,7 @@ test -n "$TAR" || TAR="error"
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:929: checking for $ac_word" >&5
+echo "configure:937: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -965,7 +973,7 @@ fi
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:969: checking for $ac_word" >&5
+echo "configure:977: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SHELL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1002,7 +1010,7 @@ fi
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1006: checking for $ac_word" >&5
+echo "configure:1014: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1043,7 +1051,7 @@ fi
     # Extract the first word of "${PYTHON:-python}", so it can be a program name with args.
 set dummy ${PYTHON:-python}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1047: checking for $ac_word" >&5
+echo "configure:1055: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1103,7 +1111,7 @@ fi
        LN=cp # hard link does not work under cygnus-nt
        LN_S='cp -r' # symbolic link does not work for native nt
        ZIP="zip -r -9" #
-       DOTEXE=.exe
+       program_suffix=.exe
        # urg
         # DIRSEP='\\'
        # PATHSEP=';'
@@ -1143,6 +1151,7 @@ fi
     
     
     
+    
     cat >> confdefs.h <<EOF
 #define DIRSEP '${DIRSEP}'
 EOF
@@ -1267,7 +1276,7 @@ EOF
     # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1271: checking for $ac_word" >&5
+echo "configure:1280: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1297,7 +1306,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1301: checking for $ac_word" >&5
+echo "configure:1310: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1348,7 +1357,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1352: checking for $ac_word" >&5
+echo "configure:1361: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1380,7 +1389,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1384: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1393: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1391,12 +1400,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 1395 "configure"
+#line 1404 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1422,12 +1431,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1426: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1435: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1431: checking whether we are using GNU C" >&5
+echo "configure:1440: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1436,7 +1445,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1440: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1449: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1455,7 +1464,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1459: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1468: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1527,7 +1536,7 @@ EOF
 fi
 
 echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:1531: checking how to run the C++ preprocessor" >&5
+echo "configure:1540: checking how to run the C++ preprocessor" >&5
 if test -z "$CXXCPP"; then
 if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1540,12 +1549,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
 cross_compiling=$ac_cv_prog_cxx_cross
   CXXCPP="${CXX-g++} -E"
   cat > conftest.$ac_ext <<EOF
-#line 1544 "configure"
+#line 1553 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1549: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1558: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1582,7 +1591,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1586: checking for $ac_word" >&5
+echo "configure:1595: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1614,7 +1623,7 @@ test -n "$CXX" || CXX="gcc"
 
 
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1618: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1627: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
 
 ac_ext=C
 # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1625,12 +1634,12 @@ cross_compiling=$ac_cv_prog_cxx_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 1629 "configure"
+#line 1638 "configure"
 #include "confdefs.h"
 
 int main(){return(0);}
 EOF
-if { (eval echo configure:1634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cxx_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1656,12 +1665,12 @@ if test $ac_cv_prog_cxx_works = no; then
   { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1660: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1669: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
 cross_compiling=$ac_cv_prog_cxx_cross
 
 echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1665: checking whether we are using GNU C++" >&5
+echo "configure:1674: checking whether we are using GNU C++" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1670,7 +1679,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1674: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1683: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gxx=yes
 else
   ac_cv_prog_gxx=no
@@ -1689,7 +1698,7 @@ ac_test_CXXFLAGS="${CXXFLAGS+set}"
 ac_save_CXXFLAGS="$CXXFLAGS"
 CXXFLAGS=
 echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1693: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1702: checking whether ${CXX-g++} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1723,17 +1732,17 @@ fi
 
     ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
-echo "configure:1727: checking for FlexLexer.h" >&5
+echo "configure:1736: checking for FlexLexer.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1732 "configure"
+#line 1741 "configure"
 #include "confdefs.h"
 #include <FlexLexer.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1784,12 +1793,12 @@ fi
 
 
     echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6
-echo "configure:1788: checking whether explicit instantiation is needed" >&5
+echo "configure:1797: checking whether explicit instantiation is needed" >&5
 if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1793 "configure"
+#line 1802 "configure"
 #include "confdefs.h"
 
     template <class T> struct foo { static int baz; };
@@ -1799,7 +1808,7 @@ int main() {
  return foo<int>::baz; 
 ; return 0; }
 EOF
-if { (eval echo configure:1803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lily_cv_need_explicit_instantiation=no
 else
@@ -1826,7 +1835,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1830: checking for $ac_word" >&5
+echo "configure:1839: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1869,7 +1878,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1873: checking for $ac_word" >&5
+echo "configure:1882: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1904,7 +1913,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1908: checking for $ac_word" >&5
+echo "configure:1917: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1972,7 +1981,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1976: checking for $ac_word" >&5
+echo "configure:1985: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2005,7 +2014,7 @@ test -n "$AR" || AR="error"
     # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2009: checking for $ac_word" >&5
+echo "configure:2018: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2061,7 +2070,7 @@ fi
 
 
     echo $ac_n "checking language""... $ac_c" 1>&6
-echo "configure:2065: checking language" >&5    
+echo "configure:2074: checking language" >&5    
     case "$language" in
       En* | en* | Am* | am* | US* | us*)
            lang=English;;
@@ -2097,7 +2106,7 @@ EOF
 
 
     echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:2101: checking for gettext in -lintl" >&5
+echo "configure:2110: checking for gettext in -lintl" >&5
 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2105,7 +2114,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2109 "configure"
+#line 2118 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -2119,7 +2128,7 @@ int main() {
 gettext()
 ; return 0; }
 EOF
-if { (eval echo configure:2123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2149,12 +2158,12 @@ fi
     for ac_func in gettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2153: checking for $ac_func" >&5
+echo "configure:2162: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2158 "configure"
+#line 2167 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2180,7 +2189,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2212,7 +2221,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2216: checking for $ac_word" >&5
+echo "configure:2225: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2243,7 +2252,7 @@ done
 test -n "$MSGFMT" || MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh "
 
     echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6
-echo "configure:2247: checking whether msgfmt accepts -o" >&5
+echo "configure:2256: checking whether msgfmt accepts -o" >&5
     msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`"
     if test "$msgfmt_output" = ""; then
        echo "$ac_t""yes" 1>&6
@@ -2271,7 +2280,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2275: checking for $ac_word" >&5
+echo "configure:2284: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_METAFONT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2307,7 +2316,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2311: checking for $ac_word" >&5
+echo "configure:2320: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MFONT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2345,7 +2354,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2349: checking for $ac_word" >&5
+echo "configure:2358: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_METAPOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2381,7 +2390,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2385: checking for $ac_word" >&5
+echo "configure:2394: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MPOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2420,7 +2429,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2424: checking for $ac_word" >&5
+echo "configure:2433: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INIMETAFONT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2456,7 +2465,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2460: checking for $ac_word" >&5
+echo "configure:2469: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INIMFONT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2494,7 +2503,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2498: checking for $ac_word" >&5
+echo "configure:2507: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INIMETAPOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2530,7 +2539,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2534: checking for $ac_word" >&5
+echo "configure:2543: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INIMPOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2564,7 +2573,7 @@ test -n "$INIMPOST" || INIMPOST="-echo no inimp or inimpost"
     fi
 
     echo $ac_n "checking for working metafont mode""... $ac_c" 1>&6
-echo "configure:2568: checking for working metafont mode" >&5
+echo "configure:2577: checking for working metafont mode" >&5
     modelist='ljfour lj4 lj3 lj2 ljet laserjet'
     for MFMODE in $modelist; do
        $METAFONT "\mode:=$MFMODE; mode_setup; end." > /dev/null 2>&1
@@ -2610,7 +2619,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2614: checking for $ac_word" >&5
+echo "configure:2623: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_KPSEWHICH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2641,7 +2650,7 @@ done
 test -n "$KPSEWHICH" || KPSEWHICH="no"
 
     echo $ac_n "checking for TeX TFM directory""... $ac_c" 1>&6
-echo "configure:2645: checking for TeX TFM directory" >&5
+echo "configure:2654: checking for TeX TFM directory" >&5
     if test "x$TFMDIR" = xauto ; then
        if test "x$TEX_TFMDIR" = "x" ; then
            if test "x$KPSEWHICH" != "xno" ; then
@@ -2662,13 +2671,13 @@ echo "configure:2645: checking for TeX TFM directory" >&5
 
     ## First, let's just see if we can find Guile at all.
     echo $ac_n "checking "for guile-config"""... $ac_c" 1>&6
-echo "configure:2666: checking "for guile-config"" >&5
+echo "configure:2675: checking "for guile-config"" >&5
     for guile_config in guile-config $target-guile-config $build-guile-config; do
        echo "$ac_t"""$guile_config"" 1>&6
        if ! $guile_config --version > /dev/null 2>&1 ; then
            echo "configure: warning: "cannot execute $guile_config"" 1>&2
            echo $ac_n "checking "if we are cross compiling"""... $ac_c" 1>&6
-echo "configure:2672: checking "if we are cross compiling"" >&5
+echo "configure:2681: checking "if we are cross compiling"" >&5
            guile_config=error
        else
            break
@@ -2679,7 +2688,7 @@ echo "configure:2672: checking "if we are cross compiling"" >&5
        exit 1
     fi
     echo $ac_n "checking "Guile version"""... $ac_c" 1>&6
-echo "configure:2683: checking "Guile version"" >&5
+echo "configure:2692: checking "Guile version"" >&5
     need_guile_version="1.3.4"
     guile_version=`expr "\`$guile_config --version 2>&1\`" : ".*\($need_guile_version\).*"`
     echo "$ac_t"""$guile_version"" 1>&6
@@ -2692,7 +2701,7 @@ echo "configure:2683: checking "Guile version"" >&5
     
 ## The GUILE_FLAGS macro.
   echo $ac_n "checking for Guile""... $ac_c" 1>&6
-echo "configure:2696: checking for Guile" >&5
+echo "configure:2705: checking for Guile" >&5
   if ! $guile_config link > /dev/null ; then
       echo "$ac_t"""cannot execute $guile_config"" 1>&6
       { echo "configure: error: "cannot find guile-config; is Guile installed?"" 1>&2; exit 1; }
@@ -2707,7 +2716,7 @@ echo "configure:2696: checking for Guile" >&5
     # Extract the first word of "guile", so it can be a program name with args.
 set dummy guile; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2711: checking for $ac_word" >&5
+echo "configure:2720: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GUILE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2745,7 +2754,7 @@ fi
 
 
 echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:2749: checking for 8-bit clean memcmp" >&5
+echo "configure:2758: checking for 8-bit clean memcmp" >&5
 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2753,7 +2762,7 @@ else
   ac_cv_func_memcmp_clean=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 2757 "configure"
+#line 2766 "configure"
 #include "confdefs.h"
 #ifdef __cplusplus
 extern "C" void exit(int);
@@ -2766,7 +2775,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:2770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_memcmp_clean=yes
 else
@@ -2784,12 +2793,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
 
 echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:2788: checking for vprintf" >&5
+echo "configure:2797: checking for vprintf" >&5
 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2793 "configure"
+#line 2802 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -2815,7 +2824,7 @@ vprintf();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_vprintf=yes"
 else
@@ -2839,12 +2848,12 @@ fi
 
 if test "$ac_cv_func_vprintf" != yes; then
 echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:2843: checking for _doprnt" >&5
+echo "configure:2852: checking for _doprnt" >&5
 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2848 "configure"
+#line 2857 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -2870,7 +2879,7 @@ _doprnt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__doprnt=yes"
 else
@@ -2897,12 +2906,12 @@ fi
 for ac_func in memmem snprintf vsnprintf gettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2901: checking for $ac_func" >&5
+echo "configure:2910: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2906 "configure"
+#line 2915 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2928,7 +2937,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2932: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2967,7 +2976,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2971: checking for $ac_word" >&5
+echo "configure:2980: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3000,7 +3009,7 @@ test -n "$MAKEINFO" || MAKEINFO="error"
 # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3004: checking for $ac_word" >&5
+echo "configure:3013: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3187,7 +3196,8 @@ s%@FIND@%$FIND%g
 s%@TAR@%$TAR%g
 s%@BASH@%$BASH%g
 s%@PYTHON@%$PYTHON%g
-s%@DOTEXE@%$DOTEXE%g
+s%@program_prefix@%$program_prefix%g
+s%@program_suffix@%$program_suffix%g
 s%@ZIP@%$ZIP%g
 s%@LN@%$LN%g
 s%@LN_S@%$LN_S%g
index 293e0963b915a1d87f9561d249d32b89459def33..e2a8301b10341e1bbea99656cbae03976b6ae0b9 100644 (file)
@@ -1,3 +1,20 @@
+lilypond1.3 (1.3.41-1) frozen unstable; urgency=low
+
+  * New upstream development release.
+  * [debian/postinst]: Fixed the pathname to README.Debian.  Thanks to
+      Olivier Abad for the bug report (closes: Bug#58674).
+  * [debian/rules]: Now configure with --enable-optimise again.
+      Yes, it appears that LilyPond and glibc2.1.3 finally get along
+      nicely even with optimisation turned on.  Hurray!  :-)
+  * [Documentation/user/*]: Fixed some formatting bugs in the texinfo files.
+  * [debian/control]: Modified description to hint that 1.3.41 is better
+      than 1.2.17.  :-)
+  * [debian/{rules,emacsen-startup}]: Added an Emacs startup file
+      /etc/emacs/site-start.d/50lilypond1.3.el so that lilypond-mode is
+      automatically loaded for *.ly files.
+
+ -- Anthony Fok <foka@debian.org>  Sat,  1 Apr 2000 03:49:31 -0700
+
 lilypond1.3 (1.3.24-1) frozen unstable; urgency=low
 
   * New upstream development release with lots of bug fixes.  :-)
index 12d811e7909c809c2a5e07b31f8d390d765c336c..9a9f184e8cc889d019e1e8816965f9c52c99b2d7 100644 (file)
@@ -3,7 +3,7 @@ Build-Depends: debhelper (>= 2.0.71), python-base (>= 1.5.2-4), libguile6-dev, t
 Section: tex
 Priority: optional
 Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.1.0
+Standards-Version: 3.1.1
 
 Package: lilypond1.3
 Architecture: any
@@ -17,8 +17,9 @@ Description: A program for printing sheet music.
  using a high level description file as input.  LilyPond is part of 
  the GNU Project.
  .
- This is the unstable 1.3 branch of LilyPond.  It is not intended for
- use with stable projects!
+ This is the developmental 1.3 branch of LilyPond.  It is not intended for
+ use with stable projects, although arguably 1.3.41 is less buggy and much
+ more featureful than then the "stable" 1.2.17.
  .
   URLs: http://www.cs.uu.nl/~hanwen/lilypond/
         http://www.xs4all.nl/~jantien/lilypond/
index 743e63c34dda40f4eefeba917354ebaadfcbbb2e..50a67b39dc8ccce2b6330cefdf91085e134b1170 100644 (file)
@@ -5,10 +5,10 @@ The development branch, lilypond1.3, is packaged separately
 on Tue,  9 Nov 1999 22:30:32 -0700
 
 It was downloaded from
-      ftp://ftp.lilypond.org/pub/LilyPond/v1.3/lilypond-1.3.24.tar.gz
+      ftp://ftp.lilypond.org/pub/LilyPond/v1.3/lilypond-1.3.41.tar.gz
 
 It is also available at: 
-      ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/v1.3/lilypond-1.3.24.tar.gz
+      ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/v1.3/lilypond-1.3.41.tar.gz
 
 For more information about GNU LilyPond, please visit:
       http://www.cs.uu.nl/~hanwen/lilypond/
index 12d811e7909c809c2a5e07b31f8d390d765c336c..9a9f184e8cc889d019e1e8816965f9c52c99b2d7 100644 (file)
@@ -3,7 +3,7 @@ Build-Depends: debhelper (>= 2.0.71), python-base (>= 1.5.2-4), libguile6-dev, t
 Section: tex
 Priority: optional
 Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.1.0
+Standards-Version: 3.1.1
 
 Package: lilypond1.3
 Architecture: any
@@ -17,8 +17,9 @@ Description: A program for printing sheet music.
  using a high level description file as input.  LilyPond is part of 
  the GNU Project.
  .
- This is the unstable 1.3 branch of LilyPond.  It is not intended for
- use with stable projects!
+ This is the developmental 1.3 branch of LilyPond.  It is not intended for
+ use with stable projects, although arguably 1.3.41 is less buggy and much
+ more featureful than then the "stable" 1.2.17.
  .
   URLs: http://www.cs.uu.nl/~hanwen/lilypond/
         http://www.xs4all.nl/~jantien/lilypond/
index 8f096b4772d0e02975c4f80907fd6ec19a1cc9be..bf2f6503d0f7c11d2fbc157efd0923b473784ad4 100755 (executable)
@@ -3,7 +3,7 @@
 # postinst script for the Debian GNU/Linux lilypond package
 #   by Anthony Fok <foka@debian.org>
 #   Initial release:  Sun, 26 Oct 1997 03:23:00 -0700
-#     Last modified:  Wed,  7 Jul 1999 19:36:36 -0600
+#     Last modified:  Sun, 26 Mar 2000 02:18:41 -0700
 
 set -e
 
@@ -26,4 +26,4 @@ install-info --description='LilyPond, the GNU Project music typesetter' \
 
 echo
 echo " $pkg_name configuration completed."
-echo " Please read /usr/doc/$package/README.Debian to get started."
+echo " Please read /usr/share/doc/lilypond1.3/README.Debian to get started."
index a1f112f953a9b2b72f8b6eddce633a29633241c3..d024ca3783d42ba2154b4f7c6214760b7c3551ec 100755 (executable)
@@ -26,13 +26,12 @@ build-stamp:
        dh_testdir
 
        ./configure --disable-checking --disable-debugging \
-               --enable-printing --prefix=/usr --disable-optimise \
+               --enable-printing --prefix=/usr --enable-optimise \
                --enable-shared \
                --infodir='$${prefix}/share/info' \
                --mandir='$${prefix}/share/man'
        $(MAKE) all
        $(MAKE) -C Documentation
-#      $(MAKE) -C Documentation/programmer ps
        $(MAKE) -C Documentation/user ps
        $(MAKE) -C Documentation/pictures pngs
 
@@ -56,8 +55,8 @@ install: build
        dh_testroot
        dh_clean -k
        dh_installdirs usr/share/doc/texmf \
-               usr/share/emacs/site-lisp \
                $(d)/examples \
+               usr/share/emacs/site-lisp \
                usr/share/texmf/tex \
                usr/share/texmf/fonts/source/public \
                usr/share/texmf/fonts/afm/public \
@@ -78,22 +77,22 @@ binary-indep: build install
 binary-arch: build install
        dh_testdir
        dh_testroot
-       cp -av lilypond-mode.el $(r)/usr/share/emacs/site-lisp
+       cp -av lilypond-mode.el $(r)/usr/share/emacs/site-lisp/
        dh_installdocs DEDICATION TODO *.txt \
                Documentation/pictures/out/*.png \
                Documentation/out/*.txt \
                Documentation/*/out/[a-z]*.dvi \
                Documentation/*/out/*.ps
        mkdir $(r)/$(d)/bibliography $(r)/$(d)/misc
-       cp -a Documentation/bibliography/*.bib $(r)/$(d)/bibliography
-       cp -a Documentation/misc/[ACN]* $(r)/$(d)/misc
+       cp -a Documentation/bibliography/*.bib $(r)/$(d)/bibliography/
+       cp -a Documentation/misc/[ACN]* $(r)/$(d)/misc/
 #      dh_installexamples input
        cp -aP `find input mutopia \( -name '*.*ly' -o -name '*.abc' -o -name '*.tex' -o -name 'TODO' \)` \
                $(r)/$(d)/examples
        for i in `find $(r)/$(d)/examples/ -type d -name out`; do \
                mv -fv $$i/* $$i/..; rmdir $$i; done
 #      dh_installmenu
-#      dh_installemacsen
+       dh_installemacsen
 #      dh_installcron
 #      dh_installmanpages
 #      dh_undocumented
index 455a2c6e423bb189320f7cbcacca0a085d3e87e7..1e2ec60b600b2ad762b5ac65abd802a645e3c6cf 100644 (file)
@@ -15,7 +15,9 @@ linewidth=-1.0;
 \translator { \ScoreContext
        %textVerticalAlignment = #0
        }
-\translator { \StaffContext \consists "Staff_margin_engraver"; }
-\translator { \PianoStaffContext \consists "Staff_margin_engraver"; }
+%\translator { \StaffContext \consists "Staff_margin_engraver"; }
+%\translator { \PianoStaffContext \consists "Staff_margin_engraver"; }
+\translator { \StaffContext \consists "New_staff_margin_engraver"; }
+\translator { \PianoStaffContext \consists "New_staff_margin_engraver"; }
 }}
 
index df076684cb5b52a28b80679ff388644e229565d2..c36178ee77dabc1fc65759f7c1da9828988acb68 100644 (file)
@@ -4,14 +4,14 @@
 \score {
        \context StaffGroup <
                \context Staff=upper \notes\relative c{
-                       \key F;
+                       \key f;
                        \time 3/4;
                        r8^"Moderato" %\pp 
                        <g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.> |
                        r8 <as-. c-.> <c-. es-.>
                }
                \context Staff=lower \notes\relative c{
-                       \key F;
+                       \key f;
                        \time 3/4;
                        \clef "bass";
                        <c,2 c'> r4 
index 831c12ce217d4c2e52ca53c924348001f8468b7f..5a53e73286041e418099f4488ac9f079c53ac653 100644 (file)
@@ -16,7 +16,7 @@ instrument=   "Violoncello";
        \notes
          \relative c{
                \clef "bass";
-               \key D;
+               \key d;
                <a2\ppp\cr d> <gis\rc\p\decr d'> | <a2\rced d> ~ <a8 d> r8 r4 |
                a2\ppp\cr a2\rc\p\decr | <a2\rced d> ~ <a8 d> r8 r4 |
                a2\pppp ~ a8 r8 r4 | a2\ppppp ~ a8 r8 r4 | r4 a8_"pizz"
@@ -32,7 +32,7 @@ instrument=   "Violoncello";
        \notes
        \relative c{
                \clef "bass";
-               \key C;
+               \key c;
                <e1\sff cis'^\downbow> | <cis\sff a'^\downbow> | 
                <d,\ffff\decr g> ~ <d2 g> ~ <d8\p\rced g> |
        }
index 0a74e2feffe30a8c63de9b5b77a1ce9ace0a1ce5..64384ec1c2fdc35bc910f50551d5e207c7b677de 100644 (file)
@@ -21,10 +21,10 @@ tenor = \notes \relative c' {
 
 \score {
        \context PianoStaff \notes <
-               \context Staff = top { \key D; \time 4/4;
+               \context Staff = top { \key d; \time 4/4;
                        \soprano
                }
-               \context Staff = bottom < \key D; \time 4/4; \clef bass;
+               \context Staff = bottom < \key d; \time 4/4; \clef bass;
                        \context Voice = up  { \tenor } 
                        \context Voice = down  { \bass }
                >
index 690814750457513b376dffefeb9c669c7fef1c3d..9d5a00abf52c975cbc657d7299738e7f361fd8ac 100644 (file)
@@ -30,6 +30,21 @@ Align_interface::alignment_callback (Dimension_cache const *c)
   return 0.0;
 }
 
+
+Real
+Align_interface::center_on_element (Dimension_cache const *c)
+{
+  Score_element *me = c->element_l ();
+  Score_element *cent = unsmob_element (me->get_elt_property ("group-center-element"));
+
+  if (cent)
+    {
+      Real r = cent->relative_coordinate (me,  c->axis ());
+      return -r;
+    }
+  return 0;
+}
+
 /*
   Hairy function to put elements where they should be. Can be tweaked
   from the outside by setting minimum-space and extra-space in its
index 8cdb9ef67a2f7892d253b5bd50087be9114cb119..c22bbeedb0e31d5a56437ffd77a10f31c7ba6dda 100644 (file)
@@ -48,26 +48,38 @@ Axis_group_interface::axis_b (Axis a )const
   return elt_l_->dim_cache_[a]->extent_callback_l_ == group_extent_callback;
 }
 
+Interval
+Axis_group_interface::relative_group_extent (Axis a, Score_element *common, SCM elts)
+{
+  Interval r;
+  for (SCM s = elts; gh_pair_p (s); s = gh_cdr (s))
+    {
+      Score_element * se = unsmob_element (gh_car (s));
+      Interval dims = se->extent (a);
+      if (!dims.empty_b ())
+       r.unite (dims + se->relative_coordinate (common, a));
+    }
+  return r;
+}
+
 Interval
 Axis_group_interface::group_extent_callback (Dimension_cache const *c) 
 {
   Axis a = c->axis ();
   Score_element * me = c->element_l ();
+  Score_element * common = me;
 
-  Interval r;
   for (SCM s = me->get_elt_property ("elements"); gh_pair_p (s); s = gh_cdr (s))
     {
-      SCM e=gh_car (s); 
-      Score_element * se = SMOB_TO_TYPE (Score_element, e);
-
-      Interval dims = se->extent (a);
-      if (!dims.empty_b ())
-       r.unite (dims + se->relative_coordinate (me, a));
+      Score_element * se = unsmob_element (gh_car (s));
+      common = se->common_refpoint (common, a);
     }
 
-  return r;
-}
+  Real my_coord = me->relative_coordinate (common, a);
+  Interval r (relative_group_extent (a, common, me->get_elt_property ("elements")));
 
+  return r - my_coord;
+}
 
 void
 Axis_group_interface::set_interface ()
@@ -75,7 +87,7 @@ Axis_group_interface::set_interface ()
   if (!has_interface_b ())
     {
       elt_l_->set_elt_property ("elements", SCM_EOL);
-      elt_l_->set_elt_property ("transparent", SCM_BOOL_T);
+      elt_l_->set_elt_property ("transparent", SCM_BOOL_T); //  junk this?
       elt_l_->set_elt_property ("axes" , SCM_EOL);
       group (elt_l_, "interfaces").add_thing (ly_symbol2scm ("Axis_group"));
     }
index c138d6c3c304bfba895df69bb8c877e915938430..c14198a0d25fc49bcb991616b7d0be93273d93c8 100644 (file)
@@ -29,7 +29,7 @@ Bar_engraver::create_bar ()
   if (!bar_p_)
     {
       bar_p_ = new Staff_bar;
-      bar_p_->set_elt_property ("break-aligned", SCM_BOOL_T);
+      bar_p_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Staff_bar"));
 
       // urg: "" != empty...
       SCM default_type = get_property ("defaultBarType");
index bdb41250ff60bd371122f23165b44761988e840c..299c5e9b3d073124c3727e4d7ab45e701ead1400 100644 (file)
@@ -39,41 +39,12 @@ Bar::do_brew_molecule () const
   if (gh_string_p (s))
     {
       String str  =ly_scm2string (s);
-      if (str == "bracket")
-       return staff_bracket (get_bar_size ());
-      else if  (str == "brace")
-       return staff_brace (get_bar_size ());
-      else
-       return compound_barline (str, get_bar_size ());
+      return compound_barline (str, get_bar_size ());
     }
   return Molecule ();
 }
 
 
-Molecule
-Bar::staff_bracket (Real height) const 
-{
-  Paper_def* p= paper_l ();
-  Real arc_height = p->get_var("bracket_arch_height");
-  SCM at = gh_list (ly_symbol2scm ("bracket"),
-                   gh_double2scm (p->get_var("bracket_arch_angle")),
-                   gh_double2scm (p->get_var("bracket_arch_width")),
-                   gh_double2scm (arc_height),
-                   gh_double2scm (p->get_var("bracket_width")),
-                   gh_double2scm (height),
-                   gh_double2scm (p->get_var("bracket_arch_thick")),
-                   gh_double2scm (p->get_var("bracket_thick")),
-                   SCM_UNDEFINED);
-
-  Real staff_space = p->get_var ("interline");
-  Real h = height + 2 * arc_height;
-  Box b (Interval (0, 1.5 * staff_space), Interval (-h/2, h/2));
-  Molecule mol (b, at);
-  
-  mol.translate_axis (- mol.dim_[X_AXIS].length () / 2, X_AXIS);
-  return mol;
-}
-
 Molecule
 Bar::compound_barline (String str, Real h) const
 {
@@ -122,21 +93,10 @@ Bar::compound_barline (String str, Real h) const
     }
   else if (str == ":|:")
     {
-//        m.add_at_edge (X_AXIS, LEFT, thick, thinkern);
-//        m.add_at_edge (X_AXIS, LEFT, colon, kern);      
-//        m.add_at_edge (X_AXIS, RIGHT, thick, kern);
-//        m.add_at_edge (X_AXIS, RIGHT, colon, kern);      
-      m.add_at_edge (X_AXIS, RIGHT, thick, 0);
-      m.add_at_edge (X_AXIS, RIGHT, thin, kern);
-      m.add_at_edge (X_AXIS, RIGHT, colon, kern);      
-      m.add_at_edge (X_AXIS, LEFT, thin, kern);
+      m.add_at_edge (X_AXIS, LEFT, thick, thinkern);
       m.add_at_edge (X_AXIS, LEFT, colon, kern);      
-    }
-  else if (str == ";|;")
-    {
-      m.add_at_edge (X_AXIS, RIGHT, thick, 0);
-      m.add_at_edge (X_AXIS, RIGHT, thin, kern);
-      m.add_at_edge (X_AXIS, LEFT, thin, kern);
+      m.add_at_edge (X_AXIS, RIGHT, thick, kern);
+      m.add_at_edge (X_AXIS, RIGHT, colon, kern);      
     }
   else if (str == ".|.")
     {
@@ -152,40 +112,6 @@ Bar::compound_barline (String str, Real h) const
   return m;
 }
 
-/*
-  ugh. Suck me plenty.
- */
-Molecule
-Bar::staff_brace (Real y)  const
-{
-  Real staffht  = paper_l ()->get_var ("staffheight");
-  int staff_size  = int (rint (staffht ));
-
-  // URG
-  Real step  = 1.0;
-  int minht  = 2 * staff_size;
-  int maxht = 7 *  minht;
-  int idx = int (((maxht - step) <? y - minht) / step);
-  idx = idx >? 0;
-
-  SCM l = scm_eval (gh_list (ly_symbol2scm ("style-to-cmr"),
-                           ly_str02scm ("brace"),
-                           SCM_UNDEFINED));
-  
-  String nm = "feta-braces";
-  if (l != SCM_BOOL_F)
-    nm = ly_scm2string (gh_cdr (l));
-  nm += to_str (staff_size);
-  SCM e =gh_list (ly_symbol2scm ("char"), gh_int2scm (idx), SCM_UNDEFINED);
-  SCM at = (e);
-
-  at = fontify_atom (all_fonts_global_p->find_font (nm), at);
-  
-  Box b (Interval (0,0), Interval (-y/2, y/2));
-
-  return Molecule(b, at);
-}
-  
 
 Molecule
 Bar::simple_barline (Real w, Real h) const
diff --git a/lily/base-span-bar-engraver.cc b/lily/base-span-bar-engraver.cc
deleted file mode 100644 (file)
index 3993776..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-  span-bar-grav.cc -- implement Base_span_bar_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "dimension-cache.hh"
-#include "lily-guile.hh"
-#include "span-bar.hh"
-#include "base-span-bar-engraver.hh"
-
-Base_span_bar_engraver::Base_span_bar_engraver()
-{
-  spanbar_p_ =0;
-  use_priority_b_ = true;
-}
-
-Span_bar*
-Base_span_bar_engraver::get_span_bar_p() const
-{
-  return new Span_bar;
-}
-
-
-void
-Base_span_bar_engraver::acknowledge_element (Score_element_info i)
-{
-  int depth = i.origin_trans_l_arr (this).size();
-  if (depth > 1
-      && dynamic_cast<Bar *> (i.elem_l_)) 
-    {
-      bar_l_arr_.push (dynamic_cast<Bar *> (i.elem_l_));
-
-      if (bar_l_arr_.size() >= 2 && !spanbar_p_) 
-       /*
-         hmm, i do want a bracket with one staff some times, but not always
-         if (bar_l_arr_.size() >= 1 && !spanbar_p_)
-
-         --jcn
-       */
-
-       /*
-
-         use a property?  get_property ("singleStaffBracket"); ?
-
-         --hwn
-        */
-       {
-         spanbar_p_ = get_span_bar_p();
-         spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS);
-
-         /*
-           UGH. UGH UUHGK GUHG G
-          */
-         String visnam =  String(name()) + "-visibility";
-
-         spanbar_p_->set_elt_property ("visibility-lambda",
-                                       scm_eval (ly_symbol2scm (visnam.ch_C())));
-
-         if (use_priority_b_)
-           {
-             spanbar_p_->set_elt_property ("break-aligned", SCM_BOOL_T);
-           }
-         else
-           {
-             spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS);
-           }
-         
-         announce_element (Score_element_info (spanbar_p_,0));
-         if (!gh_string_p (spanbar_p_->get_elt_property ("glyph")))
-           spanbar_p_-> set_elt_property ("glyph",
-                                          bar_l_arr_[0]->get_elt_property ("glyph"));
-       }
-    }
-}
-
-void
-Base_span_bar_engraver::do_pre_move_processing()
-{
-  if (spanbar_p_) 
-    {
-      for (int i=0; i < bar_l_arr_.size() ; i++)
-       spanbar_p_->add_bar (bar_l_arr_[i]);
-      typeset_element (spanbar_p_);
-      spanbar_p_ =0;
-    }
-  bar_l_arr_.set_size (0);
-}
-
-
-
-ADD_THIS_TRANSLATOR(Base_span_bar_engraver);
-
index ec8495d9baf17ce207d23488b822cd07a906b1cb..24900b3f8132b9e9c37e9b7a2b29500f3923aee6 100644 (file)
@@ -11,6 +11,7 @@
 #include "break-align-item.hh"
 #include "align-interface.hh"
 #include "axis-group-interface.hh"
+#include "dimension-cache.hh"
 
 class Break_align_engraver : public Engraver
 {
@@ -88,20 +89,36 @@ Break_align_engraver::acknowledge_element (Score_element_info inf)
       if (!breakable)
        return ;
 
-      SCM al = item_l->remove_elt_property ("break-aligned");
-      if (!gh_boolean_p (al ) || !gh_scm2bool (al))
+      SCM align_name = item_l->remove_elt_property ("break-align-symbol");
+      if (!gh_symbol_p (align_name))
        return ;
 
-      
       if (!align_l_)
        {
          align_l_ = new Break_align_item;
          align_l_->set_elt_property ("breakable", SCM_BOOL_T);
          announce_element (Score_element_info (align_l_,0));
+
+
+         Item * edge = new Item;
+         SCM edge_sym =   ly_symbol2scm ("Left_edge_item");
+         edge->set_elt_property ("break-align-symbol", edge_sym);
+
+         /*
+           If the element is empty, it will be ignored in the break
+           alignment stuff.
+
+           TODO: switch off ignoring empty stuff?
+         */
+         edge->dim_cache_[X_AXIS]->set_extent_callback (Dimension_cache::point_dimension_callback);
+         
+         align_l_->set_elt_property ("group-center-element", edge->self_scm_);
+
+         announce_element (Score_element_info(edge, 0));
+         column_alist_ = scm_assoc_set_x (column_alist_, edge_sym, edge->self_scm_);
        }
 
-      SCM name = ly_str02scm (inf.elem_l_->name());
-      SCM s = scm_assoc (name, column_alist_);
+      SCM s = scm_assoc (align_name, column_alist_);
 
       Item * group = 0;
 
@@ -117,10 +134,10 @@ Break_align_engraver::acknowledge_element (Score_element_info inf)
          Axis_group_interface (group).set_interface ();
          Axis_group_interface (group).set_axes (X_AXIS,X_AXIS);
 
-         group->set_elt_property ("origin", name);
+         group->set_elt_property ("break-align-symbol", align_name);
          group->set_parent (align_l_, Y_AXIS);
          announce_element (Score_element_info (group, 0));
-         column_alist_ = scm_assoc_set_x (column_alist_, name, group->self_scm_);
+         column_alist_ = scm_assoc_set_x (column_alist_, align_name, group->self_scm_);
        }
       Axis_group_interface (group).add_element (item_l);
     }
index ebaf7f3aee71632a62164ca6e305b7250ffc63b2..74fc20e399882e4e12906a1fd1d1d9819e4ea7b6 100644 (file)
 void
 Break_align_item::before_line_breaking ()
 {
-  Direction ad = (break_status_dir() == LEFT) ? RIGHT : LEFT;
-  Real interline= paper_l ()->get_var ("interline");   
-
-  set_elt_property ("self-alignment-X", gh_int2scm (ad));
+  if (break_status_dir() == LEFT)
+    {
+      set_elt_property ("self-alignment-X", gh_int2scm (RIGHT));
+    }
+  else
+    {
+      add_offset_callback (Align_interface::center_on_element, X_AXIS);
+    }
+  
 
 
+  Real interline= paper_l ()->get_var ("interline");   
   Link_array<Score_element> elems;
   Link_array<Score_element> all_elems
     = Group_interface__extract_elements (this, (Score_element*)0,
@@ -45,7 +51,7 @@ Break_align_item::before_line_breaking ()
 
   SCM symbol_list = SCM_EOL;
   Array<Real> dists;
-  SCM current_origin = ly_str02scm ("");
+  SCM current_origin = ly_symbol2scm ("none");
   for (int i=0; i <= elems.size (); i++)
     {
       Score_element *next_elt  = i < elems.size ()
@@ -56,18 +62,20 @@ Break_align_item::before_line_breaking ()
 
       if (next_elt)
        {
-         next_origin = next_elt->get_elt_property ("origin");
+         next_origin = next_elt->get_elt_property ("break-align-symbol");
          next_origin =
            (next_origin == SCM_UNDEFINED)
-           ? ly_str02scm ("")
+           ? ly_symbol2scm ("none")
            : next_origin;
        }
       else
-       next_origin = ly_str02scm ("begin-of-note");
+       next_origin = ly_symbol2scm ("begin-of-note");
       
       SCM extra_space
        = scm_eval (scm_listify (ly_symbol2scm ("break-align-spacer"),
-                                current_origin, next_origin, SCM_UNDEFINED)); 
+                                ly_quote_scm (current_origin),
+                                ly_quote_scm (next_origin),
+                                SCM_UNDEFINED));
       SCM symbol = gh_car  (extra_space);
       Real spc = gh_scm2double (SCM_CADR(extra_space));
       spc *= interline;
@@ -137,7 +145,6 @@ Break_align_item::before_line_breaking ()
   /*
     Hint the spacing engine how much space to put in.
 
-
     The pairs are in the format of an interval (ie. CAR <  CDR).
   */
   column_l ()->set_elt_property ("extra-space",
index afa950d618bbd159bf38e1e0838c967c9a2ab2b0..2508bb83902d5a4be99846f7459f6246a515b589 100644 (file)
@@ -47,7 +47,8 @@ Breathing_sign_engraver::do_process_music()
   if(breathing_sign_req_l_)
     {
       breathing_sign_p_ = new Breathing_sign;
-      breathing_sign_p_->set_elt_property ("break-aligned", SCM_BOOL_T);
+      breathing_sign_p_->set_elt_property ("break-align-symbol",
+                                          ly_symbol2scm ("Breathing_sign"));
       Staff_symbol_referencer_interface st (breathing_sign_p_);
       st.set_interface ();
 
index 041e3410f5c1ad04014148fe3d2cc992d496648e..bfd3c54f5a2a565b046fa92c31447b948453a383 100644 (file)
@@ -164,7 +164,7 @@ Clef_engraver::create_clef()
     {
       Clef_item *c= new Clef_item;
       c->set_elt_property ("breakable", SCM_BOOL_T);
-      c->set_elt_property ("break-aligned", SCM_BOOL_T);
+      c->set_elt_property ("break-align-symbol", ly_symbol2scm ("Clef_item"));
       announce_element (Score_element_info (c, clef_req_l_));
 
       Staff_symbol_referencer_interface si(c);
index 0809620234a3ca9b1b0886175ccb44bd1169f19f..ad9d51f8761de368e5442a93661020b9a1d1f9ee 100644 (file)
@@ -46,6 +46,7 @@ struct Align_interface  {
   int get_count (Score_element*)const;
   void set_interface ();
   bool has_interface_b ();
+  static Real center_on_element (Dimension_cache const *c);
 };
 
 #endif /* ALIGN_INTERFACE_HH */
index f1382da9be632585cfbe3c43a03e8f96ec29a8b7..7bacbf8ac394150f638dd867fa664f49d5d3e262 100644 (file)
@@ -32,6 +32,7 @@ struct Axis_group_interface
   Axis_group_interface (Score_element*);
 
   static Interval group_extent_callback (Dimension_cache const*);
+  static Interval relative_group_extent (Axis, Score_element * common, SCM list);
 
   void add_element (Score_element*);
   void set_axes (Axis,Axis);
@@ -39,6 +40,7 @@ struct Axis_group_interface
   Link_array<Score_element> get_children ();
   bool has_interface_b ();
   void set_interface ();
+  
 };
 
 #endif /* AXIS_GROUP_INTERFACE_HH */
index 994f04b5006b7b7c5394329801e0b61509a28167..aa429c89bb0523cba6bd8dc82bbb6823f4750f55 100644 (file)
@@ -16,8 +16,6 @@ public:
   VIRTUAL_COPY_CONS(Score_element);
   Bar();
 
-  Molecule staff_bracket (Real height) const;
-  Molecule staff_brace (Real height) const;
   Molecule compound_barline (String, Real height) const;
   Molecule simple_barline (Real wid, Real height) const;      
 
diff --git a/lily/include/base-span-bar-engraver.hh b/lily/include/base-span-bar-engraver.hh
deleted file mode 100644 (file)
index d3a360d..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-  base-span-bar-engraver.hh -- declare Span_bar_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef SPAN_BAR_GRAV_HH
-#define SPAN_BAR_GRAV_HH
-
-#include "engraver.hh"
-class Axis_align_spanner;
-/** 
-
-  Make bars that span multiple "staffs". Catch bars, and span a
-  Span_bar over them if we find more than 2 bars.  Vertical alignment
-  of staffs changes the appearance of spanbars.  It is up to the
-  aligner (Vertical_align_engraver, in this case, to add extra
-  dependencies to the spanbars.
-
-  */
-class Base_span_bar_engraver : public Engraver
-{
-  Span_bar * spanbar_p_;
-  Array<Bar*> bar_l_arr_;
-
-public:
-  VIRTUAL_COPY_CONS(Translator);
-  
-    
-  Base_span_bar_engraver();
-protected:
-  /**
-    Do we use break priorities?  If true, use break_priority_i_ as
-    horizontal alignment priority, otherwise, hang the spanbar on the
-    acknowledged bar.  */
-  bool use_priority_b_;
-  
-  virtual void acknowledge_element (Score_element_info);
-  virtual void do_pre_move_processing();
-  virtual Span_bar* get_span_bar_p() const;
-};
-
-#endif // SPAN_BAR_GRAV_HH
index c9a5aa16321c4c08c9698c68ab9440b25c8c4759..49057bde8d0ebf8dbe53f574abfa6d66274902af 100644 (file)
 
 #include "item.hh"
 
-/// align breakable items (clef, bar, etc.)
+/**
+   align breakable items (clef, bar, etc.)
+
+   Properties:
+
+   break-align-symbol -- the index in the spacing table (symbol) of
+   the to be aligned item.
+
+
+   TODO: remove this as a class, and make interface.
+ */
+
 class Break_align_item : public Item
 {
 protected:
index 93213fa0b26b9b2cac75330078689e283cacbbf3..796df94a1c1849056b0ffc863ef1277f46c1e284 100644 (file)
@@ -33,7 +33,6 @@ protected:
   void evaluate_empty ();
 
   static Interval width_callback(Dimension_cache const*) ;
-  static Interval height_callback(Dimension_cache const*) ;  
   
   virtual Real get_bar_size () const;
   virtual void before_line_breaking ();
diff --git a/lily/include/system-start-delimiter.hh b/lily/include/system-start-delimiter.hh
new file mode 100644 (file)
index 0000000..7d7b5c6
--- /dev/null
@@ -0,0 +1,31 @@
+/*   
+  System-start-delimiter.hh -- declare System_start_delimiter
+     
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef SYSTEM_START_DELIMITER_HH
+#define SYSTEM_START_DELIMITER_HH
+
+#include "spanner.hh"
+
+/*
+  Braces/brackets across staffs.
+ */
+class System_start_delimiter : public Spanner
+{
+public:
+  System_start_delimiter ();
+  VIRTUAL_COPY_CONS (Score_element);
+protected:
+  virtual  Molecule do_brew_molecule () const;
+  Molecule staff_bracket (Real) const;
+  Molecule staff_brace (Real) const;
+  Molecule simple_bar (Real) const;
+};
+
+#endif /* SYSTEM_START_DELIMITER_HH */
+
index b2cba74b19dae4802dbdb1c189fa97a55fc5c469..e144a3e8e43961cee9e298bd5d2130df0513a0a5 100644 (file)
@@ -41,7 +41,7 @@ protected:
 public:
   SCM get_property (SCM name_sym) const;
   void set_property (String var_name, SCM value);
-  
+  Translator_group *where_defined (SCM name_sym) const;
 
   String id_str_;
   void add_last_element (String s);
diff --git a/lily/instrument-name-engraver.cc b/lily/instrument-name-engraver.cc
new file mode 100644 (file)
index 0000000..e16a53c
--- /dev/null
@@ -0,0 +1,89 @@
+/*   
+  new-staff-margin-engraver.cc --  implement Instrument_name_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "engraver.hh"
+#include "text-item.hh"
+#include "bar.hh"
+#include "span-bar.hh"
+
+class Instrument_name_engraver : public Engraver
+{
+  Text_item *text_;
+
+  void create_text (SCM s);
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  Instrument_name_engraver ();
+
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_pre_move_processing ();
+};
+
+ADD_THIS_TRANSLATOR(Instrument_name_engraver);
+
+Instrument_name_engraver::Instrument_name_engraver ()
+{
+  text_ = 0;
+}
+
+
+void
+Instrument_name_engraver::do_pre_move_processing ()
+{
+  if (text_)
+    {
+      typeset_element (text_);
+      text_ = 0;
+    }
+}
+
+void
+Instrument_name_engraver::create_text (SCM txt)
+{
+  if(!text_)
+    {
+      text_ = new Text_item;
+      text_->set_elt_property ("text", txt);
+      text_->set_elt_property ("breakable", SCM_BOOL_T);
+
+      /*
+       TODO: use more lispish names for break-align-symbols
+       */
+      text_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Instrument_name"));
+      text_->set_elt_property ("visibility-lambda",
+                              scm_eval (ly_symbol2scm ("begin-of-line-visible")));
+
+      announce_element (Score_element_info (text_,0));
+    }
+}
+
+void
+Instrument_name_engraver::acknowledge_element (Score_element_info i)
+{
+  SCM s = get_property ("instrument");
+  
+  if (now_mom () > Moment (0))
+    s = get_property ("instr");
+
+  if (gh_string_p (s))
+    {
+      if (Bar* b= dynamic_cast<Bar*> (i.elem_l_))
+       {
+         create_text (s);
+         if (Span_bar* s= dynamic_cast<Span_bar*> (b))
+           {
+             text_->set_parent (s, Y_AXIS);
+           }
+       }
+    }
+}
+
+
+
+
index e81e72c2279be0843bad427eeb4353a13f5b215c..ac977363448f6fd14c7c401292bc97aa1c935e06 100644 (file)
@@ -36,9 +36,9 @@ Key_engraver::create_key ()
       item_p_ = new Key_item;
       Staff_symbol_referencer_interface st (item_p_);
       st.set_interface ();
+
       
-      item_p_->set_elt_property ("break-aligned", SCM_BOOL_T); // ugh
-      
+      item_p_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Key_item")); 
       item_p_->set_elt_property ("multi-octave",
                                 gh_bool2scm (key_.multi_octave_b_));
       
diff --git a/lily/new-span-bar-engraver.cc b/lily/new-span-bar-engraver.cc
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
index 2d29cf9e330612b137c013309a09a6d8c39c910b..f93dd1856fe12c73b95a04f049cf7973c830dea1 100644 (file)
@@ -145,6 +145,8 @@ Side_position_interface::aligned_on_self (Dimension_cache const *c)
     return 0.0;
 }
 
+
+
 Real
 directed_round (Real f, Direction d)
 {
index d485c9abfdf3d3b32ad166d4a60249d4b683fa5b..edd41f5ae64c523bce7c85f3cad4473445814659 100644 (file)
@@ -143,8 +143,7 @@ Spacing_spanner::do_measure (Link_array<Paper_column> cols) const
          if (rc->musical_b () && to_boolean (rc->get_elt_property ("contains-grace")))
            right_dist *= paper_l ()->get_var ("before_grace_spacing_factor");
  
-         s.distance_f_ = left_distance + right_dist;
+         s.distance_f_ = left_distance + right_dist;
            
          Real stretch_dist = 0.;
          if (gh_number_p (stretch_hint))
index 135d978c15864841a09858bdaa4441a38485d1fa..e8d771e263953601f8b78d7ce5e691bb84713a38 100644 (file)
@@ -1,17 +1,99 @@
-#include "base-span-bar-engraver.hh"
+/*
+  span-bar-grav.cc -- implement Span_bar_engraver
 
+  source file of the GNU LilyPond music typesetter
 
-class Span_bar_engraver : public Base_span_bar_engraver
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "dimension-cache.hh"
+#include "lily-guile.hh"
+#include "span-bar.hh"
+#include "engraver.hh"
+
+/** 
+
+  Make bars that span multiple "staffs". Catch bars, and span a
+  Span_bar over them if we find more than 2 bars.  Vertical alignment
+  of staffs changes the appearance of spanbars.  It is up to the
+  aligner (Vertical_align_engraver, in this case, to add extra
+  dependencies to the spanbars.
+
+  */
+class Span_bar_engraver : public Engraver
 {
+  Span_bar * spanbar_p_;
+  Link_array<Bar> bar_l_arr_;
+
 public:
-  Span_bar_engraver ();
-  VIRTUAL_COPY_CONS (Translator);
+  VIRTUAL_COPY_CONS(Translator);
+  Span_bar_engraver();
+protected:
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_pre_move_processing();
+  virtual Span_bar* get_span_bar_p() const;
 };
 
 
-Span_bar_engraver::Span_bar_engraver ()
+Span_bar_engraver::Span_bar_engraver()
+{
+  spanbar_p_ =0;
+}
+
+Span_bar*
+Span_bar_engraver::get_span_bar_p() const
+{
+  return new Span_bar;
+}
+
+
+void
+Span_bar_engraver::acknowledge_element (Score_element_info i)
 {
-  use_priority_b_ = false;
+  int depth = i.origin_trans_l_arr (this).size();
+  if (depth > 1
+      && dynamic_cast<Bar *> (i.elem_l_)) 
+    {
+      bar_l_arr_.push (dynamic_cast<Bar *> (i.elem_l_));
+
+      if (bar_l_arr_.size() >= 2 && !spanbar_p_) 
+       {
+         spanbar_p_ = get_span_bar_p();
+         spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS);
+
+         /*
+           UGH. UGH UUHGK GUHG G
+          */
+         String visnam =  String(name()) + "-visibility";
+
+         spanbar_p_->set_elt_property ("visibility-lambda",
+                                       scm_eval (ly_symbol2scm (visnam.ch_C())));
+
+         spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS);
+         announce_element (Score_element_info (spanbar_p_,0));
+         if (!gh_string_p (spanbar_p_->get_elt_property ("glyph")))
+           spanbar_p_-> set_elt_property ("glyph",
+                                          bar_l_arr_[0]->get_elt_property ("glyph"));
+       }
+    }
+}
+
+void
+Span_bar_engraver::do_pre_move_processing()
+{
+  if (spanbar_p_) 
+    {
+      for (int i=0; i < bar_l_arr_.size() ; i++)
+       spanbar_p_->add_bar (bar_l_arr_[i]);
+      typeset_element (spanbar_p_);
+      spanbar_p_ =0;
+    }
+  bar_l_arr_.set_size (0);
 }
 
+
+
 ADD_THIS_TRANSLATOR(Span_bar_engraver);
+
+
+
index 2ed93ad54503940fd1dd9fb5b4a77de94ae0510c..494a90b2ffdb997ba050d27d1ac1e7fb157b540c 100644 (file)
@@ -12,9 +12,9 @@
 #include "paper-def.hh"
 #include "molecule.hh"
 #include "warn.hh"
+#include "axis-group-interface.hh"
 #include "group-interface.hh"
 
-
 void
 Span_bar::add_bar (Score_element*b)
 {
@@ -31,7 +31,8 @@ Span_bar::width_callback (Dimension_cache const * c)
   Span_bar*  s= dynamic_cast<Span_bar*> (c->element_l ());  
   String gl = ly_scm2string (s->get_elt_property ("glyph"));
 
-  /*urg.
+  /*
+    urg.
    */
   Molecule m = s->compound_barline (gl, 40 PT);
   
@@ -41,26 +42,15 @@ Span_bar::width_callback (Dimension_cache const * c)
 void
 Span_bar::before_line_breaking ()
 {
-  evaluate_empty ();
-  
   Bar::before_line_breaking ();
   
-  //  set_empty (false, Y_AXIS); // a hack to make mark scripts work.
+  evaluate_empty ();
 }
 
 void
 Span_bar::after_line_breaking ()
 {
   Bar::after_line_breaking ();
-  SCM s = get_elt_property ("collapse-height");
-  if (gh_number_p (s)
-      && get_spanned_interval ().length () < gh_scm2double (s))
-    {
-      set_elt_property ("transparent", SCM_BOOL_T);
-      set_empty (X_AXIS);
-      set_empty (Y_AXIS);   
-    }
-
   Interval i (get_spanned_interval ());
   translate_axis (i.center (), Y_AXIS);
 }
@@ -94,45 +84,21 @@ Span_bar::evaluate_empty ()
     }
   else if (type_str== ":|:")
     {
-      type_str= ";|;";
+      type_str= ".|.";
     }
-    set_elt_property ("glyph", ly_str02scm (type_str.ch_C ()));
   }
+
+  /*
+    uhh. should do something with type_str ?!!
+   */
 }
 
 Interval
 Span_bar::get_spanned_interval () const
 {
-  Interval y_int;
-
-  for (SCM s = get_elt_property ("elements"); gh_pair_p (s); s = gh_cdr (s))
-    {
-      Score_element *bar = unsmob_element ( gh_car (s));
-
-      if (!bar)
-       continue;
-      
-      Score_element*common = common_refpoint (bar, Y_AXIS);
-
-      Interval iv (bar->extent(Y_AXIS));
-      if (!iv.empty_b ())
-       {
-         Real y = bar->relative_coordinate (common, Y_AXIS)  
-           - relative_coordinate (common, Y_AXIS);
-
-         y_int.unite (y + iv);
-       }
-    }
-  
-  return y_int;
+  return Axis_group_interface::group_extent_callback (dim_cache_[Y_AXIS]);  
 }
 
-Interval
-Span_bar::height_callback (Dimension_cache const *c) 
-{
-  Span_bar * s= dynamic_cast<Span_bar*> (c->element_l ()); 
-  return s->get_spanned_interval ();
-}
 
 Real
 Span_bar::get_bar_size () const
@@ -150,6 +116,6 @@ Span_bar::Span_bar ()
 {
   group (this).set_interface ();
   dim_cache_[X_AXIS]->set_extent_callback (width_callback);
-  dim_cache_[Y_AXIS]->set_extent_callback (height_callback);  
+  dim_cache_[Y_AXIS]->set_extent_callback (Axis_group_interface::group_extent_callback);  
 }
 
index dc71a0ea175e8892ac615b74447fe544f731d79c..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -1,77 +1 @@
-/*
-  span-score-bar-engraver.cc -- implement Span_score_bar_engraver,
-  Piano_bar_engraver and Staff_group_bar_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "span-bar.hh"
-#include "span-score-bar-engraver.hh"
-#include "paper-def.hh"
-#include "dimension-cache.hh"
-
-Span_bar*
-Span_score_bar_engraver::get_span_bar_p () const
-{
-  Span_bar*s =  new Span_bar;
-  s->set_elt_property ("glyph",  gh_str02scm ("scorebar"));
-  s->set_elt_property ("break-aligned",SCM_BOOL_T);
-
-  return s;
-}
-
-
-Span_score_bar_engraver::Span_score_bar_engraver ()
-{
-  use_priority_b_ = true;
-}
-
-Span_bar*
-Piano_bar_engraver::get_span_bar_p () const
-{
-  Span_bar *s= new Span_bar;
-  s->set_empty (X_AXIS);
-  s->set_elt_property ("glyph", gh_str02scm ("brace"));
-  return s;
-}
-
-Span_bar*
-Staff_group_bar_engraver::get_span_bar_p () const
-{
-  Span_bar *s= new Span_bar;
-  s->set_empty (X_AXIS);
-  s->set_elt_property ("glyph",  gh_str02scm ("bracket"));
-
-  SCM collapse = get_property ("bracketCollapseHeight");
-  if (gh_number_p (collapse))
-    s->set_elt_property ("collapse-height", collapse);
-  else
-    s->set_elt_property ("collapse-height", gh_double2scm (1));
-      
-  return s;
-}
-
-void
-Staff_group_bar_engraver::acknowledge_element (Score_element_info i)
-{
-  Base_span_bar_engraver::acknowledge_element (i);
-
-  /*
-    UGH. This has to go into the backend. 
-   */
-  if (Span_bar * b = dynamic_cast<Span_bar *> (i.elem_l_))
-    {
-      SCM gl = b->get_elt_property ("glyph");
-      if (gh_string_p (gl) && ly_scm2string (gl)  == "brace")
-       b->translate_axis ( -paper_l ()->get_var ("interline"),
-                           X_AXIS); // ugh
-    }
-}
-
-ADD_THIS_TRANSLATOR (Piano_bar_engraver);
-ADD_THIS_TRANSLATOR (Staff_group_bar_engraver);
-ADD_THIS_TRANSLATOR (Span_score_bar_engraver);
-
 
index f0887d650a635b1eb7e59594ff70abdc12e54bce..d200746bed43faa73b93993ea1381b652f2d9fdb 100644 (file)
     * merge with/derive from/add functionality to Bar_script_engraver
  */
 
-/**
-   Hang on left edge of staff to provide suppor for simple items.
- */
-class Left_edge_item : public Item
-{
-public:
-  VIRTUAL_COPY_CONS (Score_element);
-};
 
 /**
   put (instrument) text to left of line
@@ -52,7 +44,7 @@ protected:
 private:
   String type_;
   Text_item* text_p_;
-  Left_edge_item* left_edge_p_;
+  Item* left_edge_p_;
   void create_text (SCM);
 };
 
@@ -81,7 +73,6 @@ Staff_margin_engraver::acknowledge_element (Score_element_info info)
          create_text (s);
          if (Span_bar* s= dynamic_cast<Span_bar*> (b))
            {
-             assert (text_p_);
              text_p_->set_parent (s, Y_AXIS);
            }
        }
@@ -94,27 +85,25 @@ Staff_margin_engraver::create_text (SCM text)
   if (!text_p_)
     {
       assert (!left_edge_p_);
-      Left_edge_item* l = new Left_edge_item;
-      
-      l->set_elt_property ("breakable", SCM_BOOL_T);
-      l->set_elt_property ("break-aligned", SCM_BOOL_T);
+      left_edge_p_ = new Item;
+      left_edge_p_->set_elt_property ("breakable", SCM_BOOL_T);
+      left_edge_p_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Left_edge_item"));
 
-      announce_element (Score_element_info (l, 0));
+      announce_element (Score_element_info (left_edge_p_, 0));
 
-      Staff_symbol_referencer_interface sl (l);
+      Staff_symbol_referencer_interface sl (left_edge_p_);
       sl.set_interface ();
-      left_edge_p_ = l;
       
       Text_item* t = new Text_item;
 
       t->set_elt_property ("self-alignment-Y", gh_int2scm (0));
       t->add_offset_callback (Side_position_interface::aligned_on_self, Y_AXIS);
 
-      t->set_parent (l, X_AXIS);
-      t->set_parent (l, Y_AXIS);
+      t->set_parent (left_edge_p_, X_AXIS);
+      t->set_parent (left_edge_p_, Y_AXIS);
 
       // 'just to be sure': see Clef_item::do_add_processing
-      l->add_dependency (t);
+      left_edge_p_->add_dependency (t);
 
 
       /*
@@ -158,7 +147,7 @@ Staff_margin_engraver::create_text (SCM text)
       else
        {
          side_position (t).set_axis (X_AXIS);
-         side_position (t).add_support (l);
+         side_position (t).add_support (left_edge_p_);
       
          Direction d;
          if (isdir_b (s))
@@ -200,7 +189,7 @@ Staff_margin_engraver::do_pre_move_processing ()
                                scm_eval (ly_symbol2scm ("begin-of-line-visible")));
       typeset_element (text_p_);
       text_p_ = 0;
-      assert (left_edge_p_);
+
       typeset_element (left_edge_p_);
       left_edge_p_ = 0;
     }
diff --git a/lily/system-start-delimiter-engraver.cc b/lily/system-start-delimiter-engraver.cc
new file mode 100644 (file)
index 0000000..d8ec2ae
--- /dev/null
@@ -0,0 +1,97 @@
+/*   
+  system-start-delimiter-engraver.cc -- implement System_start_delimiter_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+
+#include "system-start-delimiter.hh"
+#include "engraver.hh"
+#include "staff-symbol.hh"
+#include "group-interface.hh"
+#include "paper-column.hh"
+#include "paper-def.hh"
+
+/*
+  TODO: rename this to system-open-engraver (or whatever.)
+
+ */
+class System_start_delimiter_engraver : public Engraver
+{
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  System_start_delimiter_engraver();
+
+  Spanner * spanbar_;
+protected:
+
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_creation_processing ();
+  virtual void do_removal_processing ();
+};
+
+ADD_THIS_TRANSLATOR(System_start_delimiter_engraver);
+
+
+void
+System_start_delimiter_engraver::acknowledge_element (Score_element_info inf)
+{
+  if (dynamic_cast<Staff_symbol*> (inf.elem_l_))
+    {
+      /*
+       don't add as Axis_group_interface (spanbar_).add_element (),
+       because that would set the parent as well */
+         
+      Group_interface (spanbar_).add_element (inf.elem_l_);
+    }
+  else if (System_start_delimiter * b = dynamic_cast<System_start_delimiter *> (inf.elem_l_))
+    {
+      SCM gl = b->get_elt_property ("glyph");
+      SCM my_gl = get_property ("spanBarGlyph");
+
+      /*
+       UGH UGH
+       */
+      if (gh_symbol_p (gl) && gl  == ly_symbol2scm ("brace")
+         && gh_symbol_p (my_gl) && my_gl == ly_symbol2scm ("bracket"))
+       b->translate_axis ( -paper_l ()->get_var ("interline"), X_AXIS); // ugh
+    }
+
+}
+
+System_start_delimiter_engraver::System_start_delimiter_engraver()
+{
+  spanbar_ = 0;
+}
+
+void
+System_start_delimiter_engraver::do_creation_processing()
+{
+  spanbar_ = new System_start_delimiter;
+  spanbar_->set_bound (LEFT, get_staff_info ().command_pcol_l ());
+  announce_element (Score_element_info (spanbar_,0));
+}
+
+void
+System_start_delimiter_engraver::do_removal_processing ()
+{
+  SCM s = get_property ("systemStartDelimiterGlyph");
+  if (gh_symbol_p (s))
+    {
+      spanbar_->set_elt_property ("glyph", s);
+    }
+
+  // ugh, should have naming without bracket
+  SCM collapse = get_property ("bracketCollapseHeight");
+  if (gh_number_p (collapse))
+    spanbar_->set_elt_property ("collapse-height", collapse);
+  else
+    spanbar_->set_elt_property ("collapse-height", gh_double2scm (1));
+      
+  spanbar_->set_bound (RIGHT, get_staff_info ().command_pcol_l ());
+  typeset_element (spanbar_);
+}
+
diff --git a/lily/system-start-delimiter.cc b/lily/system-start-delimiter.cc
new file mode 100644 (file)
index 0000000..bc94277
--- /dev/null
@@ -0,0 +1,119 @@
+/*   
+  system-start-delimiter.cc --  implement System_start_delimiter
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+#include <math.h>
+
+#include "system-start-delimiter.hh"
+#include "paper-def.hh"
+#include "molecule.hh"
+#include "axis-group-interface.hh"
+#include "lookup.hh"
+#include "all-font-metrics.hh"
+
+Molecule
+System_start_delimiter::staff_bracket (Real height) const 
+{
+  Paper_def* p= paper_l ();
+  Real arc_height = p->get_var("bracket_arch_height");
+  SCM at = gh_list (ly_symbol2scm ("bracket"),
+                   gh_double2scm (p->get_var("bracket_arch_angle")),
+                   gh_double2scm (p->get_var("bracket_arch_width")),
+                   gh_double2scm (arc_height),
+                   gh_double2scm (p->get_var("bracket_width")),
+                   gh_double2scm (height),
+                   gh_double2scm (p->get_var("bracket_arch_thick")),
+                   gh_double2scm (p->get_var("bracket_thick")),
+                   SCM_UNDEFINED);
+
+  Real staff_space = p->get_var ("interline");
+  Real h = height + 2 * arc_height;
+  Box b (Interval (0, 1.5 * staff_space), Interval (-h/2, h/2));
+  Molecule mol (b, at);
+  
+  mol.translate_axis (- mol.dim_[X_AXIS].length () / 2, X_AXIS);
+  return mol;
+}
+
+System_start_delimiter::System_start_delimiter ()
+{
+  set_empty (Y_AXIS);
+}
+
+Molecule
+System_start_delimiter::simple_bar (Real h) const
+{
+  Real w = paper_l ()->get_var ("barthick_score");
+  return lookup_l ()->filledbox (Box (Interval(0,w), Interval(-h/2, h/2)));
+}
+   
+
+Molecule
+System_start_delimiter::do_brew_molecule ()const
+{
+  Interval ext = Axis_group_interface::group_extent_callback (dim_cache_[Y_AXIS]);
+  Real l = ext.length (); 
+  Molecule m;
+
+  SCM s = get_elt_property ("collapse-height");
+  if (gh_number_p (s) && l < gh_scm2double (s))
+    {
+      System_start_delimiter * me = (System_start_delimiter*)this;
+      me->set_elt_property ("transparent", SCM_BOOL_T);
+      me->set_empty (X_AXIS);
+      me->set_empty (Y_AXIS);
+      return m;
+    }
+
+  
+  s = get_elt_property ("glyph");
+  if (gh_symbol_p (s) && s == ly_symbol2scm ("bracket"))
+    m = staff_bracket (l);
+  else if (gh_symbol_p (s) && s == ly_symbol2scm ("brace"))
+    m =  staff_brace (l);
+  else
+    m = simple_bar (l);
+  
+  
+  m.translate_axis (ext.center (), Y_AXIS);
+  return m;
+}
+
+/*
+  ugh. Suck me plenty.
+ */
+Molecule
+System_start_delimiter::staff_brace (Real y)  const
+{
+  Real staffht  = paper_l ()->get_var ("staffheight");
+  int staff_size  = int (rint (staffht ));
+
+  // URG
+  Real step  = 1.0;
+  int minht  = 2 * staff_size;
+  int maxht = 7 *  minht;
+  int idx = int (((maxht - step) <? y - minht) / step);
+  idx = idx >? 0;
+
+  SCM l = scm_eval (gh_list (ly_symbol2scm ("style-to-cmr"),
+                           ly_str02scm ("brace"),
+                           SCM_UNDEFINED));
+  
+  String nm = "feta-braces";
+  if (l != SCM_BOOL_F)
+    nm = ly_scm2string (gh_cdr (l));
+  nm += to_str (staff_size);
+  SCM e =gh_list (ly_symbol2scm ("char"), gh_int2scm (idx), SCM_UNDEFINED);
+  SCM at = (e);
+
+  at = fontify_atom (find_font (nm), at);
+  
+  Box b (Interval (0,0), Interval (-y/2, y/2));
+
+  return Molecule(b, at);
+}
+  
index 547d4c2ef451c21898ad57746fd685298bc8ffee..6a4a1deed75fc85ea90c674c21db68529c493346 100644 (file)
@@ -39,7 +39,7 @@ Time_signature_engraver::do_process_music()
       time_signature_p_->set_elt_property ("fraction",
                                           gh_cons (gh_int2scm (req->beats_i_),
                                                    gh_int2scm (req->one_beat_i_))); 
-      time_signature_p_->set_elt_property ("break-aligned", SCM_BOOL_T);
+      time_signature_p_->set_elt_property ("break-align-symbol", ly_symbol2scm(  "Time_signature"));
     }
 
   
index c88e521412b098754c744780fe5758db461f418f..e64182a3a8955d84e095558b4bf0f408f1471d4c 100644 (file)
@@ -19,6 +19,7 @@ Timing_engraver::do_post_move_processing( )
 {
   bar_req_l_ = 0;
   Timing_translator::do_post_move_processing ();
+  
 }
 
 bool
@@ -35,6 +36,22 @@ Timing_engraver::do_try_music (Music*m)
   
   return Timing_translator::do_try_music (m);
 }
+#if 0
+String
+Timing_engraver::do_process_music ()
+{
+  if (gh_string_p (get_property  ("barType")))
+    ;
+  else if (!now_mom ())
+    {
+      daddy_trans_l_->set_property ("barType", ly_str02scm ("|"));
+    }
+  else
+
+  {
+  }
+}
+#endif
 
 
 String
index 2a071f2e9a9d31d27273deddb6d833f41aa216c8..d4ac8ff52862595f8bf23dcf1249803345737a34 100644 (file)
@@ -428,6 +428,17 @@ Translator_group::do_add_processing ()
     }
 }
 
+Translator_group*
+Translator_group::where_defined (SCM sym) const
+{
+  if (properties_dict_.elem_b (sym))
+    {
+      return (Translator_group*)this;
+    }
+
+  return (daddy_trans_l_) ? daddy_trans_l_->where_defined (sym) : 0;
+}
+
 SCM
 Translator_group::get_property (SCM sym) const
 {
@@ -448,3 +459,4 @@ Translator_group::set_property (String id, SCM val)
 {
   properties_dict_.set (ly_symbol2scm (id.ch_C()), val);
 }
+
index 8e6f1f58b3c1df455e4acff00e62df5f63bf4296..e9a17f134f8ffdce4f9e8c7edb43fff4abda712b 100644 (file)
@@ -55,12 +55,12 @@ StaffContext=\translator {
 
 
 %{
-       The Staff_margin_engraver puts the name of the instrument
+       The Instrument_name_engraver puts the name of the instrument
        (\property Staff.instrument; Staff.instr for subsequent lines)
        to the left of a staff.
        Usually, you only want this in the full score, not in the parts.
 
-       \consists "Staff_margin_engraver";
+       \consists "Instrument_name_engraver";
 %}
 
        defaultClef = #"treble"
@@ -75,8 +75,10 @@ StaffContext=\translator {
 \translator {
        \type "Engraver_group_engraver";
        \name ChoirStaff;
-       alignmentReference = \center;   
-       \consists "Staff_group_bar_engraver";
+       alignmentReference = \center;
+       \consists "System_start_delimiter_engraver";
+       systemStartDelimiterGlyph = #'bracket
+
 
 
        \accepts "Staff";
@@ -201,7 +203,9 @@ GrandStaffContext=\translator{
        \type "Engraver_group_engraver";
        \name GrandStaff;
        \consists "Span_bar_engraver";
-       \consists "Piano_bar_engraver";
+       \consists "System_start_delimiter_engraver";
+       systemStartDelimiterGlyph = #'brace
+       
        \consists "Property_engraver";  
        Generic_property_list = #generic-grand-staff-properties
        \accepts "Staff";
@@ -224,7 +228,12 @@ StaffGroupContext= \translator {
        \type "Engraver_group_engraver";
        \consists "Span_bar_engraver";
        \consists "Output_property_engraver";   
-       \consists "Staff_group_bar_engraver";
+       \consists "System_start_delimiter_engraver";
+       systemStartDelimiterGlyph = #'bracket
+       
+
+       \consistsend "Axis_group_engraver" ;
+
 
        \name StaffGroup;
        \accepts "Staff";
@@ -310,7 +319,7 @@ HaraKiriStaffContext = \translator {
        \StaffContext
        \remove "Axis_group_engraver";
        \consistsend "Hara_kiri_engraver";        
-       \consists "Staff_margin_engraver";
+       \consists "Instrument_name_engraver";
        \accepts "Voice";
 };
 %{
@@ -336,17 +345,19 @@ ScoreContext = \translator {
        \consists "Output_property_engraver";   
 
        %bracketCollapseHeight = #10  % \pt
-       \consists "Span_score_bar_engraver";
+       \consists "System_start_delimiter_engraver";
+       
 %      \consists "Score_priority_engraver";
        \consists "Break_align_engraver";
        breakAlignOrder = #'(
-         "Left_edge_item"
-         "Span_bar"
-         "Breathing_sign"
-         "Clef_item"
-         "Key_item"
-         "Staff_bar"
-         "Time_signature"
+         Instrument_name
+         Left_edge_item
+         Span_bar
+         Breathing_sign
+         Clef_item
+         Key_item
+         Staff_bar
+         Time_signature
        )
        \consists "Spacing_engraver";
        \consists "Vertical_align_engraver";
@@ -365,7 +376,6 @@ ScoreContext = \translator {
 
        markVisibilityFunction = #end-of-line-invisible
        barNumberVisibilityFunction = #begin-of-line-visible
-       marginVisibilityFunction = #begin-of-line-visible
 };
 
 \translator { \ScoreContext }
index 910db32fad1be913b0255feac4bdac3be96a9124..033effbf00d6d5f89b7ba3c9bb614f912bc1366c 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.3.41
-Entered-date: 30MAR00
+Version: 1.3.42
+Entered-date: 03APR00
 Description: 
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       1000k lilypond-1.3.41.tar.gz 
+       1000k lilypond-1.3.42.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.3.41.tar.gz 
+       1000k lilypond-1.3.42.tar.gz 
 Copying-policy: GPL
 End
index 996e2258466907464e68eda48fcaefc5291e7918..25644c795f1d472b665f6cbbdeea9bcf028e0a5d 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.3.41
+Version: 1.3.42
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.41.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.42.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 # Icon: lilypond-icon.gif
@@ -28,10 +28,13 @@ The documentation of LilyPond, both in HTML and PostScript.
 
 %prep
 %setup
+
 %build
-#./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --disable-optimise --enable-shared
+
 %{configure} --disable-checking --disable-debugging --enable-printing --prefix=%{_prefix} --disable-optimise --enable-shared
+
 make all
+
 ln -s %{_prefix}/share/texmf/fonts/tfm/public/cm/ tfm
 
 # urg
@@ -63,6 +66,10 @@ tar -C htmldocs -xzf out/htmldoc.tar.gz || true
 mkdir -p out/examples/
 tar -cf - input/  | tar -C out/examples/ -xf- || true
 
+%ifos cygwin
+%{fix_suffixes}
+%endif
+
 %post
 
 touch /tmp/.lilypond-install
@@ -79,12 +86,17 @@ fi
 # hairy to hook it in (possibly non-existing) emacs
 %doc mudela-mode.el
 
+%ifnos cygwin
 %{_prefix}/bin/abc2ly
 %{_prefix}/bin/convert-mudela
 %{_prefix}/bin/mudela-book
 %{_prefix}/bin/ly2dvi
 %{_prefix}/bin/lilypond
 %{_prefix}/bin/midi2ly
+%else
+%{_prefix}/bin
+%endif
+
 %{_prefix}/man/man1/midi2ly.1
 %{_prefix}/man/man1/lilypond.1
 %{_prefix}/man/man1/mudela-book.1
index 06535c7893153b9f7c814f27eac1eb6f564d9c96..6b7a39c24398042b2d90aaca019e1e6f47c5eafd 100644 (file)
@@ -24,7 +24,7 @@ $clarinetti_staff = \context Staff = clarinetti <
        %\notes \context Voice=clarinetti < 
        \notes \context Staff=clarinetti < 
                \time 4/4;
-               \key F;
+               \key f;
                \skip 1*341; \bar "|.";
                \context VoiceOne=clarinettoi
                        \$clarinetto1
index e37947d68b70cce8c0ffc9bd06a74eb7f0c1862b..ebf68cfbf47372c9306b8d4654030737960a45cf 100644 (file)
@@ -38,7 +38,7 @@ ouraged - copy this music and share it!";
 %{
  Tested Features: multivoice accents lyrics chords piano music
 multiple \paper{}s in one \score 
-Note: Original key F.
+Note: Original key f.
 %}
 
 \version "1.3.4";
index f4d4356afd571d57d643856d2e7414207572f783..364f3ec10808258d665b1a7113f135fe9367700e 100644 (file)
@@ -78,7 +78,7 @@ bass=\notes \relative c {
 global = \notes {
        \time 2/2;
        \property Staff.timeSignatureStyle = "C"
-       \key E;
+       \key e;
 }
 
 $upper_staff = \context Staff = upper {
index 42e6b9ff81da149d9086831da345fed60c0d50c7..693a4caf3e0ecace08e28b573bd02cd1fcab7e10 100644 (file)
@@ -41,7 +41,7 @@ bass= \notes \relative c' {
 global=\notes{
        \time 4/4;
        \property Staff.timeSignatureStyle="C"
-       \key G;
+       \key g;
        \skip 1*4; \bar "||";
        \skip 1*4; \bar "||";
        \skip 1*4; \bar "||";
index be80e225430d40b9995e0599666736381bc63815..0341e3484b7703d5aa0757c041d41f4b18803832 100644 (file)
@@ -18,7 +18,7 @@
 
 global=\notes {
       \time 6/4;
-      \key Bes;
+      \key bes;
       \skip 1.*12;
       \bar "|.";
 }
index fb540fccc844b8d4d812998bb27657ed9d052fcc..db61c1a7f1aa9086d24c246fd27b5c0130dc95ec 100644 (file)
@@ -2,5 +2,5 @@
 
 $global_i = \notes{
        \time 12/8;
-       \key G;
+       \key g;
 }
index baf9b553fd96437eaa35b4b8e0cf9214fdb77d69..db8edfecaef9e0abc0735cd2fc7c017a6d9c832a 100644 (file)
@@ -209,7 +209,7 @@ four = \context Staff \notes\relative c{
 
 global = \notes{
        \time 4/4;
-       \key D;
+       \key d;
 }
 
 \score{
index fe8a8cb76f669f07013e7f3f53f703fcc11e0c24..bdc0b6e3c17e50193be1825cd59154fc4e34df20 100644 (file)
@@ -201,7 +201,7 @@ lower = \context Staff \notes\relative c{
 
 global = \notes{
        \time 3/4;
-       \key F;
+       \key f;
 }
 
 \score{
index 643c959711e6f7100962e84ce107f4cf638d8eef..f807964bd8373b9019d059ffa6a0ee565248216c 100644 (file)
@@ -124,7 +124,7 @@ four = \context Staff \notes\relative c{
 
 global = \notes{
        \time 4/4;
-       \key F;
+       \key f;
 }
 
 \score{
index c8655ddd097f8f2f14810b19ddfed5a13fab485a..df8e73a6075eb21af0017084f7c8851ffa0e6e59 100644 (file)
 ;; Score_span_bars are only visible at start of line
 ;; i.e. if break_dir == RIGHT == 1
 (define Span_bar_engraver-visibility begin-of-line-invisible)
-(define Base_span_bar_engraver-visibility begin-of-line-invisible)
 (define mark-visibility end-of-line-invisible)
-(define Span_score_bar_engraver-visibility begin-of-line-visible)
-(define Piano_bar_engraver-visibility begin-of-line-visible)
-(define Staff_group_bar_engraver-visibility begin-of-line-visible)
 
 ;; Spacing constants for prefatory matter.
 ;;
 ;; (Measured in staff space)
 (define space-alist
  '(
-   (("" "Left_edge_item") . (extra-space -15.0))
-   (("" "Clef_item") . (minimum-space 1.0))
-   (("" "Staff_bar") . (minimum-space 0.0))
-   (("" "Clef_item") . (minimum-space 1.0))
-   (("" "Key_item") . (minimum-space 0.5))
-   (("" "Span_bar") . (extra-space 0.0))
-   (("" "Time_signature") . (extra-space 0.0))
-   (("" "begin-of-note") . (minimum-space 1.5))
-   (("Clef_item" "Key_item") . (minimum-space 4.0))
-   (("Key_item" "Time_signature") . (extra-space 1.0))
-   (("Clef_item"  "Time_signature") . (minimum-space 3.5))
-   (("Staff_bar" "Clef_item") .   (minimum-space 1.0))
-   (("Clef_item"  "Staff_bar") .  (minimum-space 3.7))
-   (("Time_signature" "Staff_bar") .  (minimum-space 2.0))
-   (("Key_item"  "Staff_bar") .  (extra-space 1.0))
-   (("Span_bar" "Clef_item") .   (extra-space 1.0))
-   (("Clef_item"  "Span_bar") . (minimum-space 3.7))
-   (("Time_signature" "Span_bar") . (minimum-space 2.0))
-   (("Key_item"  "Span_bar") . (minimum-space 2.5))
-   (("Staff_bar" "Time_signature") . (minimum-space 1.5)) ;double check this.
-   (("Time_signature" "begin-of-note") . (extra-space 2.0)) ;double check this.
-   (("Key_item" "begin-of-note") . (extra-space 2.5))
-   (("Staff_bar" "begin-of-note") . (extra-space 1.0))
-   (("Clef_item" "begin-of-note") . (minimum-space 5.0))
-   (("" "Breathing_sign") . (minimum-space 0.0))
-   (("Breathing_sign" "Key_item") . (minimum-space 1.5))
-   (("Breathing_sign" "begin-of-note") . (minimum-space 1.0))
-   (("Breathing_sign" "Staff_bar") . (minimum-space 1.5))
-   (("Breathing_sign" "Clef_item") . (minimum-space 2.0))
+   ((none Instrument_name) . (extra-space 1.0))
+   ((Instrument_name Left_edge_item) . (extra-space 1.0))
+   ((Left_edge_item Clef_item) . (extra-space 1.0))
+   ((none Left_edge_item) . (extra-space 0.0))
+   ((Left_edge_item Staff_bar) . (extra-space 0.0))        
+;   ((none Left_edge_item) . (extra-space -15.0))
+;   ((none Left_edge_item) . (extra-space -15.0))
+   ((none Clef_item) . (minimum-space 1.0))
+   ((none Staff_bar) . (minimum-space 0.0))
+   ((none Clef_item) . (minimum-space 1.0))
+   ((none Key_item) . (minimum-space 0.5))
+   ((none Time_signature) . (extra-space 0.0))
+   ((none begin-of-note) . (minimum-space 1.5))
+   ((Clef_item Key_item) . (minimum-space 4.0))
+   ((Key_item Time_signature) . (extra-space 1.0))
+   ((Clef_item  Time_signature) . (minimum-space 3.5))
+   ((Staff_bar Clef_item) .   (minimum-space 1.0))
+   ((Clef_item  Staff_bar) .  (minimum-space 3.7))
+   ((Time_signature Staff_bar) .  (minimum-space 2.0))
+   ((Key_item  Staff_bar) .  (extra-space 1.0))
+   ((Staff_bar Time_signature) . (minimum-space 1.5)) ;double check this.
+   ((Time_signature begin-of-note) . (extra-space 2.0)) ;double check this.
+   ((Key_item begin-of-note) . (extra-space 2.5))
+   ((Staff_bar begin-of-note) . (extra-space 1.0))
+   ((Clef_item begin-of-note) . (minimum-space 5.0))
+   ((none Breathing_sign) . (minimum-space 0.0))
+   ((Breathing_sign Key_item) . (minimum-space 1.5))
+   ((Breathing_sign begin-of-note) . (minimum-space 1.0))
+   ((Breathing_sign Staff_bar) . (minimum-space 1.5))
+   ((Breathing_sign Clef_item) . (minimum-space 2.0))
    )
 )
+
+;; (define (ly-warn s) (error s))
 (define (break-align-spacer this next)
-  (let ((entry (assoc `(,this ,next) space-alist)))
+  (let ((entry (assoc (list this next) space-alist)))
     (if entry
        (cdr entry)
        (begin (ly-warn (string-append "Unknown spacing pair `" this "', `" next "'"))
 (define (break-barline glyph dir)
    (let ((result (assoc glyph 
                        '((":|:" . (":|" . "|:"))
-                         (";|;" . ("|." . ".|"))
                          ("|" . ("|" . ""))
                          ("|s" . (nil . "|"))
                          ("|:" . ("|" . "|:"))
-                         (".|" . ("|" . ".|"))
                          ("|." . ("|." . nil))
                          (":|" . (":|" . nil))
                          ("||" . ("||" . nil))
index 2d4d9d1eaa86393036e8f0855ade8fac510fd15f..8af41ada7968ac79ad92048bd9ef2cc8a607f085 100755 (executable)
@@ -604,8 +604,16 @@ fi
     fi
     stepmake=`echo ${stepmake} | sed "s!\\\${prefix}!$presome!"`
 
+    # urg, how is this supposed to work?
+    if test "$program_prefix" = "NONE"; then
+         program_prefix=
+    fi
+    if test "$program_suffix" = "NONE"; then
+         program_suffix=
+    fi
+
     echo $ac_n "checking Package""... $ac_c" 1>&6
-echo "configure:609: checking Package" >&5
+echo "configure:617: checking Package" >&5
     if test "x$PACKAGE" = "xSTEPMAKE"; then
        echo "$ac_t""Stepmake package!" 1>&6
 
@@ -657,7 +665,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
        fi
 
        echo $ac_n "checking for stepmake""... $ac_c" 1>&6
-echo "configure:661: checking for stepmake" >&5
+echo "configure:669: checking for stepmake" >&5
        # Check for installed stepmake
        if test -d $stepmake; then
            echo "$ac_t""$stepmake" 1>&6
@@ -779,7 +787,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:783: checking host system type" >&5
+echo "configure:791: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -804,7 +812,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:808: checking for $ac_word" >&5
+echo "configure:816: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -839,7 +847,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:843: checking for $ac_word" >&5
+echo "configure:851: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -876,7 +884,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:880: checking for $ac_word" >&5
+echo "configure:888: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -911,7 +919,7 @@ test -n "$TAR" || TAR="error"
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:915: checking for $ac_word" >&5
+echo "configure:923: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -951,7 +959,7 @@ fi
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:955: checking for $ac_word" >&5
+echo "configure:963: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SHELL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -988,7 +996,7 @@ fi
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:992: checking for $ac_word" >&5
+echo "configure:1000: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1029,7 +1037,7 @@ fi
     # Extract the first word of "${PYTHON:-python}", so it can be a program name with args.
 set dummy ${PYTHON:-python}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1033: checking for $ac_word" >&5
+echo "configure:1041: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1089,7 +1097,7 @@ fi
        LN=cp # hard link does not work under cygnus-nt
        LN_S='cp -r' # symbolic link does not work for native nt
        ZIP="zip -r -9" #
-       DOTEXE=.exe
+       program_suffix=.exe
        # urg
         # DIRSEP='\\'
        # PATHSEP=';'
@@ -1129,6 +1137,7 @@ fi
     
     
     
+    
     cat >> confdefs.h <<EOF
 #define DIRSEP '${DIRSEP}'
 EOF
@@ -1195,7 +1204,7 @@ fi
 
 
     echo $ac_n "checking language""... $ac_c" 1>&6
-echo "configure:1199: checking language" >&5    
+echo "configure:1208: checking language" >&5    
     case "$language" in
       En* | en* | Am* | am* | US* | us*)
            lang=English;;
@@ -1230,7 +1239,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1234: checking for $ac_word" >&5
+echo "configure:1243: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1413,7 +1422,8 @@ s%@FIND@%$FIND%g
 s%@TAR@%$TAR%g
 s%@BASH@%$BASH%g
 s%@PYTHON@%$PYTHON%g
-s%@DOTEXE@%$DOTEXE%g
+s%@program_prefix@%$program_prefix%g
+s%@program_suffix@%$program_suffix%g
 s%@ZIP@%$ZIP%g
 s%@LN@%$LN%g
 s%@LN_S@%$LN_S%g