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.
Trevor Daniels [Sat, 30 Aug 2014 20:44:23 +0000 (21:44 +0100)]
Issue 4078: Doc: Use variables rather than instrument definitions
Using variables for switching character names in vocal music
rather than instrument definitions is easier to understand,
easier to set up and quicker to type. It also frees up the
use of instrument definitions so they may be tailored for
better use in instrumental compositions.
Remove the mention of \transposition. This is never required
in vocal music.
David Kastrup [Mon, 25 Aug 2014 15:46:29 +0000 (17:46 +0200)]
Issue 4082/1: Reimplement Smobs via templates rather than preprocessor
This creates the underlying code for the new implementation without
converting the bulk of the code (which is left to a script committed
separately). The include file ly-smobs.icc is removed completely. A
new file smobs.tcc contains generic template instantiations. The GCC
implementation works by loading it unconditionally in smobs.hh.
Depending on the underlying template mechanism, it might be feasible to
include it into just one compilation unit.
Where the previous implementation referred to class names passed into
macros, the typeinfo mechanism of C++ is employed for deriving the
respective name. The GCC implementation uses some cursory demangling of
the resulting type id, converting "3Box" into "Box" and similarly.
Other APIs might warrant different polishing but the type names are
mostly used for internal purposes and differences are not all that
problematic.
Trevor Daniels [Sat, 30 Aug 2014 11:42:54 +0000 (12:42 +0100)]
Issue 4075: Doc: Correct the instrumentTransposition setting in NR 2.1.6
The value of instrumentTransposition affects the MIDI
pitch. As all the notes in this example are entered
at the correct sounding pitch no instrument transposition
is required. Previously Kaspar sounded an octave too low.
But it turns out that the "formal" definition of a list given there is
unsuitable for determining the list status of circular lists because the
definition, well, turns out to be circular.
Janek Warchoł [Sun, 10 Aug 2014 19:09:42 +0000 (21:09 +0200)]
Use aligned-on-x-parent instead of other callbacks for some grobs
Now that we have an easy way of specifying different alignments for
grob and its parent (see 0c4f221e5d), we can use aligned-on-.-parent
in places that we previously used .-aligned-on-self. With this change,
the users have more control over the placement of grobs.
David Kastrup [Wed, 20 Aug 2014 12:27:55 +0000 (14:27 +0200)]
Issue 3518: Support temporary divisi staves
This provides the low-level support for temporary divisi staves by
adding a `VerticalAxisGroup.remove-layer' property of type integer that
interacts with the "Keep_alive_together_engraver": when set to a numeric
value, staves with the same numeric value are kept alive together as one
group. Of several such groups with live staves, only the one with the
lowest common numeric `remove-layer' is retained.