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