]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/music-functions-init.ly
parser: change order of arguments for context-specification constructor
[lilypond.git] / ly / music-functions-init.ly
index e0b36696bab23c20eefaede5e1c1e634baa87faa..185ee7be382af797b8ebe2e432f6e6b18fa4d3d6 100644 (file)
@@ -38,13 +38,13 @@ acciaccatura =
 %% keep these two together
 "instrument-definitions" = #'()
 addInstrumentDefinition =
-#(define-scheme-function
+#(define-void-function
    (parser location name lst) (string? list?)
    (_i "Create instrument @var{name} with properties @var{list}.")
    (set! instrument-definitions (acons name lst instrument-definitions)))
 
 addQuote =
-#(define-scheme-function (parser location name music) (string? ly:music?)
+#(define-void-function (parser location name music) (string? ly:music?)
    (_i "Define @var{music} as a quotable music expression named
 @var{name}")
    (add-quotable parser name music))
@@ -86,19 +86,17 @@ markups), or inside a score.")
                                           'break-permission 'allow))))
 
 appendToTag =
-#(define-music-function (parser location tag music more)
+#(define-music-function (parser location tag more music)
    (symbol? ly:music? ly:music?)
    (_i "Append @var{more} to the @code{elements} of all music
 expressions in @var{music} that are tagged with @var{tag}.")
-   (music-map-copy (lambda (m)
-                    (if (memq tag (ly:music-property m 'tags))
-                        (begin
-                          (set! m (music-clone m))
-                          (set! (ly:music-property m 'elements)
-                                (append (ly:music-property m 'elements)
-                                        (list more)))))
-                    m)
-                  music))
+   (music-map (lambda (m)
+               (if (memq tag (ly:music-property m 'tags))
+                   (set! (ly:music-property m 'elements)
+                         (append (ly:music-property m 'elements)
+                                 (list more))))
+               m)
+             music))
 
 applyContext =
 #(define-music-function (parser location proc) (procedure?)
@@ -126,23 +124,13 @@ appoggiatura =
 assertBeamQuant =
 #(define-music-function (parser location l r) (pair? pair?)
    (_i "Testing function: check whether the beam quants @var{l} and @var{r} are correct")
-   (make-grob-property-override 'Beam 'positions
-                               (ly:make-simple-closure
-                                (ly:make-simple-closure
-                                 (append
-                                  (list chain-grob-member-functions `(,cons 0 0))
-                                  (check-quant-callbacks l r))))))
+   (make-grob-property-override 'Beam 'positions (check-quant-callbacks l r)))
 
 % for regression testing purposes.
 assertBeamSlope =
 #(define-music-function (parser location comp) (procedure?)
    (_i "Testing function: check whether the slope of the beam is the same as @code{comp}")
-   (make-grob-property-override 'Beam 'positions
-                               (ly:make-simple-closure
-                                (ly:make-simple-closure
-                                 (append
-                                  (list chain-grob-member-functions `(,cons 0 0))
-                                  (check-slope-callbacks comp))))))
+   (make-grob-property-override 'Beam 'positions (check-slope-callbacks comp)))
 
 autochange =
 #(define-music-function (parser location music) (ly:music?)
@@ -196,12 +184,12 @@ bendAfter =
               'delta-step delta))
 
 bookOutputName =
-#(define-scheme-function (parser location newfilename) (string?)
+#(define-void-function (parser location newfilename) (string?)
    (_i "Direct output for the current book block to @var{newfilename}.")
    (set! book-filename newfilename))
 
 bookOutputSuffix =
-#(define-scheme-function (parser location newsuffix) (string?)
+#(define-void-function (parser location newsuffix) (string?)
    (_i "Set the output filename suffix for the current book block to
 @var{newsuffix}.")
    (set! book-output-suffix newsuffix))
@@ -325,7 +313,9 @@ without the need of a specific end spanner.")
                                                 end-ev-chord))))
         total)
 
-       (ly:input-message location (_ "argument endSpanners is not an EventChord: ~a" music))))
+       (begin
+        (ly:input-message location (_ "argument endSpanners is not an EventChord: ~a" music))
+        music)))
 
 
 
@@ -503,18 +493,18 @@ label =
 
 
 language =
-#(define-scheme-function (parser location language) (string?)
+#(define-void-function (parser location language) (string?)
    (_i "Set note names for language @var{language}.")
    (note-names-language parser language))
 
 languageSaveAndChange =
-#(define-scheme-function (parser location language) (string?)
+#(define-void-function (parser location language) (string?)
   (_i "Store the previous pitchnames alist, and set a new one.")
   (set! previous-pitchnames pitchnames)
   (note-names-language parser language))
 
 languageRestore =
-#(define-scheme-function (parser location) ()
+#(define-void-function (parser location) ()
    (_i "Restore a previously-saved pitchnames alist.")
    (if previous-pitchnames
        (begin
@@ -668,7 +658,7 @@ pageTurn =
                                           'break-permission 'force))))
 
 parallelMusic =
-#(define-scheme-function (parser location voice-ids music) (list? ly:music?)
+#(define-void-function (parser location voice-ids music) (list? ly:music?)
    (_i "Define parallel music sequences, separated by '|' (bar check signs),
 and assign them to the identifiers provided in @var{voice-ids}.
 
@@ -778,7 +768,21 @@ partcombine =
    (_i "Take the music in @var{part1} and @var{part2} and typeset so
 that they share a staff.")
    (make-part-combine-music parser
-                            (list part1 part2)))
+                            (list part1 part2) #f))
+
+partcombineUp =
+#(define-music-function (parser location part1 part2) (ly:music? ly:music?)
+   (_i "Take the music in @var{part1} and @var{part2} and typeset so
+that they share a staff with stems directed upward.")
+   (make-part-combine-music parser
+                            (list part1 part2) UP))
+
+partcombineDown =
+#(define-music-function (parser location part1 part2) (ly:music? ly:music?)
+   (_i "Take the music in @var{part1} and @var{part2} and typeset so
+that they share a staff with stems directed downward.")
+   (make-part-combine-music parser
+                            (list part1 part2) DOWN))
 
 partcombineForce =
 #(define-music-function (location parser type once) (symbol-or-boolean? boolean?)
@@ -846,18 +850,16 @@ print @var{secondary-note} as a stemless note head in parentheses.")
      main-note))
 
 pushToTag =
-#(define-music-function (parser location tag music more)
+#(define-music-function (parser location tag more music)
    (symbol? ly:music? ly:music?)
    (_i "Add @var{more} to the front of @code{elements} of all music
 expressions in @var{music} that are tagged with @var{tag}.")
-   (music-map-copy (lambda (m)
-                    (if (memq tag (ly:music-property m 'tags))
-                        (begin
-                          (set! m (music-clone m))
-                          (set! (ly:music-property m 'elements)
-                                (cons more (ly:music-property m 'elements)))))
-                    m)
-                  music))
+   (music-map (lambda (m)
+               (if (memq tag (ly:music-property m 'tags))
+                   (set! (ly:music-property m 'elements)
+                         (cons more (ly:music-property m 'elements))))
+               m)
+             music))
 
 quoteDuring =
 #(define-music-function (parser location what main-music) (string? ly:music?)
@@ -869,6 +871,14 @@ usually contains spacers or multi-measure rests.")
                'element main-music
                'quoted-music-name what))
 
+relative =
+#(define-music-function (parser location pitch music)
+   ((ly:pitch? (ly:make-pitch 0 0 0)) ly:music?)
+   (_i "Make @var{music} relative to @var{pitch} (default @code{c'}).")
+   (ly:make-music-relative! music pitch)
+   (make-music 'RelativeOctaveMusic
+              'element music))
+
 removeWithTag =
 #(define-music-function (parser location tag music) (symbol? ly:music?)
    (_i "Remove elements of @var{music} that are tagged with @var{tag}.")
@@ -1037,6 +1047,11 @@ unfoldRepeats =
 as @code{\\repeat unfold}.")
    (unfold-repeats music))
 
+void =
+#(define-void-function (parser location arg) (scheme?)
+   (_i "Accept a scheme argument, return a void expression.
+Use this if you want to have a scheme expression evaluated
+because of its side-effects, but its value ignored."))
 
 
 withMusicProperty =