David Kastrup [Sun, 24 May 2015 17:38:34 +0000 (19:38 +0200)]
Issue 4421/4: Make music functions callable from Scheme
The functions get their signature checked and optional argument handling
is exactly like in LilyPond, with *unspecified* taking the role of
"\default".
Dan Eble [Thu, 28 May 2015 00:39:47 +0000 (20:39 -0400)]
Issue 4423: eliminate part combiner's array of context handles (2/4)
Create child iterators in parent context. Add an initial split state
to ensure that the first split-list entry, whatever it is, will
redirect the outlets for the child iterators.
David Kastrup [Tue, 26 May 2015 23:35:08 +0000 (01:35 +0200)]
Issue 4422/3: Remove parser/location args from music function calls
When a music function definition starts with a parameter named "parser",
a compatibility definition is created that recreates the parameters
from the fluid accessors (*parser*) and (*location*) when necessary.
David Kastrup [Tue, 26 May 2015 11:36:53 +0000 (13:36 +0200)]
Issue 4422/1: Remove parser/location global variable setup
Instead of relying on the global parser/location work horse (or
respective symbols in local scope), now fluids %parser/%location and
getter functions (*parser*)/(*location*) are employed for setting up the
general parsing and providing #{...#} with accurate information.
This patch removes the global setup and internal information flow: there
is still a variable "parser" being set in local parser modules.
hanwen [Sat, 14 Mar 2015 14:39:16 +0000 (15:39 +0100)]
Decrease space between vertical beams by length-fraction.
This causes 16th and higher grace beams to be closer together.
Thanks to Daniel Spreadbury for noting this in his blog,
http://blog.steinberg.net/2015/03/development-diary-part-10/
To fix the regression in grace-start.ly, decrease collision-padding
for grace beams: since grace beams are smaller, objects must come
closer to be considered a collision.
To fix regressions where grace stems become too large, decrease
importance of forbidden quant scoring if length-fraction != 1.0..
David Kastrup [Wed, 20 May 2015 15:31:32 +0000 (17:31 +0200)]
Issue 3057: misbehavior of \deadNotesOn et al at start of music
User-level commands that do not move to a particular context will tend
to be applied at Bottom context when following any notes or similar
events, but at arbitrary level when being at the start of music. That's
a bad idea. This patch moves the head styling overrides to Bottom
level. While this means that
\new Staff { \deadNotesOn ...
will only affect the default Voice instead of the whole Staff, one can
still get per-Staff behavior with
David Kastrup [Wed, 20 May 2015 19:32:13 +0000 (21:32 +0200)]
Issue 4408: Several typos in the German doc
Particularly, the German docs confuse "eingestrichenes C" (middle C, C4,
LilyPond c') several times with "zweigestrichenenes C" (C in treble
staff, C5, LilyPond c'').
Dan Eble [Sat, 2 May 2015 02:21:43 +0000 (22:21 -0400)]
Issue 4365: non-member unsmob<T> replaces T::unsmob and T::is_smob
Hide Smob_base<>::is_smob() to prevent the misleading situation of
D::is_smob(S) returning true when S represents an ancestor of D rather
than a D. This issue was previously worked around by overriding
is_smob in several derived smob classes; that is no longer needed.
LY_ASSERT_SMOB() now returns a smob pointer. This is not used yet,
but is available for future use to avoid unsmobbing twice.
Smob_base<>::smob_p() is hidden because there doesn't seem to be a
need for it to be public.
Files in lily/include were edited by hand. Files in lily itself were
processed with the following sed script.
David Kastrup [Sun, 17 May 2015 10:04:32 +0000 (12:04 +0200)]
Issue 4400: Rework LY_DECLARE_SMOB_PROC to declare a member function
This is nicer to work with. LY_DECLARE_SMOB_PROC now needs to
additionally get the class name for declaring the smob procedure: this
is astonishingly hard to avoid. Moving the initialization out of
Smob_base<Super>::init into a separate routine smob_proc_init defined by
LY_DECLARE_SMOB_PROC considerably simplifies the initialization.
were done as hotfixes (apparently without associated tracker issues) to
get the current implementation of smobs to compile with old versions of
GCC in GUB as of Oct 2014. The attempts to make these versions of GCC
work were ultimately unsuccessful and GUB was upgraded to newer versions
of GCC.
It does not make sense to retain the workarounds that did not really
help.
David Kastrup [Tue, 12 May 2015 17:01:57 +0000 (19:01 +0200)]
Issue 2787: Sanitize usage of -DDEBUG, -DNDEBUG and assert
The compiler option -DNDEBUG is no longer being used: -DNDEBUG disables
the assert function, and assert is essentially stating that the program
cannot useful continue if the assertion is not met. -DNDEBUG is
basically an option for compiling an application to a limited amount of
ROM when aborting with a diagnostic is not preferable to crashing.
This is not the case for LilyPond. So expensive debugging options now
are enabled with -DDEBUG instead. There is a new configure option
--enable-checking defaulting to "off" for this now.
At the current point of time, setting --disable-optimising also has the
effect of enabling the checks: this will be retained until Patchy has
been adapted to using --enable-checking.
David Kastrup [Wed, 13 May 2015 08:55:45 +0000 (10:55 +0200)]
Issue 4394: NR: use -@code{s}/-@code{-sharp} for alteration suffix description
The previously used -s/--sharp in the pitch alteration suffix table did
not render in a sufficiently recognizable manner, making it hard to
guess that the proper note name would be `a-sharp' rather than `asharp'.
David Kastrup [Mon, 11 May 2015 15:47:46 +0000 (17:47 +0200)]
Issue 4389: Add aliases fflat et al for f-flat et al in bagpipe.ly
While the name conversion of issue 4209 is also done for bagpipe music,
as opposed to "normal" music the respective note names have no short
names and thus can be expected to be used in melodies rather than just
in isolated places like \key commands.
As the change is consequently much more likely to inconvenience bagpipe
players, aliases for the old names are added to bagpipe.ly.
David Kastrup [Sun, 17 May 2015 17:28:06 +0000 (19:28 +0200)]
Run scripts/auxiliar/update-with-convert-ly.sh
Afterwards revert all changes in Documentation/snippets/*.ly (thus
retaining Documentation/snippets/new), then run
scripts/auxiliar/makelsr.py, leaving only the files in
Documentation/snippets/new and their versions in Documentation/snippets
converted: if we don't want to retain the automatic conversion rule, we
only want to keep those files which do not get reconverted on reimport.
As a followup to the commits for issue 3245, this conversion rule
replaces uses of \relative with reference pitch by those without
reference pitch for a number of patterns where convert-ly can detect the
first actual note reliably.
The rule is prepared to skip over files containing \include or \language
with a non-c-using notename language since the patterns do not work for
them.
However, this part of the rule is disabled in this commit as it turns
out that the LilyPond code base converts well (and more thoroughly)
without it.
Dan Eble [Mon, 11 May 2015 02:02:34 +0000 (22:02 -0400)]
Issue 4385: Part_combine_iterator: remove residue related to marks
This could have been removed when the generation of mark events was
moved from C++ to Scheme in aae8f9ee8f62e8a57f4f60a60e639a040571f37b,
but it went unnoticed at that time.
On Cygwin environment,
Guile's uname returns the strings of "CYGWIN_NT-6.3" etc.
It contains unnecessary strings for the platform identification,
such as Windows version.
Therefore, to remove them to return the only "cygwin".