summaryrefslogtreecommitdiff
path: root/lily
Commit message (Expand)AuthorAgeFilesLines
* Don't depend on features removed in Guile 2.1. (issue 3972)...* Replace scm_listify with scm_list_*. (It's been deprecated for a long time.) * Use scm_protects only when available (Guile versions <2.1). Devon Schudy2014-07-152-3/+8
* Issue 3996: Clarify 'thickness and 'line-thickness property docstrings.Mark Polesky2014-07-101-4/+7
* Issue 2462: don't change ideal spacing when adding a rod...When objects like lyrics are added to the PaperColumns, LilyPond inserts rods between these columns to ensure that the objects won't overlap. However, the ideal distance should remain unchanged. For example, in \layout { ragged-right = ##f } \relative f' { \repeat unfold 8 a4 } \addlyrics { \repeat unfold 4 la \repeat unfold 4 straight } notes in 2nd measure have long lyrics attached to them - min_distance_ of the springs between these columns should be adjusted, but distance_ (the ideal distance) should not: it should be the same as for notes with short lyrics. When the line is stretched so much that the minimum distances are not involved, the springs between notes in both measures should behave (almost) identical. Note that there are more such problems in the springs code, for example in merge_springs. The code should be rewritten, but that's not trivial. Since this one-liner fixes some instances of the problem without any bad side-effects, it makes sense to include it separately. Janek Warchoł2014-07-111-1/+0
* Issue 2245: always align dynamics and lyrics on "main" notehead...Until now, LyricTexts and DynamicTexts had their X-parents set to the first NoteHead in the NoteColumn. This resulted in inconsistent alignment - placement of lyrics and dynamics depended on the order of notes in the input: % this was aligned differently { <f' g'>1\p <g' f'>\p } \addlyrics { la la } By using NoteColumns themselves as the X-parents, we make sure that the input order won't matter. Since the NoteColumn contains all NoteHeads (including suspended ones, which usually should be ignored when aligning), as well as Flags and some other objects, we cannot use its X-extent directly - instead, we add a function for calculating X-extent of the "main" part of the NoteColumn, i.e. X-extent of the non-suspended NoteHeads (represented by the NoteHead furthest away from the stem). Janek Warchoł2014-07-085-4/+32
* Issue 3986: \displayScheme broken... \displayScheme \markup \null failed because a markup following an omitted optional argument (here the optional output port) was backed up erroneously with the token type LYRIC_ELEMENT only to be used in lyrics mode. The optional argument was introduced with issue 2067 in version 2.19.0. The actual underlying parser error triggered by this, however, is quite older and originates from commit d4694123961690b173377b3c3a199d5a24c66a9d Author: David Kastrup <dak@gnu.org> Date: Thu Nov 1 15:16:52 2012 +0100 parser/lexer: eliminate LYRIC_MARKUP as a token separate from MARKUP (2996/2) in version 2.17.9. David Kastrup2014-07-081-1/+1
* Replace XY-offset closures with aligned_on_parent where possible...It doesn't make sense to specify placement using multiple added callbacks or closures when we can use aligned_on_parent. What's more, aligned_on_parent should expose more consistent interface for the users - affected grobs should now behave similarly to LyricTexts and DynamicTexts. For example, this \relative c'' \context Voice { \compressFullBarRests \override MultiMeasureRestNumber.self-alignment-X = #RIGHT R1*100 } will result in right edge of the MultiMeasureRestNumber being aligned on the right edge of the MultiMeasureRest. Affected grobs: - AccidentalSuggestion - ClefModifier - DoublePercentRepeatCounter - Fingering - GridLine - MultiMeasureRestNumber - MultiMeasureRestText - PercentRepeatCounter - StemTremolo Expected changes in output: none. Janek Warchoł2014-07-054-18/+6
* Clean up DynamicText horizontal alignment....Until now, DynamicText alignment was messy, as there were 3 different callbacks involved - some of them interacting in a confusing way: - in define-grobs.scm, X-offset property was initialized to ly:self-alignment-interface::x-aligned-on-self, - Dynamic_engraver called set_center_parent on every DynamicText attached to a note, so that half a NoteHead width was always added to its X-offset (producing confusing results for example when user requested dynamics to be left-aligned), - DynamicTexts living in a Dynamics context used a completely different offset callback, which aligned them on NoteColumns. Since aligned_on_parent is now able to correctly align grobs with PaperColumn parents (issue 3254), we can use it for all DynamicTexts and have a single interface for the job. Expected changes in output: DynamicTexts in Dynamics context aligned to suspended noteheads may be placed up to 1/4 NoteHead width further to the right. This shouldn't be a problem. Janek Warchoł2014-07-053-26/+1
* Rename argument to avoid preprocessor problems...Before this change, we were getting the following error with GUB: /home/gub/gub/target/mingw/src/ lilypond-git.sv.gnu.org--lilypond.git-release-unstable/ lily/include/paper-column.hh:62: error: expected identifier before ',' token /home/gub/gub/target/mingw/src/ lilypond-git.sv.gnu.org--lilypond.git-release-unstable/ lily/include/paper-column.hh:62: error: two or more data types in declaration of 'parameter' David Kastrup suspects that the library/compiler used for bootstrapping has a macro or reserved word defined for "interface" - changing the name makes the problem go away. Janek Warchoł2014-07-022-3/+3
* Issue 3966/2: Allows the user to override the text property of ChordName...This is a reimplementation of issue 2813. David Kastrup2014-06-301-49/+60
* Issue 3966: Revert "Allows the user to override the text property of ChordName"...This reverts commit 0d4c79ec0f5d728ac7fe58b87ccf51079ec33766. Conflicts: input/regression/chord-name-override-text.ly lily/chord-name-engraver.cc Reverts patch of issue 2813. David Kastrup2014-06-301-25/+15
* use X-parents to align MMRNumbers, MMRTexts and PercentRepeatCounters...It makes more sense to use X-parents than Y-parents for horizontal alignment. To be able to do this, we have to ensure that X-parents of MultiMeasureRestNumber, MultiMeasureRestText and PercentRepeatCounter won't be overwritten by set_bound (these grobs are spanners). We can do this because parents of these grobs are spanners as well. Expected changes in output: none. Janek Warchoł2014-06-285-9/+14
* Issue 3254: align unassociated lyrics using NoteColumn extent....This makes unassociated lyrics behave consistently with associated lyrics. Until now, "standalone" lyrics were left-aligned (more precisely: their X-offset was 0); changing self-alignment-X didn't have any effect on them. Now it's possible to specify their alignment, like with associated lyrics. Also, this changes how issue 104 was resolved (see 0b14e8b2e122d) - alignment of syllables that are associated to a context without noteheads is no longer aborted - and solves issue 247. Later on, these changes should allow using aligned_on_parent for other grobs (such as DynamicTexts). Expected changes in output: all lyrics should be centered by default. Janek Warchoł2014-06-264-8/+31
* Document 'details props for LaissezVibrerTie and RepeatTie.Mark Polesky2014-06-131-1/+13
* Issue 3937: Support \once\unsetDavid Kastrup2014-06-051-5/+24
* Issue 3936: ly:music-list? should return #f for non-listsDavid Kastrup2014-05-301-7/+9
* Issue 3923: Use apply instead of eval for timestep finalizationsDavid Kastrup2014-05-242-7/+5
* keySignature-> keyAlterations...to avoid confusion with the grob KeySignature Keith OHara2014-05-204-25/+25
* Fix calculation of X-extent of AccidentalPlacement....Previously, the offsets used for staggered placement of accidentals were not included in the calculation of the width of AccidentalPlacement grobs. David Nalesnik2014-05-131-1/+1
* Issue 3913: KeyCancellation grobs should ignore cue clefs like KeySignature g......For { \key f \major R1 \cueClef bass \key g \major R1 \cueClefUnset R1 \cueClef alto \key bes \major R1 } the cancellation signs for the key changes were erroneously placed in reference to the current cue clef rather than the main clef while the key signature itself was properly unimpressed. David Kastrup2014-05-091-1/+1
* Tuplet brackets should reliably not follow kneed beams, regardless of whether......This affects input/regression/tuplet-number-kneed-beam-horizontal-fit, and the following: { \override TupletBracket.bracket-visibility = ##t \times 1/2 { c8 c''' c c''' } } Is it safe to call Beam::is_knee in Tuplet_bracket::calc_position_and_height? Devon Schudy2014-04-141-1/+1
* Issue 3898: parser.yy: move figure_list to chord_body...Figures failed to get recognized as music function arguments and possibly in some other contexts. Moving them together with chords in < > style gets rid of that problem. David Kastrup2014-04-131-24/+7
* Fix namespace issue with clang....Signed-off-by: Thomas Klausner <wiz@NetBSD.org> Thomas Klausner2014-04-121-1/+1
* Bad positioning of tuplet numbers on kneed beams with Beam.positions override....Previously, when Beam.positions was overridden, tuplet numbers on kneed beams would automatically be placed according to the bracket instead of against the beam. This happened because the check for whether the beam was kneed or not returned false in such cases. This patch replaces that check. It also: --adds a regtest demonstrating behavior with Beam.position overrides --removes some redundant code David Nalesnik2014-04-051-5/+2
* \partial now only makes measurePosition negative at the beginning of a score....This is more consistent, and means it doesn't disrupt bar numbers when used at the beginning of a measure or after \time. (issue 3888) This changes the semantics for issue 3645 in commit 2d34420eaf1ffdb620739e4640af42c0b3f812c1. Devon Schudy2014-04-041-1/+1
* Fix infinite loop in Completion_heads_engraver at invalid measure position (i......* Completion_heads_engraver now gives a programming_error instead of trying to make negative-duration notes. * intlog2 with a nonpositive argument now gives an error instead of an infinite loop. Devon Schudy2014-04-042-1/+8
* Count MIDI ticks from the beginning of the score, not each staff independently....This keeps MIDI output aligned for: * Lyrics (issue 3878) * Staves without Dynamic_performer (issue 3871) * Staves that start late * Scores that start with grace notes (issue 1412). Devon Schudy2014-04-045-7/+17
* Issue 3892/2: Allow scheme expressions for scores, output defs, music in scoresDavid Kastrup2014-04-041-69/+81
* Issue 3892/1: Allow output defs as scheme expressions in toplevel, book, book...David Kastrup2014-04-041-0/+33
* lily/parser.yy: whitespace fixesDavid Kastrup2014-04-041-11/+8
* Issue 3878: Revert "Fix spurious error playing initial grace notes (issue 1412)"...This reverts commit 6cec57bf0989098fce173703b894f7718bf9c10d. David Kastrup2014-03-241-3/+1
* Fix issue 3868: line-breaking makes short lines...Two simple fixes: 1) Always have some stretchability between notes 2) If there _is_ a completely unstretchable line, shorter than the line-width, score it as a bad fit, not as a perfect fit (report large forces for stiff lines). Either one would fix the problem; both seem to be good to have in the code. Keith OHara2014-03-082-2/+2
* Improve positioning of tuplet numbers for kneed beams....In the past LilyPond always placed tuplet numbers according to the position of a bracket, though this bracket may or may not have actually been drawn. This system led at times to tuplet numbers which appeared stranded when there was a kneed beam and no visible bracket. This patch positions the tuplet number independently of brackets and close to the beam when the the bracket is not drawn, the beam is kneed, and there is an appropriate beam segment to place the number against. The side of the beam on which the number is placed is chosen by principles derived from Gould. The number is centered horizontally on the beam. Collision detection is also introduced. The number will be offset horizontally if it is too close to an adjoining note column. All shifts preserve the number's vertical distance from the beam. If the number is too large to fit in the available horizontal space (between note columns to either side), we use the old bracket-based positioning system. In the event of a collision with an accidental, the tuplet number is moved vertically, away from the beam. The older behavior is always available through an override of the property `knee-to-beam' which is introduced by this patch, and set by default to true. This patch also adds a header file, `tuplet-number.hh', and provides a number of regression tests illustrating various features. David Nalesnik2014-02-142-14/+459
* Issue 3827: remove the necessity to have a \layout block in a \markup \score ......It turns out that this is not really fixable in the backend since what is called "layout" in the markup function definitions does not actually correspond to \layout but rather to \paper. Very funny. So this is solved in the parser itself when reading a \score or \score-lines to be used in a markup or markup list by cloning $defaultlayout as necessary (which simulates \layout {}) whenever the score is without an output definition. David Kastrup2014-02-141-2/+14
* Let Chord_name_engraver record lastChord in internal context property...Using a context property instead of an engraver-internal variable allows for more flexible behavior of identical chord suppression. David Kastrup2014-02-081-13/+6
* More consistent performance of breath marks. (issue 3821)...After tied notes, breaths take time only from the last note of the tie, so e.g. { c4 ~ c8 \breathe } performs as { c4 ~ c16 r }, not { c4 r8 }. This is consistent with articulations, and with how humans interpret breaths after ties. This makes it possible to align simultaneous breaths in multiple parts with different note lengths. Ignore grace time when calculating the length of the note before a breath — subsequent grace notes take time from the breath, not the previous note. Devon Schudy2014-02-081-4/+8
* Issue 3814: Allow context definitions to be provided by scheme functions...Also obliterates CONTEXT_DEF_IDENTIFIER David Kastrup2014-01-241-41/+58
* Issue 3815: Parser: harmonize \lyricsto and \addlyrics arguments...Previously, they allowed arbitrary music but since that required looking at lookahead tokens in the wrong mode, it led to strange errors like with lyr=\lyricsto A { } mus={c} when mus= was parsed as a single token in lyrics mode. Now both \addlyrics and \lyricsto accept merely the same kind of delimited argument list that \lyrics or \chords accept. Additionally, to preserve compatibility to a lot of examples, music identifiers like \mus are permitted as the argument to \lyricsto and \addlyrics. Since this requires a change in existing uses, this includes a convert-ly rule that removes redundant uses of \lyricmode and rearranges the combination with context starters such that \lyricsto in general is applied last, like \lyricmode would be. David Kastrup2014-01-211-18/+23
* Issue 3792: \time change under last \alternative does not persistDavid Kastrup2014-01-181-6/+8
* Issue 3797: Music_wrapper_iterator does not follow original context setting o......We do this by making Music_iterator::get_handle and Music_iterator::set_context virtual and letting Music_wrapper_iterator redirect them to the child iterator. \score { << { { a4 a b b } a a b b } { \absolute { a4 a b b } a a b b } >> } splits off a new Staff after \absolute { a4 a b b }. David Kastrup2014-01-184-4/+25
* Remove tremoloFlags property (issue 3783)David Kastrup2014-01-151-12/+1
* Issue 3783: track default tremolo type in the parserDavid Kastrup2014-01-153-5/+11
* Parser: remove unused member function declarations and definitions.David Kastrup2014-01-152-14/+0
* Eliminate OUTPUT_DEF_IDENTIFIER as separate tokenDavid Kastrup2014-01-151-14/+2
* Issue 3793: Allow scheme functions and identifiers to function as output defi...David Kastrup2014-01-151-6/+47
* Issue 3794: Fix doc string for ly:context-def-lookupDavid Kastrup2014-01-151-3/+6
* Issue 3780: Allow use of Scheme expressions as chord constituents...That's actually rather desirable for using #{ ... #} in connection with the make-relative macro. David Kastrup2014-01-121-0/+1
* Tremolo cleanup. (issue 3745)...Scale durations when iterating, not in make-repeat. This means the original repeat body is intact, so unfold-repeats and display methods no longer need to undo the scaling. Build tremolo spanners in Scheme, not C++. Calculate tremolo-type in tremolo::get-music-list rather than storing it as a property. shift-duration-log now clears the cached length, since it changes the length. \shiftDurations no longer duplicates shift-duration-log. Merge make-repeated-music with make-repeat. Devon Schudy2014-01-092-36/+3
* Issue 3770: Use value->lily-string for -ddebug-parserDavid Kastrup2014-01-061-11/+11
* Issue 3769: Lexer/Parser: Don't package location data in SCM_TOKEN semantic v......As the location data is available as the location value in the parser anyway, there is no point in packaging it into the semantic value. Among other things, this leads to a cleaner display when using -ddebug-parser, and to better understandable code. David Kastrup2014-01-065-66/+64
* Run grand-replace (issue 3765)...Run make grand-replace to update all coopyright statements Carl Sorensen2014-01-05640-644/+644