lilypond-devel
[Top][All Lists]

## Re: Issue 4083: Implement \tagGroup command (issue 137920043 by address@

 From: dak Subject: Re: Issue 4083: Implement \tagGroup command (issue 137920043 by address@hidden) Date: Sun, 07 Sep 2014 05:54:53 +0000

On 2014/09/07 05:22:02, Keith wrote:

Patch set 5 will probably be fine.



My concern was that someone would be confused that adding to the list

of tags to

keep
\keepWithTag editorial { ... \tag#'editorial \tag#'score \bar'||'

}

    \keepWithTag part.editorial { ... \tag#'editorial \tag#'score

\bar'||'  }

can reduce the things that are kept.



But that will not likely come up, and you
do explain it in the docstring for \keepWithTag


After sleeping over it I have to admit that my rationale does have a
hole.


\tag A { \tag B ...   has not to date been equivalent to   \tag A \tag

B ...

That's perfectly correct but to date there has not been the ability to
use tag groups for independent applications.  Now the salient point I
have been missing in my argument is that when using \keepWithTag on
tags A and B from different tag groups, \tag A { \tag B *is*
equivalent to \tag A \tag B as long as \keepWithTag is never called
mentioning more than one tag group in its argument.


Don't put too much value on symmetry between how the tags in
\keepWithTag, and the tags on each given piece of music enter, into
the keep-or-remove decision.  One set defines a single filter, the
other describes each item that is going through the filter.  The
keep-or-remove decision is part of an asymmetric operation.


The operation so far has been symmetric and I consider that a good
idea.  Tags from different tag groups used in different applications
can combine by coincidence and I don't want that to lead to
interactions.  But tags in different \keepWithTag commands cannot
combine by coincidence, only intentionally.  And it turns out that
without \keepWithTag commands combining by coincidence, the coincidal
joinder of unreleated \tag commands from unrelated tag groups is not
enough to cause surprises.

So my argument does not carry weight.  The semantics we are talking
about are for the case where a user explicitly juggles multiple tag
groups in a single application: this cannot happen coincidentally.

In a nutshell, what we are talking about is the behavior of

\tagGroup vI.vII
\tagGroup obI.obII
\keepWithTag vI.obI \tag vI.obII ...

If we don't have a strong reason to prefer one behavior over the other
here, then it is noteworthy that "remove" can be achieved as end
result by \keepWithTag vI \keepWithTag obI in this case.

Also the explanation might be a bit more straightforward.  So I am
leaning towards flipping back again.

Sigh.

https://codereview.appspot.com/137920043/