David Kastrup [Sun, 28 Sep 2014 08:58:43 +0000 (10:58 +0200)]
Issue 4138: Make \time work with \tweak and \footnote
The way this is done is to let a TimeSignatureMusic expression expand to
produce a TimeSignatureEvent that can be listened to. The
Time_signature_engraver _does_ listen to this event and uses it to set
the origin for TimeSignature grobs created in the same time step.
Another effect is that any warnings associated with a TimeSignature grob
will be able to point to a source location in case that the respective
change of timing parameters can be traced to TimeSignatureMusic in a
context below the context of the Time_signature_engraver creating the
TimeSignature.
Since events that can be listened to create a Bottom context implicitly,
this causes a difference for cases like
\score { { \time 3/4 \skip 2. r2. } }
Previously, Staff (and Voice) contexts were only created _after_ the
\skip completed (the timing parameters are set in the Timing context,
equal to Score by default), making the time signature appear only in
measure 2. Now the implicit creation of a Staff (and thus a
Time_signature_engraver) in the course of creating a Bottom context (in
this case a Voice) makes the time signature appear right away.
If one uses a separate non-printing context for containing timing info,
one has to make sure that any implicitly created Bottom context is
non-printing as well.
David Kastrup [Thu, 25 Sep 2014 10:43:53 +0000 (12:43 +0200)]
Issue 4130: Isolated durations don't work after \pageBreak
The example
\score {
\new RhythmicStaff {
R1 |
\pageBreak
1~ |
8 r r4 r2 |
}
}
led to unexpected results since \pageBreak produces an EventChord which
is then taken as a repeat note by 1~. This patch makes sure that
repeated durations only attach to event chords containing rhythmic
events.
David Kastrup [Fri, 26 Sep 2014 12:26:54 +0000 (14:26 +0200)]
Issue 4133: Give predicate ly:grob-properties? the description "grob properties"
\set Staff.InstrumentName = "Test"
previously led to
warning: type check for `InstrumentName' failed;
value `"Test"' must be of type `ly:grob-properties'
and will now instead produce
warning: type check for `InstrumentName' failed;
value `"Test"' must be of type `grob properties'.
The output looks slightly less cryptic and more intentional. The plural
form is indeed correct: this type of context property serves as a
container for _all_ grob properties of InstrumentName.
David Kastrup [Wed, 10 Sep 2014 15:01:43 +0000 (17:01 +0200)]
Issue 4135/2: Replace mark_smob static member functions with non-static members
Since the mark functions generally need to access a number of members,
it is quite more convenient if the mark functions are proper non-static
member functions.
David Kastrup [Sat, 27 Sep 2014 11:27:45 +0000 (13:27 +0200)]
Issue 4135/1: Don't use ASSERT_LIVE_IS_ALLOWED in simple smobs
When replacing mark_smob with a proper member function, use of
ASSERT_LIVE_IS_ALLOWED would require access to self_scm () or similar,
and simple smobs don't link back to their SCM cell. This only
concerns Skyline and Context_mod, so the loss is not all that
large.
David Kastrup [Thu, 18 Sep 2014 13:46:39 +0000 (15:46 +0200)]
Issue 4119: Avoid using `markup' as local binding
I suspected this to be a case of GUILEv2 porting problems, but that does
not appear to be the case. Nevertheless, using the `markup' macro's
name as a local identifier may well confuse humans even if it does
manage to convince GUILE.
David Kastrup [Wed, 14 Aug 2013 18:43:37 +0000 (20:43 +0200)]
Issue 4126: Provide a --enable-guile2 option in configure
For convenient experimenting with GUILEv2, we want to have everything in
master, so provide a configure option that will allow the switch to
GUILEv2 compilation. Off by default since, well, lots of stuff does not
work yet.
David Kastrup [Mon, 22 Sep 2014 13:53:56 +0000 (15:53 +0200)]
Issue 4125: Disable character set recognition
GUILE 1.8 presumably does not make use of the LC_CTYPE information and
just does its input/output/string processing in 8bit chunks. For the
sake of getting comparable results at first when working on GUILE 2.0,
we switch off character set recognition here.
At a later point of time, integration with the character processing of
GUILE 2.0 may be attempted but since this is an entirely new can of
worms with its own performance pitfalls, we put this aside for now.
David Kastrup [Sat, 20 Sep 2014 17:57:38 +0000 (19:57 +0200)]
Issue 4121/2: Store markup command argument list names in docstring
For one thing, the doc string does not make a lot of sense without the
argument list and it cannot reliably be deduced from the doc string
itself.
For another, GUILEv2 does not do us the favor of storing the original
argument list anywhere where it could be retrieved with a useful amount
of labor.
While it would be nice to put the types of the arguments into the doc
string as well, the signature's actual predicates are only evaluated
after macro expansion and that is too late for generating the doc
string.
So we just stick the argument list (after uncurrying) as a line at the
top.
David Kastrup [Sat, 20 Sep 2014 17:57:38 +0000 (19:57 +0200)]
Issue 4121/1: Store music function argument list names in docstring
For one thing, the doc string does not make a lot of sense without the
argument list and it cannot reliably be deduced from the doc string
itself.
For another, GUILEv2 does not do us the favor of storing the original
argument list anywhere where it could be retrieved with a useful amount
of labor.
While it would be nice to put the types of the arguments into the doc
string as well, the signature's actual predicates are only evaluated
after macro expansion and that is too late for generating the doc
string.
So we just stick the argument list (after uncurrying) as a line at the
top.
David Kastrup [Fri, 19 Sep 2014 10:14:28 +0000 (12:14 +0200)]
Issue 4116: Disable ASSERT_LIVE_IS_ALLOWED in GUILEv2
Apparently the garbage collection in GUILEv2 can do a mark pass over
material without actually protecting it from collection, possibly
because the garbage collector can run in a separate thread. At least,
the attempt to print such remaining live smobs still seen by a mark pass
leads to crashes, so disable this memory leak detection mechanism on
GUILEv2.
David Kastrup [Fri, 19 Sep 2014 09:53:46 +0000 (11:53 +0200)]
Issue 4115: Call (ice-9 format) with #f as second argument
Our own format in (lily) will substitute the #f by itself when necessary, but in
scm/document-context-mods.scm, we are explicitly asking for (ice-9 format)
David Kastrup [Mon, 15 Sep 2014 16:04:33 +0000 (18:04 +0200)]
Issue 4102: misaligned composer in LP 2.19.14
This problem surfaced in the wake of the fix for issue 3855. It is due
to Stencil::translate not moving an empty expression even if it has
non-empty extents so that
\markup fill-line { "" "" "composer" }
which assembles a line piece by piece and determining the offset of the
next piece by looking at the end of the assemblage so far lost the
offset between the first and second "" in the line.
Dan Eble [Sat, 6 Sep 2014 18:35:20 +0000 (14:35 -0400)]
Issue 4094: Check for Note_column interface before using grob.
Rest_collision was calling Note_column functions on grobs that did not
have the Note_column interface. Now Rest_collision ignores such grobs
and Note_column will print a more accurate message if such an error
ever happens again.
\addlyrics created its own context (consequently not using \stemDown)
since it had no context name for the Lyrics context to attach to. In
this case (namely being preceded by an unnamed new Voice context), it
will now give a name to the context itself.
since the voice the lyrics attached to was always a new voice.
Fixing the grouping in the grammar is a first required step for getting
this under control.
James Lowe [Thu, 26 Jun 2014 21:37:04 +0000 (22:37 +0100)]
Doc: NR Pitches.itely - Clef - updated snippets and text
Issue 3976
Added 2 new snippets:
1 snippet added to NR
1 snippet added just to Snippets
Modified 1 existing snippet:
This was already (and still is) included in the NR
Deleted 2 snippets (and incorporated them in the
main text in @lilyponds)
Added new @lilypond example that was originally
described (but not show)n in the 'Tweaking Clef
Properties' snippet to show how to remove
the clef glyph from the end of a line. As this
'tweak' is relatively simple (a single \set and
\unset) and more than likely to be used (IMHO) by
the general user than the listed items in the
snippet, I thought it better to be in the NR than
another example in either an already long snippet
or by creating yet another snippet.
David Kastrup [Thu, 4 Sep 2014 13:07:20 +0000 (15:07 +0200)]
Issue 4030: Lyrics associated to a Staff are placed on top of each other
The approach here is simply to avoid attaching to noteheads that have
actually started _before_ the current moment of time. It is somewhat
irritating that includeGraceNotes cannot possibly be supported in
associated voices with its own timing (rather than the fully
synchronized \addlyrics or \lyricsto): Instead you need to use the same
durations, including \grace constructs, in order to match the note you
are aiming for.
David Kastrup [Wed, 3 Sep 2014 17:29:27 +0000 (19:29 +0200)]
Issue 3832: react sanely to ill-formed version strings
Mostly, this cleans up Lilypond_version
We no longer convert to int because it is weird, but we still want
version comparisons. Conversion to bool for checking validity seems
nice in addition.
And bombing out because of invalid data to String_convert::dec2int
seemed definitely non-nice. This version requires specifying at
least major and minor version number explicitly separated by dots.
It accepts a trailing dot, too. A trailing extra_patch_string after
major.minor.patchlevel. is also accepted but not interpreted.
David Kastrup [Thu, 4 Sep 2014 09:18:06 +0000 (11:18 +0200)]
Issue 4028: Automatic beaming of grace notes inhibits beam subdivision
While the whole extend_mom_ logic seems rather fishy to me (it probably
should be reset to a sane value at some other location per-beam) and
I don't have an actual idea why the Grace_auto_beam_engraver would
be involved at all here, initializing extend_mom_ to a value before
all grace notes seems to do the trick for this report.