Hi Maurits,
Am 20.08.20 um 11:10 schrieb Maurits Lamers:
Hi,
Great! This is the perfect solution. I had to adjust the
(define-scheme-function) call a bit to run also under 2.18:
setStructuralVoice = #(define-scheme-function (parser location num) (integer?)
(make-apply-context
(lambda (context)
(ly:context-set-property! context 'structuralVoice (if (> num 0) num
'())))))
It might need even more tweaks to run under 2.14 which is my target. I know it
is a very old version, but there is a large body of Lilypond code my work
depends on and that is lilypond 2.14. I am afraid that it would distract the
current effort and cost too much time at the moment to convert that body of
work to a more recent version of lilypond.
So, it will probably end up like this, as I am unsure whether lilypond v20 can
deal with v18 type calls to define-scheme-function.
[...]
No need for that: When David K. got rid of the need to write out
parser/location in every function definition five years ago, he also
added a mechanism that detects and supports old-style usage (starting
with "parser"). So your above definition works just fine in 2.20/2.21.
Nevertheless, I'd urge you to try and make sure that everything you
develop will work with current LilyPond versions. Not only in order to
lower the barrier for developers to help you (or others to make use of
your additions), but also because LilyPond simply has evolved a great
deal in the in the nine (!!) years since 2.14.2 was released, and is now
at the same time much more feature-rich _and_ easier to use.
Lukas