[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Dot-separated list as music function argument
From: |
David Kastrup |
Subject: |
Re: Dot-separated list as music function argument |
Date: |
Tue, 08 Jul 2014 17:48:28 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) |
Simon Albrecht <address@hidden> writes:
> Hello everybody,
>
> I just wrote a music function to mark grobs as editorial addition by
> colouring them grey. See the code and an example:
>
> \version "2.19.8"
>
>
> ed = #(let
>
> ((string-or-list?
>
> (lambda (grob)
>
> (or (string? grob)
>
> (list? grob)))))
>
> (define-music-function
>
> (parser location grob mus)
>
> (string-or-list? ly:music?)
>
> #{ \override $grob . color = #(x11-color 'grey40)
>
> $mus
>
> \revert $grob . color #}
>
> )
>
> )
"See the code" is a euphemism. Try telling your mail client not to
reformat stuff.
> \relative { \ed NoteHead c' \ed #'(Staff Accidental) { cis dis } es }
> The 2.18 changes document says that #'(Staff Accidental) and
> Staff.Accidental were now interchangeable, however if I replace it in
> the second function call, I get errors (unexpected "." etc.). Is there
> a way to avoid this in the coding of the function or should it be
> considered a bug?
Your predicate string-or-list? accepts a string, so LilyPond does not
look for . or anything else. That's a really bad predicate to use here.
Try symbol-list-or-symbol? instead. That should be pretty close to what
one would expect from override-similar syntax. Probably symbol-list?
alone is fine as well, but it will, of course, not accept #'Accidental
(which is not a symbol list), even though it _will_ accept Accidental
without any quotes.
--
David Kastrup