Finally, I replaced (!cached) with (!SCM_UNPACK (cached)) in
lily-guile-macros.hh, as has been suggested once by David.
Please note that this commit does not handle some situations
I’m less comfortable with (namely those involving scm_c_memq,
scm_assq or scm_hashq_get_handle), and some scm_*_p checks
for which there isn’t a ly_is_* replacement yet (to wit,
scm_hash_table_p, scm_promise_p, and scm_variable_bound_p).
Those should be dealt with later (another patch is in the works).
David Nalesnik [Thu, 26 Mar 2015 15:08:55 +0000 (10:08 -0500)]
Issue 4328: Add means to display objects accessible from a grob
A convenient way to display the grobs and grob-objects pointed to by
various internal properties of a given grob would be very helpful for
debugging and development purposes. For example, it would facilitate the
creation of advanced tweaks, which frequently require "lateral" access
to other grobs.
The output of the function 'grob::display-objects' shows all of the grobs
accessible to a given grob through ly:grob-object together with the relevant
interfaces and properties. It includes properties which are empty: not all
properties within an interface may be set for or used by a grob supporting
that interface.
David Kastrup [Sun, 15 Mar 2015 11:15:18 +0000 (12:15 +0100)]
Issue 4324: Don't create Bottom to announce TimeSignatureEvent
As a fallout of issue 4138, << \time 3/4 \new Staff c2. >> created a
spurious Staff only containing a time signature. This change avoids the
creation of a Bottom context just for accommodating \time. As a result,
{ \tweak color #red \time 3/4 c2. }
will no longer show a change in color since no Staff context exists at
the time \time is executed and consequently the tweak does not apply
anywhere. You have to use \time in existing Staff contexts to have
either \tweak and point&click have an effect (and get an error locator
when something with typesetting the signature goes wrong). Outside of
such contexts, \time just changes properties of the Timing context.
Trevor Daniels [Sun, 15 Mar 2015 14:04:52 +0000 (14:04 +0000)]
Doc: Issue 4323: Ensure all contexts in satb.ly template stay alive
Following the fix to Issue 2010, some contexts in deeply nested
parallel constructs may be terminated prematurely, at least this
is the likely explanation for the failure of the satb.ly template
in Release 2.19.16, although blaming Issue 2010 is conjecture.
As an alternative fix to Issue 2010 seems far away, this is a hackish
workaround enable the satb.ly template to work in releases after
2.19.15 by ensuring all contexts remain alive for the duration of the
longest of them. It corrects all the examples in the LM.
Keith OHara [Wed, 11 Mar 2015 04:04:13 +0000 (21:04 -0700)]
Avoid floating-point compares on Stem:head_positions; issue 4310
On the cross-compiled windows executable, head_positions().is_empty()
seems to sometimes return true for a stem with a single note.
head_positions() returns something like [3.00... , 3.00...]
David Nalesnik [Mon, 9 Mar 2015 15:16:55 +0000 (10:16 -0500)]
Issue 4319: toward-stem-shift-in-column should only affect Script grobs
Previously, toward-stem-shift-in-column did not discriminate between
different types of grobs in the 'scripts grob-array. This meant that
TextScript, StringNumber, and Fingering objects would be caught as well.
This patch only shifts an articulation in the presence of another Script
grob.
Paul Morris [Thu, 19 Feb 2015 17:25:54 +0000 (12:25 -0500)]
Web: revise site background
Issue 4299
green fade-out gradient at both top corners
site background is slightly off-white
column backgrounds are pure-white
adjust search box color
update ie css file
C:\tmp\lilypond-2.19.16-0.mingw\$_OUTDIR\usr\bin>lilypond
GNU LilyPond 2.19.16
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
Trevor Daniels [Fri, 6 Mar 2015 23:29:19 +0000 (23:29 +0000)]
Docs: Issue 4181: Expose \stemUp and \stemDown predefs less
in LM Tweaking output
- change some examples to use \slurUp etc rather than \stemUp
- give an example showing the use of the direction indicators
- replace mention of \stemUp in text with \tieUp, etc
- correct a few typos
in NR Changing defaults
- remove superfluous \stemUp
David Kastrup [Wed, 4 Mar 2015 22:11:52 +0000 (23:11 +0100)]
Issue 4311: Make multimeasure rests obey tweaks
This change basically just copies all properties from the originating
MultiMeasureRestMusic to all of the MultiMeasureRestEvent events
generated from it. In particular, it now copies the previously omitted
'tweaks property.
David Kastrup [Thu, 19 Feb 2015 12:37:37 +0000 (13:37 +0100)]
Issue 4296: Let \displayLilyMusic print even repeated durations
\displayLilyMusic { c4 c c c } now produces { c4 c4 c4 c4 } in order to
better match the content of the music rather than the shortest possible
input representation.
Paul Morris [Wed, 18 Feb 2015 23:07:52 +0000 (18:07 -0500)]
Web: be more consistent with use of columns
Issue 4297
use a column on this page:
introduction/text-input
use columns instead of news-items on this page:
introduction/examples
only have one h3 heading per column on these pages:
introduction/easier-editing
dowmloads
community/google-summer-of-code
Thomas Morley [Sun, 8 Feb 2015 17:40:10 +0000 (18:40 +0100)]
Clean up inconsistencies in engraver-init.ly and performer-init.ly
issue 4281
In performer-init.ly
- let context-defs be copied when possible
- add missing contexts for \accepts and \alias
- delete settings for ChordNameVoice
- add GregorianTranscriptionStaff, GregorianTranscriptionVoice, NoteNames,
PetrucciStaff, PetrucciVoice
- all contexts are written without quotation marks
- accepted contexts are ordered alphabetically
In engraver-init.ly
- add FretBoards to the accepted contexts in StaffGroup
- add NullVoice to the accepted contexts in RhythmicStaff
- all contexts are written with quotation marks
- accepted contexts are ordered alphabetically
Kevin Barry [Thu, 19 Feb 2015 15:51:52 +0000 (15:51 +0000)]
Doc: replaced tabs with spaces in /ly/*.ly
Issue 1432
A number of the *.ly files have a mixture of
tabs and spaces to generate their indents.
This can lead to ugly/unhelpful indenting for
some editors. The tabs should be replaced with
spaces.
David Nalesnik [Wed, 18 Feb 2015 17:33:51 +0000 (11:33 -0600)]
Issue 4294: Functions to display rhythmic information of a grob
Convenient ways to return the musical position of a grob within
a score will be very helpful in debugging, among other uses.
This patch creates two Scheme functions which return the location
of a grob based on the associated paper column. In the case of
spanners, this is the column of the left bound.
(1) grob::rhythmic-location returns a pair consisting of measure-number
and measure-position;
(2) grob::when returns a moment representing the global timestep.
David Nalesnik [Sun, 15 Feb 2015 19:47:46 +0000 (13:47 -0600)]
Scheme function to return a grob's name
Users of Scheme would benefit from a convenient way to access a
grob's name. This patch creates the function grob::name, which
takes a grob as argument and returns its name as a symbol.
David Nalesnik [Sat, 14 Feb 2015 20:45:07 +0000 (14:45 -0600)]
Add Scheme function to return column associated with Item.
The C++ function Paper_column::get_column is used frequently,
and it makes sense to have a Scheme function which performs
the same task. An example of a practical application
is the request by users to return the location of a particular
grob in a score: this is done by examining the PaperColumn
or NonMusicalPaperColumn associated with the grob.
David Kastrup [Wed, 18 Feb 2015 15:40:49 +0000 (16:40 +0100)]
Issue 4293/3: smobs.tcc: robustify {mark,print}_trampoline in connection with free_smob
Guilev2 has little qualms calling mark/print even after freeing a smob.
So we clean out the pointer to smob data when freeing/unregistering it,
and let the mark/print trampolines detect this condition and punt.
David Nalesnik [Wed, 4 Feb 2015 20:07:01 +0000 (14:07 -0600)]
Allow independent adjustment of minimum length for spanner siblings
The property minimum-length does not allow independent adjustment
of the siblings of broken spanners. This patch adds a property,
minimum-length-after-break, which, if set, behaves similarly to minimum-length,
but only affects siblings starting a line. If minimum-length-after-break is
unset, minimum-length still controls all lengths.
A regtest demonstrates usage of the new property with a number of spanners.
Another regtest demonstrates usage and compatibility of minimum-distance
and minimum-distance-after-break.