Nicolas Sceaux [Wed, 11 Nov 2009 18:59:09 +0000 (19:59 +0100)]
Issue #768: Chord repetition shortcut
In the lexer, add a chord repetition state, holding the repetition
symbol (like note names, but for chord repetition), the repetition
function used to copy the previous chord, and a slot to save the
previous chord. Use the repetition symbol to detect a chord
repetition when lexing.
In the parser, when a note chord is found, save it (it becomes
previous chord). When a chord repetition token is found, make a chord
using the repetition function and the previous chord.
The repetition symbol and function are initialized in
ly/chord-repetition-init.ly. The repetition symbol defaults to `q' (as
quote or qord -- as suggested Werner). The function copies the
pitches, but not articulations.
Chris Snyder [Fri, 13 Nov 2009 20:11:24 +0000 (20:11 +0000)]
Fixes issue 786, "Extenders in lyrics stop prematurely if a single underscore is found."
This commit changes the lyrics engraver to create LyricText objects
even for empty lyrics (underscores). This change is necessary because
the old behavior (pre-7531ea6b3 commit) relied on extenders continuing
until the presence of another lyric syllable, which was not always the case.
That commit changed the behavior to completize extenders when no more lyrics
were present, which fixed the neverending-extender bug but introduced the
extenders-stopping-prematurely bug.
By adding the empty LyricText objects, the extender engraver can now tell the
difference between melismas and the end of a block of lyrics.
Neil Puttock [Thu, 12 Nov 2009 21:28:24 +0000 (21:28 +0000)]
Allow music functions to recognize strings as markup.
Though strings count as markup according to the type predicate `markup?',
passing a string to a music function is currently only possible if the
type predicate is `string?' or `scm?'
This patch adds parser rules which support strings passed as markup, thus
making it easier to define music functions which default to using strings
unless extra formatting is required.
Ian Hulin [Thu, 12 Nov 2009 22:20:36 +0000 (22:20 +0000)]
Tracker 836: Add facility to change output file-name for a \book block
...or to set a suffix to prevent multiple files over-writing each other during a
compilation. This change allows user to do this via functions rather than having
to do so by using set! and define on parser variables in Scheme.
Thomas Morgan [Thu, 12 Nov 2009 20:07:58 +0000 (20:07 +0000)]
Fix `split-at-predicate' in `scm/lily-library.scm'.
Don't make the assumption that if `(PRED previous_element element)'
is false, `(PRED element previous_element)' must be true.
Suppose we want to split `(1 2 3 5 7)' into two lists such that
the first list contains the initial consecutive integers `(1 2 3)'
and the second contains the remaining elements `(5 7)'. We expect
`(split-at-predicate (lambda (x y) (= (- y x) 1)) '(1 2 3 5 7))'
to return `((1 2 3) . (5 7))', but in fact it returns `((1 2 3 5 7))'
because of this erroneous assumption.
Marc Hohl [Fri, 6 Nov 2009 08:16:40 +0000 (09:16 +0100)]
tablature: fix ottava bracket error
Ottava brackets don't have to be displayed in tablature;
a regression test file is adapted to show both the behavior
of multi measure rests and ottava brackets.
Michael Käppler [Thu, 29 Oct 2009 10:38:45 +0000 (11:38 +0100)]
New twoside mode.
* This patch allows to specify different margins for odd and even
pages by setting two-sided to true in the \paper block
* The corresponding settings are inner- and outer-margin, there
exists the possibility to set a binding-offset, too
* These values are stored internally as left- and right-margin,
though. Translation is done in page.scm:make-page-stencil
* Small code cleanup in paper.scm:set-paper-dimensions
Patrick McCarty [Thu, 22 Oct 2009 10:01:09 +0000 (03:01 -0700)]
Fix error message output containing wide chars
Before this commit, error message output containing multibyte characters
would be displayed incorrectly for en_US.ISO-88591, en_US.UTF-8, and
other standard locales.
The characters were being split because the character count only
increased by one at the end of a loop iteration. It is necessary to
account for characters that are 2, 3, or 4 bytes wide, and this commit
(mostly) fixes that problem.
Note that this is a temporary workaround. Eventually, we should use
routines that are not locale-dependent, since the only information we
need is the size of each UTF-8 character.
- do not copy any file besides GNUmakefile and Texinfo skeletons into
new language directories -- for each such file, either it is common to
all languages or it needs to be translated, thus in either case it
should not be copied into the new language directory;
- do not create directories for nuts, they can be created later using
TRANSLATION_DIRS=newdir new-lang.