lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Consist engraver within loop


From: Urs Liska
Subject: Re: Consist engraver within loop
Date: Wed, 9 Mar 2016 09:28:29 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1


Am 09.03.2016 um 09:25 schrieb Jan-Peter Voigt:
> Hi Urs,
>
> try this line:
> #(eval ctx (current-module))
>
> Of course normally eval is evil, but in this case you just evaluate
> the name - the symbol - to the definition, which is stored under that
> name inside the scope of the layout block.
>
> HTH

Indeed it does help, and you'll soon see it again in a pull request ;-)
(I'm writing a wrapper to consist the new edition-engraver to a
symbol-list? of contexts)

Urs

> Jan-Peter
>
> Am 09.03.2016 um 09:02 schrieb Urs Liska:
>> *Bump*
>>
>> Maybe it will be easier to understand the question (and thus provide an
>> answer) with a more stripped down MWE:
>>
>> %%%%%%%%%%%%
>> \version "2.19.38"
>>
>> removeStaffLines =
>> #(define-scheme-function (ctx)(symbol?)
>>     #{
>>       \layout {
>>         \context {
>>           % I want to generate the following context def
>>           % from the ctx symbol? argument
>>           \Staff
>>           \remove "Staff_symbol_engraver"
>>         }
>>       }
>>     #})
>>
>> \removeStaffLines Staff
>>
>> {
>>    c'
>> }
>> %%%%%%%%%%%%
>>
>> What I ultimately need to base my further work on is a way to replace
>> the explicit call of \Staff with a procedure that takes the context name
>> as symbol? and returns the context def that is expected there.
>>
>> Any ideas?
>> Thanks
>> Urs
>>
>> Am 09.03.2016 um 01:53 schrieb Urs Liska:
>>> Hi all,
>>>
>>> I want to write a wrapper function to "install" an engraver in a number
>>> of contexts. It works pretty well, but I want to make it better.
>>>
>>> This is what I have so far.
>>>
>>> \version "2.19.38"
>>>
>>> install =
>>> #(define-scheme-function (contexts)(symbol-list?)
>>>
>>>     (if (member 'Score contexts)
>>>         #{
>>>           \layout {
>>>             \context {
>>>               \Score
>>>               \consists "Clef_engraver"
>>>             }
>>>           }
>>>         #})
>>>     (if (member 'Staff contexts)
>>>         #{
>>>           \layout {
>>>             \context {
>>>               \Staff
>>>               \consists "Clef_engraver"
>>>             }
>>>           }
>>>         #})
>>>     (if (member 'Voice contexts)
>>>         #{
>>>           \layout {
>>>             \context {
>>>               \Voice
>>>               \consists "Clef_engraver"
>>>             }
>>>           }
>>>         #}))
>>>
>>> \install Staff
>>>
>>> {
>>>    c'
>>> }
>>>
>>> Clef_engraver doesn't make real sense, it's just there to have
>>> something
>>> compilable.
>>> In order to complete that I would have to repeat the conditional for
>>> all
>>> existing context - and wouldn't even catch custom contexts. So I would
>>> like to iterate over the symbol list to consist the engraver in a
>>> non-redundant manner. The problem is, I don't know how to get from the
>>> symbols like 'Score to the \Score incantation. I think it should go
>>> something like this:
>>>
>>>     (for-each
>>>      (lambda (ctx)
>>>        #{
>>>          \layout {
>>>            \context {
>>>              % specify context from ctx
>>>              \consists "Clef_engraver"
>>>            }
>>>          }
>>>        #}
>>>        )
>>>      contexts)
>>>
>>> This should work once I can "resolve" the comment
>>>
>>> Any pointers or solution would be appreciated
>>> Urs
>>>
>>> _______________________________________________
>>> lilypond-user mailing list
>>> address@hidden
>>> https://lists.gnu.org/mailman/listinfo/lilypond-user
>>
>>
>> _______________________________________________
>> lilypond-user mailing list
>> address@hidden
>> https://lists.gnu.org/mailman/listinfo/lilypond-user
>>
>
>
> _______________________________________________
> lilypond-user mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/lilypond-user




reply via email to

[Prev in Thread] Current Thread [Next in Thread]