+\version "2.1.22"
@c -*-texinfo-*-
@c Note:
@c
@item Music properties
These are used internally, and most users will not see or use them.
-They use Scheme style naming: @code{pitch}, @code{tremolo-type}.
+They use Scheme-style naming, i.e. lowercase words separated with
+dashes: @code{pitch}, @code{tremolo-type}.
@item Translation properties
These influence the translation process, and most users will encounter them
These use mixed-caps naming: @code{autoBeamSettings},
@code{ignoreMelismata}. They are assigned as follows:
@example
- \property LyricsVoice.ignoreMelismata = ...
+ \set ignoreMelismata = ...
@end example
@item Layout properties
@code{break-align-symbol}. They most often assigned as follows:
@example
- \property Score.RehearsalMark \set #'break-align-symbol = ...
+ \override Score.RehearsalMark #'break-align-symbol = ...
@end example
@noindent
of type @var{contexttype} (with name @var{contextname} if specified).
If no such context exists, it will be created:
-@lilypond[verbatim,singleline]
+@lilypond[verbatim,raggedright]
\score {
\notes \relative c'' {
c4 <<d4 \context Staff = "another" e4>> f
context. The notes contained therein inherit the @code{goUp} context
from the enclosing music expression.
-@lilypond[verbatim,singleline]
+@lilypond[verbatim,raggedright]
\notes \context Voice = goUp { c'4 d' e' }
@end lilypond
Second, contexts are created automatically to be able to interpret the
music expressions. Consider the following example:
-@lilypond[verbatim, singleline]
+@lilypond[verbatim,raggedright]
\score { \notes { c'4-( d' e'-) } }
@end lilypond
@noindent
The sequential music is interpreted by the Score context initially,
but when a note is encountered, contexts are setup to accept that
-note. In this case, a @code{Thread}, @code{Voice}, and @code{Staff}
+note. In this case, a @code{Voice}, and @code{Staff}
context are created. The rest of the sequential music is also
-interpreted with the same @code{Thread}, @code{Voice}, and
+interpreted with the same @code{Voice}, and
@code{Staff} context, putting the notes on the same staff, in the same
voice.
@cindex properties, context
@example
-\property @var{contextname}.@var{propname} = @var{value}
+\set @var{contextname}.@var{propname} = @var{value}
@end example
@noindent
If you do not wish to specify the name of the context in the
@code{\property}-expression itself, you can refer to the abstract context
name, @code{Current}. The @code{Current} context is the latest
-used context. This will typically mean the @internalsref{Thread} context,
+used context. This will typically mean the @internalsref{Voice} context,
but you can force another context with the
@code{\property}-command. Hence the expressions
@example
-\property @var{contextname}.@var{propname} = @var{value}
+\set @var{contextname}.@var{propname} = @var{value}
@end example
@noindent
@example
\context @var{contextname}
-\property Current.@var{propname} = @var{value}
+\set Current.@var{propname} = @var{value}
@end example
@noindent
Properties can be unset using the following statement.
@example
-\property @var{contextname}.@var{propname} \unset
+\unset @var{contextname}.@var{propname}
@end example
@cindex properties, unsetting
@refbugs
-The syntax of @code{\unset} is asymmetric: @code{\property \unset} is not
-the inverse of @code{\property \set}.
+The context @code{Current} is confusing.
@node Context evaluation
from the Staff context. The result is a staff without a clef, where
the central C is at its default position, the center line:
-@lilypond[verbatim,singleline]
+@lilypond[verbatim,raggedright]
\score {
\notes {
c'4 f'4
@end lilypond
A list of all engravers is in the internal documentation,
-see @internalsref{All engravers}.
+see @internalsref{Engravers}.
@node Defining new contexts
@subsection Defining new contexts
@itemize @bullet
@item @code{\alias} @var{alternate-name}:
This specifies a different name. In the above example,
-@code{\property Staff.X = Y} will also work on @code{SimpleStaff}s.
+@code{\set Staff.X = Y} will also work on @code{SimpleStaff}s.
@item @code{\consistsend} @var{engravername}:
Analogous to @code{\consists}, but makes sure that
@code{#t} in Scheme, so for LilyPond @var{true} looks like @code{##t},
and can be used in property assignments:
@example
- \property Staff.autoBeaming = ##f
+ \set Staff.autoBeaming = ##f
@end example
@item Scheme_hash_table
@item Music_iterator
-@item Molecule: Device-independent page output object,
+@item Stencil: Device-independent page output object,
including dimensions.
@item Syllable_group
An example is a function that reverses the order of elements in
its argument:
-@lilypond[verbatim,singleline]
+@lilypond[verbatim,raggedright]
#(define (rev-music-1 m)
(ly:set-mus-property! m 'elements (reverse
(ly:get-mus-property m 'elements)))