[Top][All Lists]

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

Re: scheme spanner in input/regression/ not quote-

From: David Kastrup
Subject: Re: scheme spanner in input/regression/ not quote-proof
Date: Mon, 30 Jul 2012 16:31:23 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux)

Reinhold Kainhofer <address@hidden> writes:

> On 28/07/2012 07:32, David Kastrup wrote:
>> Reinhold Kainhofer <address@hidden> writes:
>>> The text spanner implemented in scheme (which is also used as a basis
>>> for David's measure counter engraver) seems to work fine in the regtest,
>>> but apparently it is not quote-proof.
>>> In particular, if you try call \addQuote on some music that contains
>>> \schemeTextSpannerStart or \schemeTextSpannerEnd, then you get the
>>> following warnings and the text spanner is not quoted:
>> Well, scheme-text-spanner changes the \Global context, and quote
>> environments uses the layout definition partCombineListener in
>> ly/ with an unchanged Global context.
>> Change its Global context similarly, and you should be set.
> How can a user, who wants to use e.g. the measure counter engraver,
> change the partCombineListener' s Global context without messing with
> the original lilypond sources?

Uh, in the same manner as he changes the normal Global context?

> Am I missing something?

I don't understand the problem.  You do something like

partCombineListener = \layout {
  \context {
    \grobdefinitions ...
    EventClasses = ...

> The whole point of scheme engravers and scheme text spanners is that
> users can now also implement things in scheme without messing with the
> lilypond sources...
> If I understand you right, then the user cannot add new grobs in an
> include file without messing with the lilypond sources.

Make no mistake: scheme-text-spanner is a heap of junk messing with
LilyPond internals.  Less so than previously, but still far too much.

So yes: for all practical purposes, the user cannot add new grobs.  What
scheme-text-spanner does is not a user interface.  It is code
duplication and hacking with internals.  You can extend this hackery to
the partCombineListener if you want to.  But scheme-text-spanner does
not in _any_ way constitute a user-accessible mechanism that is
guaranteed not to break either now or in future.

> Would a proper solution be to change the partCombineListener to a
> context mod and construct the real listener when we need it (i.e.
> replace the current (ly:parser-lookup parser 'partCombineListener) by
> the actual creation of the listener from the context in effect when
> add-quotable or recording-group-emulate is called?

I have no clue what you are talking about.  partCombineListener is an
output definition, and I see no problem with it that would be any
different from that of the normal \layout output definition.

David Kastrup

reply via email to

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