From b4d5d1145b0d59ae1ac42c9bc9c43c6d5b055c1c Mon Sep 17 00:00:00 2001
From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Tue, 3 Nov 1998 15:18:31 +0100
Subject: [PATCH] release: 1.1.2

---
 Documentation/COPERTINA.in       |  15 +--
 Documentation/links.yo           |   5 +
 Documentation/tex/fonts.doc      |   7 +-
 Documentation/tex/refman.yo      |  33 ++++--
 Documentation/tex/tutorial.yo    |  10 +-
 Documentation/topdocs/index.yo   |   1 +
 INSTALL.txt                      |   3 +
 NEWS                             |  27 ++++-
 TODO                             |   5 +-
 VERSION                          |   4 +-
 buildscripts/lilypond-login.sh   |   2 +-
 buildscripts/lilypond-profile.sh |   4 +-
 init/declarations.ly             |   3 +
 init/lily.scm                    |  12 +-
 init/scm.ly                      |   5 +-
 input/test/accid.fly             |   6 +
 input/test/keys.ly               |   4 +-
 input/test/time.fly              | 192 ++++++++++++++++---------------
 lily/GNUmakefile                 |   5 -
 lily/command-request.cc          |   4 +-
 lily/include/command-request.hh  |   3 +-
 lily/include/lily-guile.hh       |   1 +
 lily/include/lookup.hh           |   9 +-
 lily/include/musical-pitch.hh    |   2 +
 lily/include/musical-request.hh  |   2 +
 lily/include/time-signature.hh   |   2 +-
 lily/key-engraver.cc             |   3 +-
 lily/key-item.cc                 |  10 +-
 lily/lily-guile.cc               |  17 +++
 lily/local-key-engraver.cc       |   5 +
 lily/local-key-item.cc           |   6 +-
 lily/lookup.cc                   |  96 +++++++++-------
 lily/midi-walker.cc              |   2 +-
 lily/musical-pitch.cc            |   1 +
 lily/musical-request.cc          |   7 +-
 lily/parser.yy                   |  17 ++-
 lily/time-signature-engraver.cc  |   2 +-
 lily/time-signature.cc           |   2 +-
 make/out/lelievijver.lsm         |   8 +-
 make/out/lilypond.lsm            |   8 +-
 make/out/lilypond.spec           |   4 +-
 mf/feta-toevallig.mf             |  33 +++++-
 mutopia/gallina.ly               |  63 ++++++----
 scripts/ly2dvi.py                |   3 +-
 stepmake/stepmake/tex-rules.make |   2 +
 tex/lilyponddefs.tex             |   2 +-
 46 files changed, 402 insertions(+), 255 deletions(-)
 create mode 100644 input/test/accid.fly

diff --git a/Documentation/COPERTINA.in b/Documentation/COPERTINA.in
index 664aec837e..5344413eca 100644
--- a/Documentation/COPERTINA.in
+++ b/Documentation/COPERTINA.in
@@ -1,7 +1,8 @@
-LilyPond è il tipografo musicale del progetto GNU.   Questo programma è
-fatto per stampare belle partiture da un documento definito per musica.
-Può anche suonare le prestazioni meccaniche ad un documento MIDI.  Le
-caratteristiche includono i personali multipli, tester, chiavi, suoni,
-lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti,
-segni di formattazione, estrazione delle parte.  È compresa una seria 
-completa di caratteri musicali.
+LilyPond è il tipografo musicale del progetto GNU. Questo programma
+puo' stampare delle belle partiture a partire da un documento di
+definizioni musicali. Puo' anche creare meccaniche rappresentazioni
+della partitura in un documento in formato MIDI. Le caratteristiche del
+programma includono pentagrammi multipli, segni di divisione, chiavi,
+tasti, parole, versatile linguaggio di definizione, cadenze, legature,
+acciaccature, terzine, segni di formattazione, estrazione delle
+parte. è compresa una seria completa di caratteri musicali.
diff --git a/Documentation/links.yo b/Documentation/links.yo
index 1ff0bb7781..4aa398f963 100644
--- a/Documentation/links.yo
+++ b/Documentation/links.yo
@@ -34,8 +34,13 @@ dit(lurl(http://www.iat.unc.edu/technology/music/music.html))
     An enormous collection of music related URLs
 dit(lurl(http://www.ram.org/ramblings/philosophy/fmp.html))
     Musings on free music, plus hints how to record your own (free) music.
+
+dit(lurl(http://www.cyberus.ca/~jdsankey/harpsichord.html))
+	John Sankey has taken up the task of recording classical
+music, and distributing the results at no cost.
 )
 
+
 sect(Ftp)
 
 We will upload major releases to the following sites:
diff --git a/Documentation/tex/fonts.doc b/Documentation/tex/fonts.doc
index bc5bce8640..9248bb815c 100644
--- a/Documentation/tex/fonts.doc
+++ b/Documentation/tex/fonts.doc
@@ -28,9 +28,10 @@ typography of all.
 % stupid test to check convert-mudela.py.
 %
 % (so sue me)
-\begin{mudela}[fragment,center]
-  \clef bass; c1 \clef alto; c'2  \clef treble; c''4
-\end{mudela}
+% well, make website breaks...
+% \begin{mudela}[fragment,center]
+%   \clef bass; c1 \clef alto; c'2  \clef treble; c''4
+% \end{mudela}
 
 
 \section{Bezier curves for slurs}
diff --git a/Documentation/tex/refman.yo b/Documentation/tex/refman.yo
index ae08ad2d24..7a2e4ec17a 100644
--- a/Documentation/tex/refman.yo
+++ b/Documentation/tex/refman.yo
@@ -347,7 +347,7 @@ label(notedesc)
 subsect(Basic Note Specification)
 
 A note specification has the form 
-var(pitch)[var(octavespec)][code(!)][var(duration)].
+var(pitch)[var(octavespec)][code(!)][code(?)][var(duration)].
 The pitch of the note is specified by the note's name.  
 
 LilyPond has predefined note names for various languages.  The default
@@ -395,9 +395,11 @@ will determine what accidentals to  typeset  depending on the  key and
 context.   
 A reminder accidental can be forced by
 using the  optional exclamation mark `code(!)'
-on a pitch.
+on the pitch.
+A cautionary accidental, i.e., an accidental within paranthesis
+can be obtained using the optional question mark `code(?)' on the pitch.
 mudela(fragment,verbatim,center)(
-cis' d' e' cis'  c'! d' e' c' 
+cis' d' e' cis'  c'? d' e' c'!  
 )
 
 
@@ -951,8 +953,14 @@ argument var(file) is a string.  The full filename including the
 file(.ly) extension must be given, and the filename must be quoted.
 (An unquoted string will not work here.)
 
-dit(code(\key) var(pitch)code(;)) Change key signature to that of
-var(pitch)-major.
+dit(code(\key) var(pitch) var(type) code(;)) Change the key signature. 
+var(type) should be code(\major) or code(\minor) to get
+var(pitch)-major or var(pitch)-minor, respectively. The second
+argument is optional, the default is major keys. 
+The var(\type) argument can also be given as an integer, which tells
+the number of semitones that should be added to the pitch given in the
+subsequent code(\key) commands to get the corresponding major key,
+e.g. code(\minor) is defined as 3.
 
 dit(code(\keysignature) var(pitchseq)code(;))
 Specify an arbitrary key signature.  The pitches from var(pitch) will
@@ -1295,9 +1303,6 @@ dit(code(barAlways)) If set to 1 a bar line is drawn after each note.
 dit(code(defaultBarType)) Sets the default type of bar line.  See
 code(\bar) keyword.
 
-
-
-
 dit(code(keyoctaviation)) If set to 1, then keys are the same in all
 octaves.  If set to 0 then the key signature for different octaves can
 be different and is specified independently: code(\keysignature bes
@@ -1323,16 +1328,16 @@ default) if you do not want key signatures printed.
 dit(code(timeSignatureStyle)) Changes the default two-digit layout
    for time signatures. The following values are recognized:
    description(
-      dit(code(C)): 4/4 and 2/2 are typeset as C and struck C,
+      dit(code(C)) 4/4 and 2/2 are typeset as C and struck C,
       respectively. All other time signatures are written with two digits.
-      dit(code(old)): 2/2, 3/2, 3/4, 4/4, 6/4 and 9/4 are typeset with
+      dit(code(old)) 2/2, 3/2, 3/4, 4/4, 6/4 and 9/4 are typeset with
       old-style mensuration marks. All other time signatures are 
       written with two digits.
-      dit(code(1)): All time signatures are typeset with a single
+      dit(code(1)) All time signatures are typeset with a single
       digit, e.g. 3/2 is written as 3.
       dit(code(C2/2), code(C4/4), code(old2/2), code(old3/2),
       code(old3/4), code(old4/4), code(old6/4) or
-      code(old9/4)): Tells Lilypond to use a specific symbol as time
+      code(old9/4)) Tells Lilypond to use a specific symbol as time
       signature.
    )
 The different time signature characters are shown below with
@@ -1439,6 +1444,10 @@ code(castingalgorithm).  Is equal to 1.0.
 dit(code(\infinity)) Used for setting the Score.beamslopedamping
 property.  Is actually equal to 10000.  
 dit(code(\left)) Used for setting textalignment property.  Is equal to -1.
+dit(code(\major)) Used as the second argument of the code(\key)
+command to get a major key.
+dit(code(\minor)) Used as the second argument of the code(\key)
+command to get a minor key.
 dit(code(\mf)) Print mezzoforte symbol on preceeding note. 
 dit(code(\mp)) Print mezzopiano symbol on preceeding note. 
 dit(code(\nobreak)) Prevent a line break in music by using a large
diff --git a/Documentation/tex/tutorial.yo b/Documentation/tex/tutorial.yo
index 02bdaaf9a3..cf2e0e5349 100644
--- a/Documentation/tex/tutorial.yo
+++ b/Documentation/tex/tutorial.yo
@@ -696,10 +696,12 @@ dit(code(\clef) var(clefname)) This command sets the current clef for notation,
     \clef "treble"; c'4
     \clef "alto"; c'4    
   )
-dit(code(\key) var(pitch)) This command changes the current key signature.  The
-  key signature is printed at the start of every line.  The argument
-  is the name of the corresponding major key.  The key of C-minor can 
-  thus be specified as `code(\key es)'.
+dit(code(\key) var(pitch) var(type)) This command changes the current
+  key signature.  The key signature is printed at the start of every
+  line. The var(type) argument is set to code(\major) or code(\minor)
+  to get major or minor keys, respectively. Omitting the second
+  argument gives major keys. The key of C-minor can thus be specified
+  as `code(\key es)' or `code(\key \c minor)'. 
   
 dit(code(\keysignature) var(pitchlist))
 
diff --git a/Documentation/topdocs/index.yo b/Documentation/topdocs/index.yo
index 1307c60e3b..efbd28a923 100644
--- a/Documentation/topdocs/index.yo
+++ b/Documentation/topdocs/index.yo
@@ -39,6 +39,7 @@ nsect(Sites)
 
 description(
 dit(lurl(http://www.cs.uu.nl/people/hanwen/lilypond/))Han-Wen's site.
+dit(lurl(http://www.xs4all.nl/jantien/lilypond/))Jan's site.
 dit(lurl(http://www.realtime.net/~daboys/lilypond/))Jeff's Windows NT Distribution site.
 )
 
diff --git a/INSTALL.txt b/INSTALL.txt
index 1b088819bc..67ea93fa2c 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -80,6 +80,9 @@ o    Python  1.5  (Strictly  speaking,  you  shouldn't  need
      to regenerate the font tables, e.g.).
 
 
+o    GUILE 1.3 (no, GUILE 1.2 won't work)
+
+
 3: RUNNING
 
 
diff --git a/NEWS b/NEWS
index 6b9b37174d..98e3382e01 100644
--- a/NEWS
+++ b/NEWS
@@ -1,10 +1,27 @@
+pl 1.mb1
+        - Support for cautionary accidentals. , i.e. accidentals 
+          within parantheses. Syntax: 'cis?'. Try input/test/accid.fly
+          Note that the font has changed.
+        - bf: No unnecessary warnings about time signatures
+        - Added optional second argument of \key. Set to \major or \minor 
+          to get a major or minor key. Default: major.
+	- bf: Compilation error in midi-walker.cc
+pl 1.jcn2
+ 	- fixes for htmldoc, website
+ 	- silly jcn1 fixes
+ 	- junked MODULE stuff from lily/GNUmakefile (again)
+ 
 pl 0.jcn4
-	-set:
-	   export GUILE_LOAD_PATH=$HOME/usr/src/lilypond/init
-	- dstream: Score_element, Column_info
-	- -fscm debug hack: lilypond -fscm a; guile a.scm > a.tex; tex a
-	- init/lily.scm
+ 	-set:
+ 	   export GUILE_LOAD_PATH=$HOME/usr/src/lilypond/init
+ 	- dstream: Score_element, Column_info
+ 	- -fscm debug hack: lilypond -fscm a; guile a.scm > a.tex; tex a
+ 	- init/lily.scm
+ 
+
+********
 
+pl 1
 pl 0.uu5
 	- fixed MIDI output.
 
diff --git a/TODO b/TODO
index b22fe9a244..b6ac7d37bc 100644
--- a/TODO
+++ b/TODO
@@ -9,7 +9,7 @@ grep for TODO and ugh/ugr/urg
 
 
 BUGS:
-	* disallow backslashes
+	* --safe:  disallow backslashes, disallow \include.
 
 	* \breathmark TeX macro 
 
@@ -269,8 +269,6 @@ ydirection and hshift preset
 
 	* integrate midi-elts from mi2mu and lily?
 
-	* cautionary accidental
-
 	* score-bar-scripts
 	FMR: Free memory read:
 	  * This is occurring while in:
@@ -487,7 +485,6 @@ PROJECTS
 
 	* Keys:
 	- merge key{item} & localkey{item}?
-	- Major/Minor
 	- spacing, national styles?
 
 	* Support for TAB
diff --git a/VERSION b/VERSION
index 3819cc13bf..8186dd8606 100644
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=1
-PATCH_LEVEL=1
-MY_PATCH_LEVEL=jcn3
+PATCH_LEVEL=2
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
diff --git a/buildscripts/lilypond-login.sh b/buildscripts/lilypond-login.sh
index d4a482ebe6..f66a50af09 100644
--- a/buildscripts/lilypond-login.sh
+++ b/buildscripts/lilypond-login.sh
@@ -10,4 +10,4 @@ setenv LILYINCLUDE "@datadir@/ly:@datadir@/afm"
 # include an empty path component for the system wide includes.
 setenv MFINPUTS "@datadir@/mf:"${MFINPUTS:=":"}
 setenv TEXINPUTS "@datadir@/tex:"${TEXINPUTS:=":"}
-
+setenv GUILE_LOAD_PATH "@datadir@/scm:$GUILE_LOAD_PATH"
diff --git a/buildscripts/lilypond-profile.sh b/buildscripts/lilypond-profile.sh
index 176f63629e..44bbfd0ec2 100644
--- a/buildscripts/lilypond-profile.sh
+++ b/buildscripts/lilypond-profile.sh
@@ -9,9 +9,11 @@ LILYINCLUDE="@datadir@/ly:@datadir@/afm"
 # include an empty path component for the system wide includes.
 MFINPUTS="@datadir@/mf:"${MFINPUTS:=":"}
 TEXINPUTS="@datadir@/tex:"${TEXINPUTS:=":"}
+GUILE_LOAD_PATH="@datadir@/scm:$GUILE_LOAD_PATH"
 
-export LILYINCLUDE MFINPUTS TEXINPUTS GS_LIB GS_FONTPATH
+export GUILE_LOAD_PATH LILYINCLUDE MFINPUTS TEXINPUTS GS_LIB GS_FONTPATH
 
+ 	
 # echo  $LILYINCLUDE $MFINPUTS $TEXINPUTS $GS_LIB $GS_FONTPATH
 
 
diff --git a/init/declarations.ly b/init/declarations.ly
index c1bc0fd333..352dc96a89 100644
--- a/init/declarations.ly
+++ b/init/declarations.ly
@@ -33,6 +33,9 @@ center=0
 break = { \penalty = 10000; }
 nobreak = { \penalty = -10000; }
 
+major = 0
+minor = 3
+
 \include "property.ly"
 
 \include "scm.ly"
diff --git a/init/lily.scm b/init/lily.scm
index 2a66e0ff1c..ce384d2617 100644
--- a/init/lily.scm
+++ b/init/lily.scm
@@ -59,6 +59,9 @@
     (beam-ps width slope thick)
    "}"))
 
+(define 
+  (bracket o h) (empty o))
+
 (define 
   (char o n) 
   ((invoke-output o "char") n))
@@ -106,9 +109,6 @@
   (empty-tex) 
   "%\n\\empty%\n")
 
-(define 
-  (emptybar o h) (empty o))
-
 (define 
   (end-output o) 
   ((invoke-output o "end-output")))
@@ -258,9 +258,6 @@
 (define
   (repeatbar o h) (empty o))
 
-(define
-  (repeatbarstartrepeat o h) (empty o))
-
 (define 
   (rulesym o x y) 
   ((invoke-output o "rulesym") x y))
@@ -281,6 +278,9 @@
   (setbold o s) 
   ((invoke-output o "text") "bold" s))
 
+(define
+  (setdynamic o s) (empty o))
+
 (define 
   (setfinger o s) 
   ((invoke-output o "text") "finger" s))
diff --git a/init/scm.ly b/init/scm.ly
index c2c3155fb2..1d45548295 100644
--- a/init/scm.ly
+++ b/init/scm.ly
@@ -5,8 +5,5 @@
 % (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 \scm "
-; huh?
-;(append %load-path 'init)
-;(load-patch 'lily.scm)
-(load 'init/lily.scm)
+(primitive-load-path 'lily)
 ";
diff --git a/input/test/accid.fly b/input/test/accid.fly
new file mode 100644
index 0000000000..d7a7775c42
--- /dev/null
+++ b/input/test/accid.fly
@@ -0,0 +1,6 @@
+\time 3/4;
+cisis'' cisis! cisis? |
+cis cis! cis? | 
+c c! c? |
+ces ces! ces? |
+ceses ceses! ceses? |
diff --git a/input/test/keys.ly b/input/test/keys.ly
index 211c7c1e20..aa12b97e65 100644
--- a/input/test/keys.ly
+++ b/input/test/keys.ly
@@ -6,8 +6,8 @@ test key itemv breaking
 \score {
   \notes
   {
-    \key bes; c1 \key c;  c1
+    \key bes; c1 \key c \minor;  c1
     \break
-    \key bes; c1 \key d;\break c1
+    \key bes \major; c1 \key d;\break c1
   }
 }
diff --git a/input/test/time.fly b/input/test/time.fly
index 3908c4cf64..a7fd1d68b3 100644
--- a/input/test/time.fly
+++ b/input/test/time.fly
@@ -1,111 +1,113 @@
 \property Staff.timeSignatureStyle = "C"
 \time 1/1;
-c''1^"timeSignatureStyle = \"C\"" |
-\time 2/2;
-c1 |
-\time 3/4;
-c2. |
-\time 4/4;
-c1 |
-\time 5/4;
-c2. c2 |
-\time 6/4;
-c1. |
-\time 3/2;
-c1. |
-\time 7/4;
-c1 c2. |
-\time 8/4;
-c\breve |
-\time 9/4;
-c2. c2. c2. |
+c''1^"timeSignatureStyle = \"C\"" 
+\time 2/2; 
+c1 
+\time 3/4; 
+c2. 
+\time 4/4; 
+c1 
+\time 5/4; 
+c2. c2 
+\time 6/4; 
+c1. 
+\time 3/2; 
+c1. 
+\time 7/4; 
+c1 c2. 
+\time 8/4; 
+c\breve
+\time 9/4; 
+c2. c2. c2. 
 \break
 \property Staff.timeSignatureStyle = "old"
-\time 1/1;
-c1^"timeSignatureStyle = \"old\"" |
-\time 2/2;
-c1 |
-\time 3/4;
-c2. |
-\time 4/4;
-c1 |
-\time 5/4;
-c2. c2 |
-\time 6/4;
-c1. |
-\time 3/2;
-c1. |
-\time 7/4;
-c1 c2. |
-\time 8/4;
-c\breve |
-\time 9/4;
-c2. c2. c2. |
+\time 1/1; 
+c1^"timeSignatureStyle = \"old\"" 
+\time 2/2; 
+c1 
+\time 3/4; 
+c2. 
+\time 4/4; 
+c1 
+\time 5/4; 
+c2. c2 
+\time 6/4; 
+c1. 
+\time 3/2; 
+c1. 
+\time 7/4; 
+c1 c2. 
+\time 8/4; 
+c\breve 
+\time 9/4; 
+c2. c2. c2. 
 \break
 \property Staff.timeSignatureStyle = ""
-\time 1/1;
-c1^"timeSignatureStyle = \"\"" |
-\time 2/2;
-c1 |
-\time 3/4;
-c2. |
-\time 4/4;
-c1 |
-\time 5/4;
-c2. c2 |
-\time 6/4;
-c1. |
-\time 3/2;
-c1. |
-\time 7/4;
-c1 c2. |
-\time 8/4;
-c\breve |
-\time 9/4;
-c2. c2. c2. |
+\time 1/1; 
+c1^"timeSignatureStyle = \"\"" 
+\time 2/2; 
+c1
+\time 3/4; 
+c2.
+\time 4/4; 
+c1
+\time 5/4; 
+c2. c2
+\time 6/4; 
+c1.
+\time 3/2; 
+c1.
+\time 7/4; 
+c1 c2.
+\time 8/4; 
+c\breve 
+\time 9/4; 
+c2. c2. c2.
 \break
 \property Staff.timeSignatureStyle = "1"
-\time 1/1;
-c1^"timeSignatureStyle = \"1\"" |
-\time 2/2;
-c1 |
-\time 3/4;
-c2. |
-\time 4/4;
-c1 |
-\time 5/4;
-c2. c2 |
-\time 6/4;
-c1. |
-\time 3/2;
-c1. |
-\time 7/4;
-c1 c2. |
-\time 8/4;
-c\breve |
-\time 9/4;
-c2. c2. c2. |
+\time 1/1; 
+c1^"timeSignatureStyle = \"1\""
+\time 2/2; 
+c1
+\time 3/4; 
+c2.
+%{   % Error if these lines are uncommented:
+     % Line ... [0guile: Wrong type to apply: #<unknown-type (0x7f . 0x4026a148) @ 0x4026a150>
+\time 4/4; 
+c1
+%}
+\time 5/4; 
+c2. c2
+\time 6/4; 
+c1.
+\time 3/2; 
+c1.
+\time 7/4; 
+c1 c2.
+\time 8/4; 
+c\breve 
+\time 9/4; 
+c2. c2. c2. 
 \break
 \property Staff.timeSignatureStyle = "old9/4"
 \property Staff.textalignment = \center
-\time 1/1;
-c1^"old9/4" |
-\property Staff.timeSignatureStyle = "old6/4"
-\time 2/2;
-c1^"old6/4" |
+\time 1/1; 
+c1^"old9/4" 
+\property Staff.timeSignatureStyle = "old6/4" 
+\time 2/2; 
+c1^"old6/4" 
 \property Staff.timeSignatureStyle = "old3/2"
-\time 3/4;
-c2.^"old3/2" |
+\time 3/4; 
+c2.^"old3/2" 
 \property Staff.timeSignatureStyle = "old4/4"
-\time 4/4;
-c1^"old4/4" |
+\time 4/4; 
+c1^"old4/4" 
 \property Staff.timeSignatureStyle = "old2/2"
-\time 5/4;
-c2.^"old2/2" c2 |
+\time 5/4; 
+c2.^"old2/2" c2
 \property Staff.timeSignatureStyle = "C4/4"
-\time 6/4;
-c1.^"C4/4" |
+\time 6/4; 
+c1.^"C4/4" 
 \property Staff.timeSignatureStyle = "C2/2"
-\time 3/2;
-c1.^"C2/2" |
-
+\time 3/2; 
+c1.^"C2/2" 
diff --git a/lily/GNUmakefile b/lily/GNUmakefile
index e04d9f6476..9dae2238bd 100644
--- a/lily/GNUmakefile
+++ b/lily/GNUmakefile
@@ -11,11 +11,6 @@ MODULE_INCLUDES=$(depth)/lib/include $(depth)/flower/include
 
 STEPMAKE_TEMPLATES= c++ executable
 
-MODULE_LIBES=-lguile 
-
-# for the RedHat GUILE 1.3 RPM 
-MODULE_LIBES+= -lreadline -ldl 
-
 include $(depth)/make/stepmake.make 
 
 # force these: Make can't know these have to be generated in advance
diff --git a/lily/command-request.cc b/lily/command-request.cc
index 5a67560e45..9255f63cfb 100644
--- a/lily/command-request.cc
+++ b/lily/command-request.cc
@@ -322,7 +322,7 @@ Key_change_req::do_print() const
 
 Key_change_req::Key_change_req()
 {
-  minor_b_ = false;
+  modality_i_ = 0;
   ordinary_key_b_= false;
 }
 
@@ -366,7 +366,7 @@ Key_change_req::flats_i()
 bool
 Key_change_req::minor_b() const
 {
-  return minor_b_;
+  return modality_i_ == 3;
 }
 
 int
diff --git a/lily/include/command-request.hh b/lily/include/command-request.hh
index 96c010322b..c03ff6eb54 100644
--- a/lily/include/command-request.hh
+++ b/lily/include/command-request.hh
@@ -132,7 +132,7 @@ public:
 class Key_change_req  : public Command_req  {
 public:
   Array<Musical_pitch> pitch_arr_;
-  bool minor_b_;
+  int modality_i_;
   bool ordinary_key_b_;
 
   Key_change_req();
@@ -147,7 +147,6 @@ public:
   int sharps_i();
 
   void transpose (Musical_pitch  d);
-  /// is minor key?
   bool minor_b() const;
 };
 
diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh
index c4479cb567..f4c468c65e 100644
--- a/lily/include/lily-guile.hh
+++ b/lily/include/lily-guile.hh
@@ -37,6 +37,7 @@ SCM ly_quote ();
 
 #include "array.hh"
 #include "scalar.hh"
+SCM lambda_scm (String str, Array<int> args_arr);
 SCM lambda_scm (String str, Array<Real> args_arr);
 SCM lambda_scm (String str, Array<Scalar> args_arr);
 
diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh
index 1781679920..9b00615622 100644
--- a/lily/include/lookup.hh
+++ b/lily/include/lookup.hh
@@ -11,6 +11,7 @@
 #define LOOKUP_HH
 
 #include "atom.hh"
+#include "molecule.hh"
 #include "fproto.hh"
 #include "scalar.hh"
 #include "direction.hh"
@@ -29,9 +30,9 @@ public:
   Lookup (Symtables const&);
   ~Lookup ();
   
-  Atom accidental (int) const;
+  Molecule accidental (int, bool cautionary) const;
   void add (String, Symtable*);
-  Atom afm_find (String) const;
+  Atom afm_find (String, bool warn=true) const;
   Atom ball (int) const;
   Atom bar (String, Real height) const;
   Atom beam (Real, Real, Real) const;
@@ -53,8 +54,8 @@ public:
   Atom text (String style, String text) const;
   Atom vbrace (Real &dy) const;
   Atom vbracket (Real &dy) const;
-  Atom special_time_signature (String, Array<Real>) const;
-  Atom time_signature (Array<Real>) const;
+  Atom special_time_signature (String, Array<int>) const;
+  Atom time_signature (Array<int>) const;
 
   Paper_def * paper_l_;
   Symtables *symtables_p_;
diff --git a/lily/include/musical-pitch.hh b/lily/include/musical-pitch.hh
index 2c4f1a55de..a46471fd61 100644
--- a/lily/include/musical-pitch.hh
+++ b/lily/include/musical-pitch.hh
@@ -29,6 +29,8 @@ struct Musical_pitch : public Input
   int octave_i_;
   /// 0 natural, 1 sharp, etc
   int accidental_i_;
+  /// Used for cautionary accidentals
+  bool cautionary_b_;
 
   void init () ;
   Musical_pitch to_relative_octave (Musical_pitch);
diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh
index d280d158ac..3f79b0b45b 100644
--- a/lily/include/musical-request.hh
+++ b/lily/include/musical-request.hh
@@ -110,6 +110,8 @@ public:
     
   /// force/supress printing of accidental.
   bool forceacc_b_;
+  /// Cautionary, i.e. parenthesized accidental.
+  bool cautionary_b_;
   Note_req();
   bool do_equal_b (Request*) const;
   REQUESTMETHODS(Note_req);
diff --git a/lily/include/time-signature.hh b/lily/include/time-signature.hh
index 55c8133d38..a2d09022b5 100644
--- a/lily/include/time-signature.hh
+++ b/lily/include/time-signature.hh
@@ -26,7 +26,7 @@ protected:
   virtual Molecule*brew_molecule_p() const;
 public:
   Time_signature () ;
-  Array<Real> args_;
+  Array<int> args_;
   String time_sig_type_str_;
   
   DECLARE_MY_RUNTIME_TYPEINFO;
diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc
index 77a29425f5..e2152e2245 100644
--- a/lily/key-engraver.cc
+++ b/lily/key-engraver.cc
@@ -114,8 +114,7 @@ Key_engraver::read_req (Key_change_req const * r)
       else
 	{
 	  p = r->pitch_arr_[0].semitone_pitch ();
-	  if (r->minor_b ())
-	    p += 3;
+	  p += r->modality_i_;
 	}
       /* Solve the equation 7*no_of_acc mod 12 = p, -6 <= no_of_acc <= 5 */
       int no_of_acc = (7*p) % 12;
diff --git a/lily/key-item.cc b/lily/key-item.cc
index 80e470f10f..7d519d3b97 100644
--- a/lily/key-item.cc
+++ b/lily/key-item.cc
@@ -133,9 +133,8 @@ Key_item::brew_molecule_p() const
 	      || (old_pitch_arr_[i] == pitch_arr_[j]
 		  && old_acc_arr_[i] != acc_arr_[j]))
             {
-              Atom a =lookup_l ()->accidental (0);
-              a.translate_axis (calculate_position(old_pitch_arr_[i], old_acc_arr_[i]) * inter, Y_AXIS);
-              Molecule m (a);
+              Molecule m =lookup_l ()->accidental (0,false);
+              m.translate_axis (calculate_position(old_pitch_arr_[i], old_acc_arr_[i]) * inter, Y_AXIS);
               output->add_at_edge (X_AXIS, RIGHT, m);	
             }
         }
@@ -153,9 +152,8 @@ Key_item::brew_molecule_p() const
  
   for (int i =0; i < pitch_arr_.size(); i++) 
     {
-      Atom a =lookup_l ()->accidental (acc_arr_[i]);
-      a.translate_axis (calculate_position(pitch_arr_[i], acc_arr_[i]) * inter, Y_AXIS);
-      Molecule m (a);
+      Molecule m =lookup_l ()->accidental (acc_arr_[i],false);
+      m.translate_axis (calculate_position(pitch_arr_[i], acc_arr_[i]) * inter, Y_AXIS);
       output->add_at_edge (X_AXIS, RIGHT, m);	
     }
   if (pitch_arr_.size()) 
diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc
index 375ff46359..e4be912288 100644
--- a/lily/lily-guile.cc
+++ b/lily/lily-guile.cc
@@ -63,6 +63,23 @@ ly_func_o (char const* name)
 }
 #endif
 
+SCM
+lambda_scm (String str, Array<int> args_arr)
+{
+  if (str.empty_b ())
+    {
+      str = "empty";
+      args_arr.clear ();
+    }
+  SCM args_scm = SCM_EOL;
+  for (int i = args_arr.size () - 1; i >= 0; i--)
+    args_scm = gh_cons (gh_int2scm (args_arr[i]), args_scm);
+  SCM scm =
+    ly_append (ly_lambda_o (), 
+    ly_list1 (ly_append (ly_func_o (str.ch_l ()), args_scm)));
+  return scm;
+}
+
 SCM
 lambda_scm (String str, Array<Scalar> args_arr)
 {
diff --git a/lily/local-key-engraver.cc b/lily/local-key-engraver.cc
index 9b0658b647..4edb8b8746 100644
--- a/lily/local-key-engraver.cc
+++ b/lily/local-key-engraver.cc
@@ -67,6 +67,11 @@ Local_key_engraver::process_acknowledged ()
 	      key_item_p_ = new Local_key_item;
 	      announce_element (Score_element_info (key_item_p_, 0));	      
 	    }
+	  if (note_l->cautionary_b_)
+	    {
+	      note_l->pitch_.cautionary_b_ = true;
+	    }
+
 	  key_item_p_->add (note_l->pitch_);
 	  key_item_p_->add_support (support_l);
 	  local_key_.set (note_l->pitch_);
diff --git a/lily/local-key-item.cc b/lily/local-key-item.cc
index a0dc2907a6..a78ec7a371 100644
--- a/lily/local-key-item.cc
+++ b/lily/local-key-item.cc
@@ -70,10 +70,10 @@ Local_key_item::brew_molecule_p() const
       Real dy =
 	(c0_position_i_ + accidental_pitch_arr_[i].notename_i_)
 	* paper()->internote_f ();
-      Atom a (lookup_l ()->accidental (accidental_pitch_arr_[i].accidental_i_));
+      Molecule m (lookup_l ()->accidental (accidental_pitch_arr_[i].accidental_i_, 
+	      accidental_pitch_arr_[i].cautionary_b_));
 
-      a.translate_axis (dy, Y_AXIS);
-      Molecule m(a);
+      m.translate_axis (dy, Y_AXIS);
       octave_mol_p->add_at_edge (X_AXIS, RIGHT, m);
     }
 
diff --git a/lily/lookup.cc b/lily/lookup.cc
index 2ca4bdddde..8e1f4f1702 100644
--- a/lily/lookup.cc
+++ b/lily/lookup.cc
@@ -53,11 +53,20 @@ Lookup::~Lookup ()
   delete symtables_p_;
 }
 
-Atom
-Lookup::accidental (int j) const
+Molecule
+Lookup::accidental (int j, bool cautionary) const
 {
-  Atom a = afm_find (String ("accidentals") + String ("-") + to_str (j));
-  return a;
+  Molecule m(afm_find (String ("accidentals") + String ("-") + to_str (j)));
+  if (cautionary) 
+    {
+      m.add_at_edge(X_AXIS, LEFT, 
+                    Molecule(afm_find (String ("accidentals") + String ("-("))))
+;
+      m.add_at_edge(X_AXIS, RIGHT, 
+                    Molecule(afm_find (String ("accidentals") + String ("-)"))))
+;
+    }
+  return m;
 }
 
 void
@@ -67,7 +76,7 @@ Lookup::add (String s, Symtable*p)
 }
 
 Atom
-Lookup::afm_find (String s) const
+Lookup::afm_find (String s, bool warn) const
 {
   if (!afm_p_)
     {
@@ -76,7 +85,7 @@ Lookup::afm_find (String s) const
       *mlog << "]" << flush ;
       DOUT << this->afm_p_->str ();
     }
-  Adobe_font_char_metric m = afm_p_->find_char (s);
+  Adobe_font_char_metric m = afm_p_->find_char (s, warn);
 
   Atom a;
   if (m.code () < 0)
@@ -222,10 +231,11 @@ Lookup::rule_symbol (Real height, Real width) const
   Array<Real> arr;
   arr.push (height);
   arr.push (width);
-  a.lambda_ = lambda_scm (a.str_, arr);
+  a.lambda_ = (lambda_scm (a.str_, arr));
   a.str_ = "rule_symbol";
   a.dim_.x () = Interval (0, width);
   a.dim_.y () = Interval (0, height);
+  return a;
 }
 
 Atom
@@ -235,24 +245,20 @@ Lookup::script (String str) const
 }
 
 Atom
-Lookup::special_time_signature (String s, Array<Real> arr) const
+Lookup::special_time_signature (String s, Array<int> arr) const
 {
-  String symbolname = "timesig-" + s;
-  if (!arr.empty ())
-    symbolname += to_str (arr[0]);
-  if (arr.size () >1)
-    symbolname += "/" + to_str (arr[1]);
+  // First guess: s contains only the signature style
+  assert (arr.size () >1);
+  String symbolname = "timesig-" + s + to_str (arr[0]) + "/" + to_str (arr[1]);
   
-  Atom a = afm_find (symbolname);
+  Atom a = afm_find (symbolname, false);
   if (!a.empty ()) 
     return a;
 
-#if 0 //guess we covered this
-  // Try if the full name was given
-  a = afm_find ("timesig-"+s);
+  // Second guess: s contains the full signature name
+  a = afm_find ("timesig-"+s, false);
   if (!a.empty ()) 
     return a;
-#endif
 
   // Resort to default layout with numbers
   return time_signature (arr);
@@ -280,9 +286,10 @@ Lookup::stem (Real y1, Real y2) const
   arr.push (y2);
   arr.push (-y1);
 
-  a.lambda_ = lambda_scm ("stem", arr);
+  a.lambda_ = (lambda_scm ("stem", arr));
   a.str_ = "stem";
   a.font_ = font_;
+  return a;
 }
 
 Atom
@@ -291,8 +298,7 @@ Lookup::streepje (int type) const
   if (type > 2)
     type = 2;
 
-  Atom a = afm_find ("balls" + String ("-") + to_str (type) + "l");
-  return a;
+  return  afm_find ("balls" + String ("-") +to_str (type) + "l");
 }
 
 Atom
@@ -305,14 +311,18 @@ Lookup::text (String style, String text) const
   a.lambda_ = lambda_scm (a.str_, arr);
   a.str_ = "text";
   a.font_ = font_;
+  return a;
+   
 }
+  
 
 Atom
-Lookup::time_signature (Array<Real> a) const
+Lookup::time_signature (Array<int> a) const
 {
-  Atom a ((*symtables_p_) ("param")->lookup ("time_signature"));
-  a.lambda_ = lambda_scm (a.str_, arr);
-  a.str_ = "time_signature";
+  Atom s ((*symtables_p_) ("param")->lookup ("time_signature"));
+  s.lambda_ =  (lambda_scm (s.str_, a));
+
+  return s;
 }
 
 /*
@@ -330,13 +340,13 @@ Lookup::vbrace (Real &y) const
   if (y < min_y)
     {
       warning (_ ("piano brace") 
-	+ " " + _ ("too small") +  " (" + print_dimen (y) + ")");
+	       + " " + _ ("too small") +  " (" + print_dimen (y) + ")");
       y = min_y;
     }
   if (y > max_y)
     {
       warning (_ ("piano brace")
-       + " " + _ ("too big") + " (" + print_dimen (y) + ")");
+	       + " " + _ ("too big") + " (" + print_dimen (y) + ")");
       y = max_y;
     }
 
@@ -345,7 +355,7 @@ Lookup::vbrace (Real &y) const
   
   Array<Real> arr;
   arr.push (idx);
-  a.lambda_ = lambda_scm (a.str_, arr);
+  a.lambda_ = (lambda_scm (a.str_, arr));
   a.str_ = "brace";
   a.dim_[Y_AXIS] = Interval (-y/2,y/2);
   a.font_ = font_;
@@ -359,7 +369,7 @@ Lookup::hairpin (Real width, bool decresc, bool continued) const
   Real height = paper_l_->staffheight_f () / 6;
   String ps;
   ps += to_str (width) + " " 
-	+ to_str (height) + " " 
+    + to_str (height) + " " 
     + to_str (continued ? height/2 : 0) + 
     + " draw_"  + String (decresc ? "de" : "") + "cresc\n";
   a.str_ = ps;
@@ -400,18 +410,18 @@ Lookup::slur (Array<Offset> controls) const
  
   // (lambda (o) (slur o '((0.1 0.2) (1.1 1.2) (2.1 2.2) (3.1 3.2) .. )))
   a.lambda_ =  (
-    ly_append (ly_lambda_o (), 
-    ly_list1 (ly_append (ly_func_o ("slur"),
-    ly_list1 (ly_list2 (ly_quote (),
-    gh_cons (ly_list2 (gh_double2scm (controls[5].x ()), gh_double2scm (controls[5].y ())),
-    gh_cons (ly_list2 (gh_double2scm (controls[6].x ()), gh_double2scm (controls[6].y ())),
-    gh_cons (ly_list2 (gh_double2scm (controls[7].x ()), gh_double2scm (controls[7].y ())),
-    gh_cons (ly_list2 (gh_double2scm (controls[4].x ()), gh_double2scm (controls[4].y ())),
-    gh_cons (ly_list2 (gh_double2scm (controls[1].x ()), gh_double2scm (controls[1].y ())),
-    gh_cons (ly_list2 (gh_double2scm (controls[2].x ()), gh_double2scm (controls[2].y ())),
-    gh_cons (ly_list2 (gh_double2scm (controls[3].x ()), gh_double2scm (controls[3].y ())),
-    gh_cons (ly_list2 (gh_double2scm (controls[0].x ()), gh_double2scm (controls[0].y ())),
-    SCM_EOL))))))))))))));
+		ly_append (ly_lambda_o (), 
+			   ly_list1 (ly_append (ly_func_o ("slur"),
+						ly_list1 (ly_list2 (ly_quote (),
+								    gh_cons (ly_list2 (gh_double2scm (controls[5].x ()), gh_double2scm (controls[5].y ())),
+									     gh_cons (ly_list2 (gh_double2scm (controls[6].x ()), gh_double2scm (controls[6].y ())),
+										      gh_cons (ly_list2 (gh_double2scm (controls[7].x ()), gh_double2scm (controls[7].y ())),
+											       gh_cons (ly_list2 (gh_double2scm (controls[4].x ()), gh_double2scm (controls[4].y ())),
+													gh_cons (ly_list2 (gh_double2scm (controls[1].x ()), gh_double2scm (controls[1].y ())),
+														 gh_cons (ly_list2 (gh_double2scm (controls[2].x ()), gh_double2scm (controls[2].y ())),
+															  gh_cons (ly_list2 (gh_double2scm (controls[3].x ()), gh_double2scm (controls[3].y ())),
+																   gh_cons (ly_list2 (gh_double2scm (controls[0].x ()), gh_double2scm (controls[0].y ())),
+																	    SCM_EOL))))))))))))));
   a.str_ = "slur";
 
   a.dim_[X_AXIS] = Interval (0, dx);
@@ -428,8 +438,8 @@ Lookup::vbracket (Real &y) const
   if (y < min_y)
     {
       warning (_ ("bracket")
-	+ " " + _ ("too small") +  " (" + print_dimen (y) + ")");
-//      y = min_y;
+	       + " " + _ ("too small") +  " (" + print_dimen (y) + ")");
+      //      y = min_y;
     }
   Array<Real> arr;
   arr.push (y);
diff --git a/lily/midi-walker.cc b/lily/midi-walker.cc
index 90477a3009..1af44cd1fb 100644
--- a/lily/midi-walker.cc
+++ b/lily/midi-walker.cc
@@ -111,7 +111,7 @@ Midi_walker::process()
     return;
   p->channel_i_ = track_l_->number_i_;
   
-  if (Midi_item *mi = dynamic_cast<Midi_note*>(p))
+  if (Midi_note *mi = dynamic_cast<Midi_note*>(p))
     do_start_note (mi);
   else
     output_event (ptr()->audio_column_l_->at_mom (), p);
diff --git a/lily/musical-pitch.cc b/lily/musical-pitch.cc
index e7ffbd7014..9603e025d9 100644
--- a/lily/musical-pitch.cc
+++ b/lily/musical-pitch.cc
@@ -21,6 +21,7 @@ Musical_pitch::init ()
   notename_i_ = 0;
   octave_i_ = 0;
   accidental_i_ = 0;
+  cautionary_b_ = false;
 }
 
 void
diff --git a/lily/musical-request.cc b/lily/musical-request.cc
index c12cd16c29..4538a1d3b2 100644
--- a/lily/musical-request.cc
+++ b/lily/musical-request.cc
@@ -185,6 +185,7 @@ Note_req::do_equal_b (Request*r) const
 
 Note_req::Note_req ()
 {
+  cautionary_b_ = false;
   forceacc_b_ = false;
 }
 
@@ -195,7 +196,11 @@ Note_req::do_print () const
 {
 #ifndef NPRINT
   Melodic_req::do_print ();
-  if (forceacc_b_)
+  if (cautionary_b_)
+    {
+	DOUT << " force cautionary accidental\n";
+    }
+  else if (forceacc_b_)
     {
 	DOUT << " force accidental\n";
     }
diff --git a/lily/parser.yy b/lily/parser.yy
index bc0680a301..72e14708f5 100644
--- a/lily/parser.yy
+++ b/lily/parser.yy
@@ -248,6 +248,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <i>	abbrev_type
 %type <i>	int unsigned
 %type <i>	script_dir
+%type <i>	optional_modality
 %type <id>	identifier_init simple_identifier_init block_identifier
 %type <duration> steno_duration notemode_duration
 %type <duration> entered_notemode_duration explicit_duration
@@ -910,10 +911,11 @@ verbose_command_req:
 		$$ = new Clef_change_req (*$2);
 		delete $2;
 	}
-	| KEY NOTENAME_PITCH 	{
+	| KEY NOTENAME_PITCH optional_modality	{
 		Key_change_req *key_p= new Key_change_req;
 		key_p->pitch_arr_.push(*$2);
 		key_p->ordinary_key_b_ = true;
+		key_p->modality_i_ = $3;
 		$$ = key_p;
 		delete $2;
 	}
@@ -970,6 +972,15 @@ post_request:
 	}
 	;
 
+optional_modality:
+	/* empty */	{
+		$$ = 0;
+	}
+	| int	{
+		$$ = $1;
+	}
+	;
+
 sup_quotes:
 	'\'' {
 		$$ = 1;
@@ -1028,6 +1039,10 @@ steno_notepitch:
 	| steno_notepitch  '!' 		{
 		$$->forceacc_b_ = ! $$->forceacc_b_;
 	}
+	| steno_notepitch  '?' 		{
+		$$->forceacc_b_ = ! $$->forceacc_b_;
+		$$->cautionary_b_ = ! $$->cautionary_b_;
+	}
 	;
 
 
diff --git a/lily/time-signature-engraver.cc b/lily/time-signature-engraver.cc
index 35743ad24f..a5ff8b4595 100644
--- a/lily/time-signature-engraver.cc
+++ b/lily/time-signature-engraver.cc
@@ -35,7 +35,7 @@ Time_signature_engraver::do_process_requests()
   Time_signature_change_req *req = timing_grav_l->time_signature_req_l();
   if (req)
     {
-      Array<Real> args;
+      Array<int> args;
       args.push (req->beats_i_);
       args.push (req->one_beat_i_);
 	
diff --git a/lily/time-signature.cc b/lily/time-signature.cc
index edee3d9fbe..a1330d55a4 100644
--- a/lily/time-signature.cc
+++ b/lily/time-signature.cc
@@ -26,7 +26,7 @@ Time_signature::brew_molecule_p () const
     {
       if (time_sig_type_str_[0]=='1')
 	{
-	  Array<Real> tmparr = args_;
+	  Array<int> tmparr = args_;
 	  tmparr[1]= 0;
 	  s = lookup_l ()->time_signature (tmparr);
 	}
diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm
index c13526cc6c..de547727a1 100644
--- a/make/out/lelievijver.lsm
+++ b/make/out/lelievijver.lsm
@@ -1,15 +1,15 @@
 Begin3
 Titel: LilyPond
-Versie: 1.1.1
-Inschrijf datum: 02NOV98
+Versie: 1.1.2
+Inschrijf datum: 03NOV98
 Beschrijving: @FLAPTEKST@
 Trefwoorden: muziek typezetten midi notatie
 Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
 	janneke@gnu.org (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-	770k lilypond-1.1.1.tar.gz 
+	770k lilypond-1.1.2.tar.gz 
 Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-	770k lilypond-1.1.1.tar.gz 
+	770k lilypond-1.1.2.tar.gz 
 Copi-eer voorwaarden: GPL
 End
diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm
index a569d897c2..55d5911d45 100644
--- a/make/out/lilypond.lsm
+++ b/make/out/lilypond.lsm
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 1.1.1
-Entered-date: 02NOV98
+Version: 1.1.2
+Entered-date: 03NOV98
 Description: 
 LilyPond is the GNU Project music typesetter.  This program can print
 beautiful sheet music from a music definition file.  It can also play
@@ -14,8 +14,8 @@ Author: hanwen@cs.ruu.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
-	770k lilypond-1.1.1.tar.gz 
+	770k lilypond-1.1.2.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-	770k lilypond-1.1.1.tar.gz 
+	770k lilypond-1.1.2.tar.gz 
 Copying-policy: GPL
 End
diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec
index 2eff8ff87e..dfbd3516c9 100644
--- a/make/out/lilypond.spec
+++ b/make/out/lilypond.spec
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.1.1
+Version: 1.1.2
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.1.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.2.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
diff --git a/mf/feta-toevallig.mf b/mf/feta-toevallig.mf
index b9c9a0ebbe..d4f94c5362 100644
--- a/mf/feta-toevallig.mf
+++ b/mf/feta-toevallig.mf
@@ -247,7 +247,38 @@ fet_beginchar("Double sharp", "2", "sharpsharp")
 	currentpicture := currentpicture  shifted (w/2,0);
 
 
-	fet_endchar;
+
+fet_endchar;
+
+
+def draw_paren =
+  	save leftindent;
+	leftindent# := .2 interline#;
+	define_pixels(leftindent);
+  	set_char_box(0, .5 interline#+stafflinethickness#,
+	  interline#, interline#);
+	z1 = (leftindent,h);
+	z2 = (w-stafflinethickness,0);
+	z3 = (leftindent,-d);
+
+	penpos1(stafflinethickness, 35);
+	penpos2(2 stafflinethickness, 0);
+	penpos3(stafflinethickness, -35);
+
+	penlabels(1,2,3);
+	fill z2l{down} .. simple_serif(z3l, z3r, 90) ..	z2r{up}
+	.. simple_serif(z1r, z1l, 90) .. z2l{down} -- cycle;
+enddef;
+  
+fet_beginchar("Right paranthesis", ")", "rightparen")
+	draw_paren;
+fet_endchar;
+
+fet_beginchar("Left paranthesis", "(", "leftparen")
+	draw_paren;
+        currentpicture := currentpicture xscaled -1;
+        set_char_box(charwd, charbp, chardp, charht);
+fet_endchar;
 
 
 fet_endgroup("accidentals");
diff --git a/mutopia/gallina.ly b/mutopia/gallina.ly
index b693616337..ffaa8941cd 100644
--- a/mutopia/gallina.ly
+++ b/mutopia/gallina.ly
@@ -29,8 +29,8 @@ either.
 
       /Mats
 
-
-Tested Features: Note placement, multipart score, figured base, \breve
+Tested Features: Note placement, multipart score, figured base, \breve,
+	time signature styles
 
 %}
 %{
@@ -47,8 +47,28 @@ definition below. --MB
 
 \version "1.0.7";
 
-vi1=\notes \relative c'' {
+global = \notes {
+  \property StaffGroup.timeSignatureStyle = "old"
+  \time 4/4;
+  \tempo 4=80;
+  \skip 1*31;
+  \property StaffGroup.timeSignatureStyle = "1"
+  \time 3/2;
+  \bar ":|:";
+  \tempo 2=140;
+  \skip 1.*15;
+  \property StaffGroup.timeSignatureStyle = "old"
   \time 4/4;
+  \tempo 4=80;
+  \skip 1;
+  \bar ":|:";
+  \skip 1*13;
+  \bar "|.";
+}
+
+vi1=\type Staff = vi1 <
+\global
+\notes \relative c'' {
 
   [d8 d d d] d4 [a16 b c a] |
   [b8 g ][ g g16 a][ b8 g ][ g g16 a] | 
@@ -80,9 +100,8 @@ vi1=\notes \relative c'' {
   [c8 g ][ g g16 f] e4 d |
   r8 g [g g16 f] e4 d |
   r8 [d16 a ][ b8 b16 c] a2 |
-  b1 |
-  \time 3/2;
-  \tempo 2=140;
+  b1 | 
+
   r4 d d d d d |
   e1. |
   r4 c c c c c |
@@ -98,8 +117,7 @@ vi1=\notes \relative c'' {
   a4 [c8 b] a4 [b8 c] f,4 [g8 a] |
   d,4 g g g g g |
   a [d,8 c] b4 [c8 d] a2 |
-  \time 4/4;
-  \tempo 4=80;
+
   b1 |
   [d8 d d d] d4 [a16 b c a] |
   [b8 g ][ g g16 a] [b8 g ][ g g16 a] | 
@@ -114,11 +132,11 @@ vi1=\notes \relative c'' {
   fis4 g2 fis!4 |
   \cadenza 1;
   g\breve
-  \bar "|.";
-}
+}>
 
-vi2=\notes \relative c'' {
-  \time 4/4;
+vi2=\type Staff = vi2 <
+\global
+\notes \relative c'' {
 
   r1 | r | r | 
   [d8 d d d] d4 [a16 b c a] |
@@ -149,7 +167,7 @@ vi2=\notes \relative c'' {
   e4 d r8 [c16 g ][ b8 b16 c] |
   a4 g2 fis4 |
   g1 |
-  \time 3/2;
+
   r1. |
   r4 [g'8 f] e4 [f8 g] c,4 [d8 e] |
   a,1. |
@@ -165,7 +183,7 @@ vi2=\notes \relative c'' {
   c,4 a a a a a |
   b [d8 c] b4 [c8 d] d,4 e |
   fis2 g fis! |
-  \time 4/4;
+
   g1 |
   r1 | r1 |
   [g'8 g g g] g4 [d16 e f d] |
@@ -179,13 +197,13 @@ vi2=\notes \relative c'' {
   [a d c b ][ a g fis e] d4 d' |
   \cadenza 1;
   b\breve
-  \bar "|.";
-}
+}>
 
 
-bc=\notes\transpose c'{
+bc=\type Staff = bc <
+\global
+\notes\transpose c'{
   \clef "bass";
-  \time 4/4;
 
   G2 d^"4 3" | G1 |
   g2 c4 G | d1^"3 4 3" |
@@ -203,7 +221,7 @@ bc=\notes\transpose c'{
   G1^"3 4 3" | c4 B c g |
   c B c G | d1^"3 4 3" |
   G1 |
-  \time 3/2;
+
   g1. | c |
   f | d^"\\textsharp" |
   g | c |
@@ -212,8 +230,9 @@ bc=\notes\transpose c'{
   d^"\\textsharp" | e |
   f | g1 B2 |
   d1.^"3 4 3" |
-  \time 4/4;
+
   G1 |
+  \bar ":|:";
   g2 fis | g G |
   g1^"3 4 3" | c |
   G^"3 4 3" | c2 G |
@@ -222,12 +241,10 @@ bc=\notes\transpose c'{
   ) d^"3 4 3" | 
   \cadenza 1;
   G\breve 
-  \bar "|.";
-}
+}>
 
 \score{
   \type StaffGroup <
-    \property StaffGroup.timeSignatureStyle = "old"
     \vi1
     \vi2
     \bc
diff --git a/scripts/ly2dvi.py b/scripts/ly2dvi.py
index 287fa5ad21..bdf89706bf 100644
--- a/scripts/ly2dvi.py
+++ b/scripts/ly2dvi.py
@@ -876,7 +876,8 @@ class Properties:
 def getLilyopts():
     inc = ''	
     if len(Props.get('include')) > 0: 
-        inc = '-I ' + string.join(Props.get('include'),os.pathsep)
+#        inc = '-I ' + string.join(Props.get('include'),os.pathsep)
+        inc = '-I ' + string.join(Props.get('include'), ' -I ')
     else:
 
         if Props.get('dependencies'):
diff --git a/stepmake/stepmake/tex-rules.make b/stepmake/stepmake/tex-rules.make
index fa98675682..da6762647f 100644
--- a/stepmake/stepmake/tex-rules.make
+++ b/stepmake/stepmake/tex-rules.make
@@ -1,4 +1,6 @@
 
+$(outdir)/%.tex: %.tex
+	$(LN) $< $@
 
 $(outdir)/%.dvi: $(outdir)/%.tex
 	(cd $(outdir); tex \\nonstopmode \\input $(<F))
diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex
index 38ea9553e8..4312a117a8 100644
--- a/tex/lilyponddefs.tex
+++ b/tex/lilyponddefs.tex
@@ -165,7 +165,7 @@
 
 %compatibility
 %urg
-\fetdef\repeatcolon{18}
+\fetdef\repeatcolon{20}
 \def\repeatbar{\repeatstopbar}
 \def\startrepeat{\repeatstartbar}
 \def\repeatbarstartrepeat{\repeatstopstart}
-- 
2.39.5