X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fchanges.tely;h=89ca12f4e87978cbb8825aa047c64bd5221a3069;hb=21ac191115aa928a79fc732ce91f3a4082a95063;hp=fcfd6ed68b71fd8d060ae99f6436d203196de41e;hpb=5edacf4c1908d0fe988d0ef9b3d6a9820a1e8734;p=lilypond.git diff --git a/Documentation/changes.tely b/Documentation/changes.tely index fcfd6ed68b..89ca12f4e8 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -60,6 +60,108 @@ which scares away people. * only show user-visible changes. @end ignore +@item +Scheme expressions inside of embedded Lilypond (@code{#@{@dots{}#@}}) +are now executed in lexical closure of the surrounding Scheme code. +@code{$} is no longer special in embedded Lilypond. It can be used +unconditionally in Lilypond code for immediate evaluation, similar to +how @code{ly:export} could previously be used. @code{ly:export} has +been removed. As a consequence, @code{#} is now free to delay +evaluation of its argument until the parser actually reduces the +containing expression, greatly reducing the potential for premature +evaluation. + +@item +Support for jazz-like chords has been improved: Lydian and altered +chords are recognised; separators between chord modifiers are now +treated independently of separators between ``slash'' chords and their +bass notes (and by default, slashes are now only used for the latter +type of separator); additional pitches are no longer prefixed with +``add'' by default; and the ``m'' in minor chords can be customized. +@ruser{Customizing chord names} for more information. + +@item +The @code{\markuplines} command has been renamed to @code{\markuplist} +for a better match with its semantics and general Lilypond +nomenclature. + +@item +The interface for specifying string tunings in tablature has been +simplified considerably. + +@item +Beams can now have their slopes preserved over line breaks. +@lilypond[fragment,quote,relative=2] +\override Beam #'breakable = ##t +a8[ b c d e f g \bar "" \break f e d c b a] +\once \override Beam #'positions = #beam::align-with-broken-parts +a8[ b c d e f g \bar "" \break f e d c b a] +\once \override Beam #'positions = #beam::slope-like-broken-parts +a8[ b c d e f g \bar "" \break f e d c b a] +@end lilypond +To do this, several callback functions are now deprecated. +@itemize +@item @code{ly:beam::calc-least-squares-positions} +@item @code{ly:beam::slope-damping} +@item @code{ly:beam::shift-region-to-valid} +@end itemize +Furthermore, @code{ly:beam::quanting} now takes an additional argument +to help calculations over line breaks. All of these functions are now +automatically called when setting the @code{positions} parameter. + +@item +In function arguments music, markups and Scheme expressions (as well +as several other syntactic entities) have become mostly +interchangeable and are told apart only by evaluating the respective +predicate. + +@item +Music functions (and their close relatives) can now be defined with +optional arguments. + +@item +For defining commands executed only for their side-effects, +@code{define-void-function} is now available. + +@item +There is a new @code{define-event-function} command in analogy to +@code{define-music-function} that can be used for defining music +functions acting as events without requiring a direction specifier +(@code{-}, @code{^}, or @code{_}) placed before them. +@lilypond[quote,verbatim,ragged-right] +dyn=#(define-event-function (parser location arg) (markup?) + (make-dynamic-script arg)) +\relative c' { c\dyn pfsss } +@end lilypond + +@item +A list of ASCII aliases for special characters can be included. +@lilypond[quote,verbatim] +\paper { + #(include-special-characters) +} +\markup "• † ©right; &OE; &ss; ¶" +@end lilypond + +@item +There is a new @code{define-scheme-function} command in analogy to +@code{define-music-function} that can be used to define functions +evaluating to Scheme expressions while accepting arguments in Lilypond +syntax. + +@item +The construct @code{#@{ @dots{} #@}} can now be used not just for +constructing sequential music lists, but also for single music events, +void music expressions, post events, markups (mostly freeing users from +having to use the @code{markup} macro), markup lists, number +expressions, context definitions and modifications, and a few other +things. If it encloses nothing or only a single music event, it no +longer returns a sequential music list but rather a void music +expression or just the music event itself, respectively. + +@item +New command-line option @option{--loglevel=@var{level}} to control how much output +LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG. @item @code{\set \once} now correctly resets the property value to the previous value. @@ -84,7 +186,7 @@ c4_\< c c^\> c c1_\p Appoggiaturas and acciaccaturas now also work inside a slur, not only inside a phrasing slur. Also, a function @code{\slashedGrace} was added that does does not use a slur from the acciaccatura note. -@lilypond[fragment,relative=2] +@lilypond[fragment,quote,relative=2] c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4) @end lilypond