CVSROOT:        /cvsroot/lilypond
Module name:    lilypond
Branch:         
Changes by:     Han-Wen Nienhuys <[EMAIL PROTECTED]>    05/09/26 23:25:59

Modified files:
        .              : ChangeLog 
        Documentation/user: advanced-notation.itely invoking.itely 
                            programming-interface.itely 
        lily           : grob-scheme.cc lexer.ll paper-book.cc 
                         paper-column-engraver.cc paper-column.cc 
                         paper-system-scheme.cc paper-system.cc 
                         parser.yy score-engraver.cc system.cc 
        lily/include   : paper-system.hh 
        ly             : engraver-init.ly music-functions-init.ly 
        python         : convertrules.py 
        scm            : define-grob-properties.scm safe-lily.scm 

Log message:
        * lily/paper-system.cc (read_left_bound): new function. Read
        line-break-system-details from left bound to determine extents.
        
        * Documentation/user/programming-interface.itely (Using LilyPond
        syntax inside Scheme): change applyxxx -> applyXxx.
        
        * ly/music-functions-init.ly: add outputProperty music function.
        
        * lily/parser.yy (Generic_prefix_music_scm): add scm-scm-scm signature.
        
        * lily/grob-scheme.cc (LY_DEFINE): add ! to ly:grob-suicide! name.
        
        * python/convertrules.py (conv): rule
        
        * ly/music-functions-init.ly: applyxxx -> applyXxx
        
        * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): alias
        TabVoice to Voice.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.4134&tr2=1.4135&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/Documentation/user/advanced-notation.itely.diff?tr1=1.62&tr2=1.63&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/Documentation/user/invoking.itely.diff?tr1=1.45&tr2=1.46&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/Documentation/user/programming-interface.itely.diff?tr1=1.44&tr2=1.45&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/grob-scheme.cc.diff?tr1=1.52&tr2=1.53&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/lexer.ll.diff?tr1=1.174&tr2=1.175&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/paper-book.cc.diff?tr1=1.115&tr2=1.116&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/paper-column-engraver.cc.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/paper-column.cc.diff?tr1=1.83&tr2=1.84&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/paper-system-scheme.cc.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/paper-system.cc.diff?tr1=1.17&tr2=1.18&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/parser.yy.diff?tr1=1.489&tr2=1.490&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/score-engraver.cc.diff?tr1=1.154&tr2=1.155&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/system.cc.diff?tr1=1.119&tr2=1.120&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/paper-system.hh.diff?tr1=1.10&tr2=1.11&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ly/engraver-init.ly.diff?tr1=1.249&tr2=1.250&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ly/music-functions-init.ly.diff?tr1=1.37&tr2=1.38&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/python/convertrules.py.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-grob-properties.scm.diff?tr1=1.121&tr2=1.122&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/safe-lily.scm.diff?tr1=1.35&tr2=1.36&r1=text&r2=text

Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.4134 lilypond/ChangeLog:1.4135
--- lilypond/ChangeLog:1.4134   Mon Sep 26 12:05:42 2005
+++ lilypond/ChangeLog  Mon Sep 26 23:25:57 2005
@@ -1,3 +1,24 @@
+2005-09-27  Han-Wen Nienhuys  <[EMAIL PROTECTED]>
+
+       * lily/paper-system.cc (read_left_bound): new function. Read
+       line-break-system-details from left bound to determine extents.
+ 
+       * Documentation/user/programming-interface.itely (Using LilyPond
+       syntax inside Scheme): change applyxxx -> applyXxx.
+
+       * ly/music-functions-init.ly: add outputProperty music function.
+
+       * lily/parser.yy (Generic_prefix_music_scm): add scm-scm-scm signature.
+
+       * lily/grob-scheme.cc (LY_DEFINE): add ! to ly:grob-suicide! name.
+
+       * python/convertrules.py (conv): rule
+
+       * ly/music-functions-init.ly: applyxxx -> applyXxx
+
+       * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): alias
+       TabVoice to Voice.
+
 2005-09-26  Han-Wen Nienhuys  <[EMAIL PROTECTED]>
 
        * flower/include/real.hh: include <math.h> iso. <cmath>
Index: lilypond/Documentation/user/advanced-notation.itely
diff -u lilypond/Documentation/user/advanced-notation.itely:1.62 
lilypond/Documentation/user/advanced-notation.itely:1.63
--- lilypond/Documentation/user/advanced-notation.itely:1.62    Thu Sep  8 
06:54:45 2005
+++ lilypond/Documentation/user/advanced-notation.itely Mon Sep 26 23:25:58 2005
@@ -1899,7 +1899,7 @@
 
 @lilypond[quote,verbatim,fragment,raggedright,relative=2]
 \context Voice {
-  \applyoutput
+  \applyOutput
     #(add-balloon-text 'NoteHead "heads, or tails?"
     '(1 . -3))
   c8
@@ -2321,7 +2321,7 @@
 @cindex automatic beams, tuning
 @cindex tuning automatic beaming
 
[EMAIL PROTECTED] [TODO: use \applycontext]
[EMAIL PROTECTED] [TODO: use \applyContext]
 
 In normal time signatures, automatic beams can start on any note but can
 only end in a few positions within the measure: beams can end on a beat,
Index: lilypond/Documentation/user/invoking.itely
diff -u lilypond/Documentation/user/invoking.itely:1.45 
lilypond/Documentation/user/invoking.itely:1.46
--- lilypond/Documentation/user/invoking.itely:1.45     Sun Sep 25 07:52:48 2005
+++ lilypond/Documentation/user/invoking.itely  Mon Sep 26 23:25:58 2005
@@ -488,7 +488,7 @@
  \magnify isn't changed to \fontsize.
     - \magnify #m => \fontsize #f, where f = 6ln(m)/ln(2)
  remove-tag isn't changed.
-    - \applymusic #(remove-tag '. . .) => \keepWithTag #'. . .
+    - \applyMusic #(remove-tag '. . .) => \keepWithTag #'. . .
  firstpagenumber isn't changed.
     - firstpagenumber no => printfirstpagenumber = ##f
  Line breaks in header strings aren't converted.
Index: lilypond/Documentation/user/programming-interface.itely
diff -u lilypond/Documentation/user/programming-interface.itely:1.44 
lilypond/Documentation/user/programming-interface.itely:1.45
--- lilypond/Documentation/user/programming-interface.itely:1.44        Thu Sep 
 8 06:54:44 2005
+++ lilypond/Documentation/user/programming-interface.itely     Mon Sep 26 
23:25:58 2005
@@ -161,11 +161,11 @@
 
 Such syntax can also be defined as user code.  To do this, it is
 necessary to create a @emph{music function}.  This is a specially marked
-Scheme function.  For example, the music function @code{\applymusic} applies
+Scheme function.  For example, the music function @code{\applyMusic} applies
 a user-defined function to a music expression.  Its syntax is
 
 @example
-\applymusic [EMAIL PROTECTED] @var{music}
+\applyMusic [EMAIL PROTECTED] @var{music}
 @end example
 
 A music function is created with @code{ly:make-music-function},
@@ -174,7 +174,7 @@
 (ly:make-music-function
 @end example
 
[EMAIL PROTECTED] takes a Scheme function and a Music expression as
[EMAIL PROTECTED] takes a Scheme function and a Music expression as
 arguments.  This is encoded in its parameter list,
 
 @example
@@ -192,10 +192,10 @@
 @end example
 
 The above Scheme code only defines the functionality.  The tag
[EMAIL PROTECTED] is selected by defining
[EMAIL PROTECTED] is selected by defining
 
 @example
-applymusic = #(ly:make-music-function
+applyMusic = #(ly:make-music-function
                 (list procedure? ly:music?)
                 (lambda (parser location func music)
                   (func music)))
@@ -206,12 +206,12 @@
 functions:
 
 @example
-applymusic = #(def-music-function (parser location func music)
+applyMusic = #(def-music-function (parser location func music)
                 (procedure? ly:music?)
                 (func music))
 @end example
 
-Examples of the use of @code{\applymusic} are in the next section.
+Examples of the use of @code{\applyMusic} are in the next section.
 
 @seealso
 @file{ly/@/music@/-functions@/-init@/.ly}.
@@ -220,10 +220,10 @@
 @subsection Manipulating music expressions
 
 Music objects and their properties can be accessed and manipulated
-directly, through the @code{\applymusic} mechanism.
-The syntax for @code{\applymusic} is
+directly, through the @code{\applyMusic} mechanism.
+The syntax for @code{\applyMusic} is
 @example
-\applymusic [EMAIL PROTECTED] @var{music}
+\applyMusic [EMAIL PROTECTED] @var{music}
 @end example
 
 @noindent
@@ -241,7 +241,7 @@
     (reverse (ly:music-property m 'elements)))
   m)
 
-\applymusic #rev-music-1 { c'4 d'4 } 
+\applyMusic #rev-music-1 { c'4 d'4 } 
 @end lilypond
 
 The use of such a function is very limited.  The effect of this
@@ -249,13 +249,13 @@
 multiple children.  The following function application has no effect
 
 @example
-\applymusic #rev-music-1 \grace @{ c4 d4 @}
+\applyMusic #rev-music-1 \grace @{ c4 d4 @}
 @end example
 
 @noindent
 In this case, @code{\grace} is stored as @internalsref{GraceMusic}, which
 has no @code{elements}, only a single @code{element}.  Every generally
-applicable function for @code{\applymusic} must -- like music expressions
+applicable function for @code{\applyMusic} must -- like music expressions
 themselves -- be recursive.
 
 The following example is such a recursive function: It first extracts
@@ -295,7 +295,7 @@
    \context Voice = "2" @{ \voiceTwo b @} >>
 @end example
 
-Other applications of @code{\applymusic} are writing out repeats
+Other applications of @code{\applyMusic} are writing out repeats
 automatically (@inputfileref{input/@/test,unfold@/-all@/-repeats@/.ly}),
 saving keystrokes (@inputfileref{input/@/test,music@/-box@/.ly}) and
 exporting LilyPond input to other formats
@@ -402,7 +402,7 @@
 
 {
   c'^"1"
-  \applymusic #(with-padding 3) { c'^"2" c'^"3" }
+  \applyMusic #(with-padding 3) { c'^"2" c'^"3" }
   c'^"4"
 }
 @end lilypond
@@ -720,12 +720,12 @@
 @subsection Context evaluation
 
 @cindex calling code during interpreting
[EMAIL PROTECTED] @code{\applycontext}
[EMAIL PROTECTED] @code{\applyContext}
 
 Contexts can be modified during interpretation with Scheme code.  The
 syntax for this is
 @example
-\applycontext @var{function}
+\applyContext @var{function}
 @end example
 
 @var{function} should be a Scheme function taking a single argument,
@@ -733,7 +733,7 @@
 current bar number on the standard output during the compile:
 
 @example
-\applycontext
+\applyContext
   #(lambda (x)
     (format #t "\nWe were called in barnumber ~a.\n"
      (ly:context-property x 'currentBarNumber)))
Index: lilypond/lily/grob-scheme.cc
diff -u lilypond/lily/grob-scheme.cc:1.52 lilypond/lily/grob-scheme.cc:1.53
--- lilypond/lily/grob-scheme.cc:1.52   Sat Aug 13 21:35:23 2005
+++ lilypond/lily/grob-scheme.cc        Mon Sep 26 23:25:58 2005
@@ -186,7 +186,7 @@
   return s;
 }
 
-LY_DEFINE (ly_grob_suicide, "ly:grob-suicide",
+LY_DEFINE (ly_grob_suicide_x, "ly:grob-suicide!",
           1, 0, 0, (SCM g),
           "Kill @var{g}.")
 {
Index: lilypond/lily/include/paper-system.hh
diff -u lilypond/lily/include/paper-system.hh:1.10 
lilypond/lily/include/paper-system.hh:1.11
--- lilypond/lily/include/paper-system.hh:1.10  Tue Aug 16 15:47:41 2005
+++ lilypond/lily/include/paper-system.hh       Mon Sep 26 23:25:59 2005
@@ -29,11 +29,12 @@
   int number_;
 
   Paper_system (Stencil, bool);
-
+  void read_left_bound (Item*);
   Stencil to_stencil () const;
   SCM stencils () const;
   bool is_title () const;
   Real break_before_penalty () const;
+  Interval staff_refpoints () const;
 };
 
 DECLARE_UNSMOB (Paper_system, paper_system);
Index: lilypond/lily/lexer.ll
diff -u lilypond/lily/lexer.ll:1.174 lilypond/lily/lexer.ll:1.175
--- lilypond/lily/lexer.ll:1.174        Mon Sep 12 12:46:48 2005
+++ lilypond/lily/lexer.ll      Mon Sep 26 23:25:58 2005
@@ -518,7 +518,7 @@
                        else if (tag == ly_symbol2scm 
("scheme0-scheme1-scheme2"))
                                return MARKUP_HEAD_SCM0_SCM1_SCM2;
                        else {
-                               programming_error ("no parser tag defined for 
this signature"); 
+                               programming_error ("no parser tag defined for 
this markup signature"); 
                                ly_display_scm (s);
                                assert(false);
                        }
@@ -919,6 +919,10 @@
        else if (type == ly_symbol2scm ("scm-scm-music"))
        {
                return MUSIC_FUNCTION_SCM_SCM_MUSIC;
+       }
+       else if (type == ly_symbol2scm ("scm-scm-scm"))
+       {
+               return MUSIC_FUNCTION_SCM_SCM_SCM;
        }
        else if (type == ly_symbol2scm ("markup"))
        {
Index: lilypond/lily/paper-book.cc
diff -u lilypond/lily/paper-book.cc:1.115 lilypond/lily/paper-book.cc:1.116
--- lilypond/lily/paper-book.cc:1.115   Sat Aug 20 23:20:18 2005
+++ lilypond/lily/paper-book.cc Mon Sep 26 23:25:58 2005
@@ -321,6 +321,7 @@
          Paper_system *ps = new Paper_system (*unsmob_stencil (t), true);
          systems_ = scm_cons (ps->self_scm (), systems_);
          ps->unprotect ();
+         
          // FIXME: figure out penalty.
          //set_system_penalty (ps, scores_[i].header_);
        }
Index: lilypond/lily/paper-column-engraver.cc
diff -u lilypond/lily/paper-column-engraver.cc:1.9 
lilypond/lily/paper-column-engraver.cc:1.10
--- lilypond/lily/paper-column-engraver.cc:1.9  Sat Aug 13 21:35:22 2005
+++ lilypond/lily/paper-column-engraver.cc      Mon Sep 26 23:25:58 2005
@@ -214,7 +214,13 @@
                "Score_engraver::forbid_breaks to stop linebreaks.  In 
practice, this "
                "means that you can make a breakpoint by creating a barline 
(assuming "
                "that there are no beams or notes that prevent a breakpoint.) ",
-               /* create */ "PaperColumn NonMusicalPaperColumn",
+               
+               /* create */
+               "PaperColumn "
+               "NonMusicalPaperColumn",
+               
                /* accept */ "break-event",
                /* read */ "",
-               /* write */ "currentCommandColumn currentMusicalColumn");
+               /* write */
+               "currentCommandColumn "
+               "currentMusicalColumn");
Index: lilypond/lily/paper-column.cc
diff -u lilypond/lily/paper-column.cc:1.83 lilypond/lily/paper-column.cc:1.84
--- lilypond/lily/paper-column.cc:1.83  Mon Aug 15 13:07:32 2005
+++ lilypond/lily/paper-column.cc       Mon Sep 26 23:25:58 2005
@@ -26,29 +26,6 @@
   return new Paper_column (*this, count);
 }
 
-ADD_INTERFACE (Paper_column, "paper-column-interface",
-              "@code{Paper_column} objects form the top-most X-parents for 
items."
-              "  The are two types of columns: musical columns, where are 
attached to, and "
-              "  non-musical columns, where bar-lines, clefs etc. are attached 
to. "
-              "  The spacing engine determines the X-positions of these 
objects."
-              
-              "\n\n"
-              "They are\n"
-              "  numbered, the first (leftmost) is column 0. Numbering happens 
before\n"
-              "  line-breaking, and columns are not renumbered after line 
breaking.\n"
-              "  Since many columns go unused, you should only use the rank 
field to\n"
-              "  get ordering information.  Two adjacent columns may have\n"
-              "  non-adjacent numbers.\n",
-              
-              
-              "between-cols "
-              "bounded-by-me "
-              "page-penalty "
-              "shortest-playing-duration "
-              "shortest-starter-duration "
-              "used "
-              "when ");
-
 void
 Paper_column::do_break_processing ()
 {
@@ -194,3 +171,32 @@
 
   return SCM_UNSPECIFIED;
 }
+
+
+ADD_INTERFACE (Paper_column,
+
+              "paper-column-interface",
+              "@code{Paper_column} objects form the top-most X-parents for 
items."
+              "  The are two types of columns: musical columns, where are 
attached to, and "
+              "  non-musical columns, where bar-lines, clefs etc. are attached 
to. "
+              "  The spacing engine determines the X-positions of these 
objects."
+              
+              "\n\n"
+              "They are\n"
+              "  numbered, the first (leftmost) is column 0. Numbering happens 
before\n"
+              "  line-breaking, and columns are not renumbered after line 
breaking.\n"
+              "  Since many columns go unused, you should only use the rank 
field to\n"
+              "  get ordering information.  Two adjacent columns may have\n"
+              "  non-adjacent numbers.\n",
+              
+
+              /* properties */
+              "between-cols "
+              "bounded-by-me "
+              "line-break-system-details "
+              "page-penalty "
+              "shortest-playing-duration "
+              "shortest-starter-duration "
+              "used "
+              "when ");
+
Index: lilypond/lily/paper-system-scheme.cc
diff -u lilypond/lily/paper-system-scheme.cc:1.4 
lilypond/lily/paper-system-scheme.cc:1.5
--- lilypond/lily/paper-system-scheme.cc:1.4    Sun Jul 24 19:31:02 2005
+++ lilypond/lily/paper-system-scheme.cc        Mon Sep 26 23:25:58 2005
@@ -61,6 +61,6 @@
 {
   Paper_system *ps = unsmob_paper_system (system);
   SCM_ASSERT_TYPE (ps, system, SCM_ARG1, __FUNCTION__, "paper-system");
-  return ly_interval2scm (ps->staff_refpoints_);
+  return ly_interval2scm (ps->staff_refpoints ());
 }
 
Index: lilypond/lily/paper-system.cc
diff -u lilypond/lily/paper-system.cc:1.17 lilypond/lily/paper-system.cc:1.18
--- lilypond/lily/paper-system.cc:1.17  Wed Mar 16 19:19:15 2005
+++ lilypond/lily/paper-system.cc       Mon Sep 26 23:25:58 2005
@@ -7,8 +7,7 @@
 */
 
 #include "paper-system.hh"
-
-#include "virtual-methods.hh"
+#include "item.hh"
 
 #include "ly-smobs.icc"
 
@@ -69,4 +68,41 @@
 Paper_system::to_stencil () const
 {
   return stencil_;
+}
+
+void
+Paper_system::read_left_bound (Item *left)
+{
+  break_before_penalty_
+    = robust_scm2double (left->get_property ("page-penalty"), 0.0);
+
+  SCM details
+    = left->get_property ("line-break-system-details");
+
+  SCM yext
+    = scm_assoc (ly_symbol2scm ("Y-extent"), details);
+  
+  SCM staff_ext
+    = scm_assoc (ly_symbol2scm ("refpoint-Y-extent"), details);
+
+  if (scm_is_pair (yext)
+      && is_number_pair (scm_cdr (yext)))
+    {
+      Box b = stencil_.extent_box();
+      b[Y_AXIS] = ly_scm2interval (scm_cdr (yext));
+      
+      stencil_ = Stencil (b, stencil_.expr ());
+    }
+
+  if (scm_is_pair (staff_ext)
+      && is_number_pair (scm_cdr (staff_ext)))
+    {
+      staff_refpoints_ = ly_scm2interval (scm_cdr (staff_ext));
+    }
+}
+
+Interval
+Paper_system::staff_refpoints () const
+{
+  return staff_refpoints_;
 }
Index: lilypond/lily/parser.yy
diff -u lilypond/lily/parser.yy:1.489 lilypond/lily/parser.yy:1.490
--- lilypond/lily/parser.yy:1.489       Mon Sep 12 12:46:48 2005
+++ lilypond/lily/parser.yy     Mon Sep 26 23:25:58 2005
@@ -407,6 +407,7 @@
 %token <scm> MUSIC_FUNCTION_SCM_MUSIC_MUSIC 
 %token <scm> MUSIC_FUNCTION_SCM_SCM 
 %token <scm> MUSIC_FUNCTION_SCM_SCM_MUSIC 
+%token <scm> MUSIC_FUNCTION_SCM_SCM_SCM 
 %token <scm> MUSIC_IDENTIFIER
 %token <scm> NOTENAME_PITCH
 %token <scm> NUMBER_IDENTIFIER
@@ -1115,6 +1116,9 @@
        }
        | MUSIC_FUNCTION_SCM_SCM embedded_scm embedded_scm {
                $$ = scm_list_4 ($1, make_input (@$), $2, $3);
+       }
+       | MUSIC_FUNCTION_SCM_SCM_SCM embedded_scm embedded_scm embedded_scm {
+               $$ = scm_list_5 ($1, make_input (@$), $2, $3, $4);
        }
        | MUSIC_FUNCTION_SCM_SCM_MUSIC embedded_scm embedded_scm Music {
                $$ = scm_list_5 ($1, make_input (@$), $2, $3, $4->self_scm ());
Index: lilypond/lily/score-engraver.cc
diff -u lilypond/lily/score-engraver.cc:1.154 
lilypond/lily/score-engraver.cc:1.155
--- lilypond/lily/score-engraver.cc:1.154       Thu Aug 18 11:40:22 2005
+++ lilypond/lily/score-engraver.cc     Mon Sep 26 23:25:58 2005
@@ -169,7 +169,14 @@
                      "Score_engraver::forbid_breaks to stop linebreaks.  In 
practice, this "
                      "means that you can make a breakpoint by creating a 
barline (assuming "
                      "that there are no beams or notes that prevent a 
breakpoint.) ",
-                     /* create */ "System PaperColumn NonMusicalPaperColumn",
-                     /* accept */ "break-event",
-                     /* read */ "currentMusicalColumn currentCommandColumn 
verticallySpacedContexts",
-                     /* write */ "");
+                     /* create */
+                     "System ",
+
+                     /* accept */
+                     "break-event",
+                     /* read */
+                     "currentMusicalColumn "
+                     "currentCommandColumn "
+                     "verticallySpacedContexts",
+                     /* write */
+                     "");
Index: lilypond/lily/system.cc
diff -u lilypond/lily/system.cc:1.119 lilypond/lily/system.cc:1.120
--- lilypond/lily/system.cc:1.119       Mon Sep 12 23:33:24 2005
+++ lilypond/lily/system.cc     Mon Sep 26 23:25:58 2005
@@ -385,10 +385,8 @@
 
   Paper_system *pl = new Paper_system (sys_stencil, false);
   pl->staff_refpoints_ = staff_refpoints;
-  Item *break_point = this->get_bound (LEFT);
-  pl->break_before_penalty_
-    = robust_scm2double (break_point->get_property ("page-penalty"), 0.0);
-
+  pl->read_left_bound (this->get_bound (LEFT));
+  
   return pl->unprotect ();
 }
 
Index: lilypond/ly/engraver-init.ly
diff -u lilypond/ly/engraver-init.ly:1.249 lilypond/ly/engraver-init.ly:1.250
--- lilypond/ly/engraver-init.ly:1.249  Tue Sep 20 11:21:01 2005
+++ lilypond/ly/engraver-init.ly        Mon Sep 26 23:25:59 2005
@@ -616,6 +616,7 @@
 \context {
   \Voice
   \name "TabVoice"
+  \alias "Voice"
   \consists "Tab_note_heads_engraver"
   \remove "Note_heads_engraver"
   \remove "Fingering_engraver"
Index: lilypond/ly/music-functions-init.ly
diff -u lilypond/ly/music-functions-init.ly:1.37 
lilypond/ly/music-functions-init.ly:1.38
--- lilypond/ly/music-functions-init.ly:1.37    Mon Aug 22 00:58:02 2005
+++ lilypond/ly/music-functions-init.ly Mon Sep 26 23:25:59 2005
@@ -6,7 +6,7 @@
 
 #(use-modules (srfi srfi-1))  
 
-applymusic =
+applyMusic =
 #(def-music-function (parser location func music) (procedure? ly:music?)
                (func music))
 
@@ -33,7 +33,7 @@
 #(def-music-function (parser location music) (ly:music?)
                (make-autochange-music music))
 
-applycontext =
+applyContext =
 #(def-music-function (parser location proc) (procedure?)
                  (make-music 'ApplyContext 
                    'origin location
@@ -58,11 +58,28 @@
    (display-lily-music music)
    music)
 
-applyoutput =
+applyOutput =
 #(def-music-function (parser location proc) (procedure?)
                 (make-music 'ApplyOutputEvent 
                   'origin location
                   'procedure proc))
+
+outputProperty =
+#(def-music-function (parser location name prop value)
+   (symbol? symbol? scheme?)
+
+
+   "Set @var{prop} to @var{value} in all grobs named @var{name} "
+
+   (make-music 'ApplyOutputEvent
+              'origin location
+              'procedure
+              (lambda (grob orig-context context)
+                (if (equal?
+                     (cdr (assoc 'name (ly:grob-property grob 'meta)))
+                     name)
+                    (set! (ly:grob-property grob prop) value)
+                ))))
 
 breathe =
 #(def-music-function (parser location) ()
Index: lilypond/python/convertrules.py
diff -u lilypond/python/convertrules.py:1.13 
lilypond/python/convertrules.py:1.14
--- lilypond/python/convertrules.py:1.13        Mon Aug 22 14:03:11 2005
+++ lilypond/python/convertrules.py     Mon Sep 26 23:25:59 2005
@@ -2555,3 +2555,14 @@
                     '''Performer_group_performer -> Performer_group, 
Engraver_group_engraver -> Engraver_group
 inside-slur -> avoid-slur'''))
 
+
+
+def conv (str):
+       str = re.sub(r'\\applyoutput', '\\applyOutput', str)
+       str = re.sub(r'\\applycontext', '\\applyContext', str)
+       str = re.sub(r'\\applymusic', '\\applyMusic', str)
+       str = re.sub(r'ly:grob-suicide', 'ly:grob-suicide!', str)
+       return str
+
+conversions.append (((2, 7, 10), conv,
+                    '''\\applyxxx -> \\applyXxx'''))
Index: lilypond/scm/define-grob-properties.scm
diff -u lilypond/scm/define-grob-properties.scm:1.121 
lilypond/scm/define-grob-properties.scm:1.122
--- lilypond/scm/define-grob-properties.scm:1.121       Mon Sep 12 12:22:01 2005
+++ lilypond/scm/define-grob-properties.scm     Mon Sep 26 23:25:59 2005
@@ -306,6 +306,10 @@
      (length-fraction ,number? "Length of ledger line as fraction of note head 
size.")
      (lengths ,list? "Default stem lengths. The list gives a length
 for each flag-count.")
+     (line-break-system-details ,list?
+                               "Alist of properties to use when this
+column is the start of a system.")
+     
      (line-count ,integer? "The number of staff lines.")
      (measure-length ,ly:moment? "Length of a
 measure. Used in some spacing situations.")
Index: lilypond/scm/safe-lily.scm
diff -u lilypond/scm/safe-lily.scm:1.35 lilypond/scm/safe-lily.scm:1.36
--- lilypond/scm/safe-lily.scm:1.35     Thu Jul 21 14:45:55 2005
+++ lilypond/scm/safe-lily.scm  Mon Sep 26 23:25:59 2005
@@ -56,7 +56,7 @@
    ly:grob-script-priority-less
    ly:grob-set-property!
    ly:grob-staff-position
-   ly:grob-suicide
+   ly:grob-suicide!
    ly:grob-system
    ly:grob-translate-axis!
    ly:grob?


_______________________________________________
Lilypond-cvs mailing list
Lilypond-cvs@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-cvs

Reply via email to