[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bogus warning with defineBarLine
From: |
David Zelinsky |
Subject: |
bogus warning with defineBarLine |
Date: |
Sun, 29 Jan 2023 23:36:51 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
When `\defineBarLine` is called with first argument having an annotation
and span-bar is `#t`, LilyPond confusingly warns that annotation is only
allowed in first argument. The pdf output is correct.
Example:
```
% cat file.ly
\version "2.25.0"
\fixed c' {
\defineBarLine "|-foo" #'(#f #f #t)
a1 \bar "|-foo" a1
}
% lilypond file
GNU LilyPond 2.25.2 (running Guile 2.2)
Processing `file.ly'
Parsing...
warning: Annotation '|-foo' is allowed in the first argument of a bar line
definition only.
Interpreting music...
Preprocessing graphical objects...
Finding the ideal number of pages...
Fitting music on 1 page...
Drawing systems...
Converting to `file.pdf'...
Success: compilation successfully completed
```
The culprit is in definition of `define-bar-line` in `bar-line.scm`:
```
;; #t means copy the mid-line glyph
(when (eq? eol-glyph #t)
(set! eol-glyph bar-glyph))
(when (eq? bol-glyph #t)
(set! bol-glyph bar-glyph))
(when (eq? span-glyph #t)
(set! span-glyph bar-glyph))
;; the last argument may not include annotations
(check-for-annotation span-glyph)
```
The `set!` expressions should wrap `bar-glyph` in `strip-string-annotation`.
I can upload a patch.
Is there any benefit in adding a regression test? It compiles
correctly, it's just the warning that is bogus. Is this detected in
regressing testing?
-David
- bogus warning with defineBarLine,
David Zelinsky <=