Thomas Morley-2 wrote > No. > It abuses the syntax for an _optional_ argument, with the default ""
Ah, I see. Thanks for the explanation and example. I see that if you don't use the (predicate? default) form for supplying an optional/default argument then you get an error: Unbound variable "x" So I suppose that currently the preferred way to use a new type predicate combination (when you want one that has not been predefined) would be as follows. Cheers, -Paul \version "2.18.2" #(define (markup-or-stencil-or-procedure-or-false? x) (or (markup? x) (ly:stencil? x) (procedure? x) (and (boolean? x) (not x)))) substitute = #(define-music-function (parser location new-stl item) (markup-or-stencil-or-procedure-or-false? symbol-list-or-music?) #{ \tweak stencil #(if (markup? new-stl) (lambda (item) (grob-interpret-markup item new-stl)) new-stl) #item #}) %%%%%%%%%%%%%%%%%%%%% { c'1 \once \substitute \markup "x" Staff.NoteHead d'1 \once \substitute #(make-circle-stencil 0.5 0.1 #t) Staff.NoteHead e'1 \once \substitute ##f Staff.NoteHead g'1 \once \substitute #(lambda (grob) ;; just an example procedure (display grob)(newline) #f) Staff.NoteHead a'1 } -- View this message in context: http://lilypond.1069038.n5.nabble.com/Re-Issue-3918-Add-alternatingTimeSignatures-issue-97110045-tp162462p163092.html Sent from the Dev mailing list archive at Nabble.com. _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel