LGTM It worked fine on (adapted) examples from the divisi staff issue and emails. Looking at the code, I was confused how it worked without the \cleansed concept of the LSR entries, until I realized un-grouped tags effectively form their own group, so old uses of \keepWithTag ignore tags in the new groups.
https://codereview.appspot.com/137920043/diff/20001/Documentation/notation/input.itely File Documentation/notation/input.itely (right): https://codereview.appspot.com/137920043/diff/20001/Documentation/notation/input.itely#newcode2246 Documentation/notation/input.itely:2246: @code{\keepWithTag} is not used. The last paragraph is difficult to understand; maybe leave it out. https://codereview.appspot.com/137920043/diff/20001/ly/music-functions-init.ly File ly/music-functions-init.ly (right): https://codereview.appspot.com/137920043/diff/20001/ly/music-functions-init.ly#newcode562 ly/music-functions-init.ly:562: may be either a single symbol or a list of symbols.") You could make the whole tag-group enhancement parenthetical "...or untagged (ignoring any tags in tag groups different from the tag groups containing @var{tag}; see @code{tagGroup})." It will probably help understanding to say "\keepWithTag A.B performs \removeWithTag C.D.E... where C,D,E,etc., are all the tags other than A.B in the tag group(s) that contain A and B. https://codereview.appspot.com/137920043/diff/20001/scm/music-functions.scm File scm/music-functions.scm (right): https://codereview.appspot.com/137920043/diff/20001/scm/music-functions.scm#newcode2650 scm/music-functions.scm:2650: (not (any (lambda (t) (eq? (tag-group-get t) group)) music-tags)))))) This last line has some non-obvious important details. ; If this music has non-matching tags, and if any of them are in the same group as the tag we are keeping, then we do *not* keep this music. The set of tags outside any declared group, for which tag-group-get returns #f, are treated as their own tagGroup https://codereview.appspot.com/137920043/diff/20001/scm/music-functions.scm#newcode2656 scm/music-functions.scm:2656: (any (lambda (t) (memq t tags)) music-tags) I didn't understand the comment below until after figuring out the code (and then re-interpreting the comment until I found an interpretation that fit). ; This music has tags that do not match any of our tags to keep. If any of the music's tags are in the same group as any of our tags to keep, then we do *not* keep this music. https://codereview.appspot.com/137920043/ _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel