]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/define-grob-properties.scm
resolve merge
[lilypond.git] / scm / define-grob-properties.scm
index 9fd76528fcbad8794c70c325094f15ae5ba5353a..6afeead4624f619114f3d10f4bbe3ebf9ab37620 100644 (file)
@@ -1,9 +1,20 @@
-;;;; define-grob-properties.scm -- part of generated backend documentation
+;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;;
-;;;; (c) 1998--2009  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2011  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;;
+;;;; LilyPond is free software: you can redistribute it and/or modify
+;;;; it under the terms of the GNU General Public License as published by
+;;;; the Free Software Foundation, either version 3 of the License, or
+;;;; (at your option) any later version.
+;;;;
+;;;; LilyPond is distributed in the hope that it will be useful,
+;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;;; GNU General Public License for more details.
+;;;;
+;;;; You should have received a copy of the GNU General Public License
+;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
 (define (define-grob-property symbol type? description)
   (if (not (equal? (object-property symbol 'backend-doc) #f))
@@ -14,9 +25,7 @@
   symbol)
 
 ;; put this in an alist?
-(define-public
-  all-user-grob-properties
-
+(define-public all-user-grob-properties
   (map
    (lambda (x)
      (apply define-grob-property x))
@@ -39,6 +48,9 @@ be created below this bar line.")
      (alteration-alist ,list? "List of @code{(@var{pitch}
 . @var{accidental})} pairs for key signature.")
      (annotation ,string? "Annotate a grob for debug purposes.")
+     (annotation-balloon ,boolean? "Print the balloon around an annotation.")
+     (annotation-line ,boolean? "Print the line from an annotation to the
+grob that it annotates.")
      (arpeggio-direction ,ly:dir? "If set, put an arrow on the
 arpeggio squiggly line.")
      (arrow-length ,number? "Arrow length.")
@@ -51,10 +63,14 @@ averaged over staves.")
      (avoid-note-head ,boolean? "If set, the stem of a chord does not
 pass through all note heads, but starts at the last note head.")
      (avoid-slur ,symbol? "Method of handling slur collisions.
-Choices are @code{around}, @code{inside}, @code{outside}.  If unset,
-scripts and slurs ignore each other.  @code{around} only moves the
-script if there is a collision; @code{outside} always moves the
-script.")
+Choices are @code{inside}, @code{outside}, @code{around}, and
+@code{ignore}.  @code{inside} adjusts the slur if needed to keep the
+grob inside the slur.  @code{outside} moves the grob vertically to the
+outside of the slur.  @code{around} moves the grob vertically to the
+outside of the slur only if there is a collision.  @code{ignore} does
+not move either.  In grobs whose notational significance depends on
+vertical position (such as accidentals, clefs, etc.), @code{outside}
+and @code{around} behave like @code{ignore}.")
      (axes ,list? "List of axis numbers.  In the case of alignment
 grobs, this should contain only one number.")
 
@@ -62,7 +78,6 @@ grobs, this should contain only one number.")
 ;;
 ;; b
 ;;
-     (bar-size ,ly:dimension? "The size of a bar line.")
      (base-shortest-duration ,ly:moment? "Spacing is based on the
 shortest notes in a piece.  Normally, pieces are spaced as if notes at
 least as short as this are present.")
@@ -91,10 +106,10 @@ beamlet, as a proportion of the distance between two adjacent stems.")
      (before-line-breaking ,boolean? "Dummy property, used to trigger
 a callback function.")
      (between-cols ,pair? "Where to attach a loose column to.")
-     (bound-padding ,number? "The amount of padding to insert around
-spanner bounds.")
      (bound-details ,list? "An alist of properties for determining
 attachments of spanners to edges.")
+     (bound-padding ,number? "The amount of padding to insert around
+spanner bounds.")
      (bracket-flare ,number-pair? "A pair of numbers specifying how
 much edges of brackets should slant outward.  Value @code{0.0} means
 straight edges.")
@@ -109,13 +124,7 @@ for example, this is used to position grobs relative to the (visual)
 center of the bar line.")
      (break-align-anchor-alignment ,number? "Read by
 @code{ly:break-aligned-interface::calc-extent-aligned-anchor} for
-aligning an anchor to a grob's extent")
-     (break-align-symbol ,symbol? "This key is used for aligning and
-spacing breakable items.")
-     (break-align-symbols ,list? "A list of symbols that determine
-which break-aligned grobs to align this to.  If the grob selected by
-the first symbol in the list is invisible due to break-visibility, we
-will align to the next grob (and so on).")
+aligning an anchor to a grob's extent.")
      (break-align-orders ,vector? "Defines the order in which
 prefatory matter (clefs, key signatures) appears.  The format is a
 vector of length@tie{}3, where each element is one order for
@@ -133,6 +142,15 @@ For example, clefs are put after key signatures by setting
                     clef
                     time-signature))
 @end example")
+     (break-align-symbol ,symbol? "This key is used for aligning and
+spacing breakable items.")
+     (break-align-symbols ,list? "A list of symbols that determine
+which break-aligned grobs to align this to.  If the grob selected by
+the first symbol in the list is invisible due to break-visibility, we
+will align to the next grob (and so on).  Choices are @code{left-edge},
+@code{ambitus}, @code{breathing-sign}, @code{clef}, @code{staff-bar},
+@code{key-cancellation}, @code{key-signature}, @code{time-signature},
+and @code{custos}.")
      (break-overshoot ,number-pair? "How much does a broken spanner
 stick out of its bounds?")
      (break-visibility ,vector? "A vector of 3@tie{}booleans,
@@ -152,6 +170,10 @@ hairpins (al/del niente).")
 edges of beams?")
      (collapse-height ,ly:dimension? "Minimum height of system start
 delimiter.  If equal or smaller, the bracket/brace/line is removed.")
+     (collision-interfaces ,list? "A list of interfaces for which
+automatic beam-collision resolution is run.")
+     (collision-voice-only ,boolean? "Does automatic beam collsion apply
+only to the voice in which the beam was created?")
      (color ,color? "The color of this grob.")
      (common-shortest-duration ,ly:moment? "The most common shortest
 note length.  This is used in spacing.  Enlarging this sets the score
@@ -166,11 +188,13 @@ this grob looks as a continued break.")
 control points for the tie, slur, or bracket shape.  For B@'eziers,
 this should list the control points of a third-order B@'ezier curve.")
 
-
 ;;
 ;; d
 ;;
      (damping ,number? "Amount of beam slope damping.")
+     (dash-definition ,pair? "List of @code{dash-elements} defining the
+dash structure.  Each @code{dash-element} has a starting t value,
+an ending t-value, a @code{dash-fraction}, and a @code{dash-period}.")
      (dash-fraction ,number? "Size of the dashes, relative to
 @code{dash-period}.  Should be between @code{0.0} (no line) and
 @code{1.0} (continuous line).")
@@ -178,7 +202,16 @@ this should list the control points of a third-order B@'ezier curve.")
 whitespace.  If negative, no line is drawn at all.")
      (default-direction ,ly:dir? "Direction determined by note head
 positions.")
-     (digit-names ,vector "Names for string finger digits.")
+     (default-staff-staff-spacing ,list? "The settings to use for
+@code{staff-staff-spacing} when it is unset, for ungrouped staves
+and for grouped staves that do not have the relevant
+@code{StaffGrouper} property set (@code{staff-staff-spacing} or
+@code{staffgroup-staff-spacing}).")
+     (details ,list? "Alist of parameters for detailed grob behavior.
+More information on the allowed parameters for a grob can be found by
+looking at the top of the Internals Reference page for each interface
+having a @code{details} property.")
+     (digit-names ,vector? "Names for string finger digits.")
      (direction ,ly:dir? "If @code{side-axis} is @code{0} (or
 @code{#X}), then this property determines whether the object is placed
 @code{#LEFT}, @code{#CENTER} or @code{#RIGHT} with respect to the
@@ -209,10 +242,6 @@ the vertical edges: @code{(@var{left-height} . @var{right-height})}.")
 edges: @code{(@var{left-text} . @var{right-text})}.")
      (expand-limit ,integer? "Maximum number of measures expanded in
 church rests.")
-     (extra-X-extent ,number-pair? "A grob is enlarged in
-X@tie{}dimension by this much.")
-     (extra-Y-extent ,number-pair? "A grob is enlarged in
-Y@tie{}dimension by this much.")
      ;; remove me?
      (extra-dy ,number? "Slope glissandi this much extra.")
      (extra-offset ,number-pair? "A pair representing an offset.  This
@@ -230,6 +259,10 @@ problem, we pad each item by this amount (by adding the @q{car} on the
 left side of the item and adding the @q{cdr} on the right side of the
 item).  In order to make a grob take up no horizontal space at all,
 set this to @code{(+inf.0 . -inf.0)}.")
+     (extra-X-extent ,number-pair? "A grob is enlarged in
+X@tie{}dimension by this much.")
+     (extra-Y-extent ,number-pair? "A grob is enlarged in
+Y@tie{}dimension by this much.")
 
 
 ;;
@@ -248,9 +281,9 @@ for standard flags, @code{'mensural} and @code{'no-flag}, which
 switches off the flag.")
      (font-encoding ,symbol? "The font encoding is the broadest
 category for selecting a font.  Currently, only lilypond's system
-fonts (Emmentaler and Aybabtu) are using this property.  Available
-values are @code{fetaMusic} (Emmentaler), @code{fetaBraces} (Aybabtu),
-@code{fetaNumber} (Emmentaler), and @code{fetaDynamic} (Emmentaler).")
+fonts (Emmentaler) are using this property.  Available
+values are @code{fetaMusic} (Emmentaler), @code{fetaBraces},
+@code{fetaText} (Emmentaler).")
      (font-family ,symbol? "The font family is the broadest category
 for selecting text fonts.  Options include: @code{sans},
 @code{roman}.")
@@ -266,6 +299,7 @@ include @code{upright}, @code{italic}, @code{caps}.")
 @code{-1} is smaller, @code{+1} is bigger.  Each step of@tie{}1 is
 approximately 12% larger; 6@tie{}steps are exactly a factor@tie{}2
 larger.  Fractional values are allowed.")
+     (footnote-text ,markup? "A footnote for the grob.")
      (force-hshift ,number? "This specifies a manual shift for notes
 in collisions.  The unit is the note head width of the first voice
 note.  This is used by @rinternals{note-collision-interface}.")
@@ -306,6 +340,10 @@ Default @code{none} for markup fret diagrams, @code{below-string} for
 @item
 @code{fret-count} -- The number of frets.  Default@tie{}4.
 @item
+@code{fret-label-custom-format} -- The format string to be used label
+the lowest fret number, when @code{number-type} equals to
+@code{custom}.  Default@tie{}\"~a\".
+@item
 @code{fret-label-font-mag} -- The magnification of the font used to
 label the lowest fret number.  Default@tie{}0.5.
 @item
@@ -321,7 +359,9 @@ Default@tie{}0.
 string.  Default @code{\"x\"}.
 @item
 @code{number-type} -- Type of numbers to use in fret label.  Choices
-include @code{roman-lower}, @code{roman-upper}, and @code{arabic}.
+include @code{roman-lower}, @code{roman-upper}, @code{arabic} and
+@code{custom}.  In the later case, the format string is supplied by
+the @code{fret-label-custom-format} property.
 Default @code{roman-lower}.
 @item
 @code{open-string} -- Character string to be used to indicate open
@@ -372,7 +412,9 @@ read from the NonMusicalPaperColumn that begins the measure.")
      (glyph ,string? "A string determining what @q{style} of glyph is
 typeset.  Valid choices depend on the function that is reading this
 property.")
+     (glyph-name ,string? "The glyph name within the font.")
      (glyph-name-alist ,list? "An alist of key-string pairs.")
+     (graphical ,boolean? "Display in graphical (vs. text) form.")
      (grow-direction ,ly:dir? "Crescendo or decrescendo?")
 
 
@@ -417,6 +459,8 @@ semitie?")
 units.")
      (height-limit ,ly:dimension? "Maximum slur height: The longer the
 slur, the closer it is to this height.")
+     (hide-tied-accidental-after-break ,boolean? "If set, an accidental
+that appears on a tied note after a line break will not be displayed.")
      (horizontal-shift ,integer? "An integer that identifies ranking
 of @code{NoteColumn}s for horizontal shifting.  This is used by
 @rinternals{note-collision-interface}.")
@@ -439,9 +483,6 @@ slur quants to this position, and print the respective scores.")
 ;;
 ;; k
 ;;
-     (keep-fixed-while-stretching ,boolean? "A grob with this property
-set to true is fixed relative to the staff above it when systems are
-stretched.")
      (keep-inside-line ,boolean? "If set, this column cannot have
 objects sticking into the margin.")
      (kern ,ly:dimension? "Amount of extra white space to add.  For
@@ -455,10 +496,12 @@ correction and @code{1} for full correction.")
 ;;
 ;; l
 ;;
-     (labels ,list? "List of labels (symbols) placed on a column")
-     (layer ,integer? "The output layer (a value between 0
-and@tie{}2): Layers define the order of printing objects.  Objects in
-lower layers are overprinted by objects in higher layers.")
+     (labels ,list? "List of labels (symbols) placed on a column.")
+     (layer ,integer? "An integer which determines the order of printing
+objects.  Objects with the lowest value of layer are drawn first, then
+objects with progressively higher values are drawn, so objects with
+higher values overwrite objects with lower values.  By default most
+objects are assigned a layer value of 1.")
      (ledger-line-thickness ,number-pair? "The thickness of ledger
 lines.  It is the sum of 2@tie{}numbers: The first is the factor for
 line thickness, and the second for staff space.  Both contributions
@@ -466,7 +509,7 @@ are added.")
      (left-bound-info ,list? "An alist of properties for determining
 attachments of spanners to edges.")
      (left-padding ,ly:dimension? "The amount of space that is put
-left to an object (e.g., a group of accidentals).")
+left to an object (e.g., a lyric extender).")
      (length ,ly:dimension? "User override for the stem length of
 unbeamed stems.")
      (length-fraction ,number? "Multiplier for lengths.  Used for
@@ -513,10 +556,6 @@ guitar notation.  The value of this setting is used by
 
 @code{merge-differently-headed} only applies to opposing stem
 directions (i.e., voice 1 &@tie{}2).")
-     (minimum-X-extent ,number-pair? "Minimum size of an object in
-X@tie{}dimension, measured in @code{staff-space} units.")
-     (minimum-Y-extent ,number-pair? "Minimum size of an object in
-Y@tie{}dimension, measured in @code{staff-space} units.")
      (minimum-distance ,ly:dimension? "Minimum distance between rest
 and notes or beam.")
      (minimum-length ,ly:dimension? "Try to make a spanner at least
@@ -528,6 +567,10 @@ noteheads.")
 as fraction of note head size.")
      (minimum-space ,ly:dimension? "Minimum distance that the victim
 should move (after padding).")
+     (minimum-X-extent ,number-pair? "Minimum size of an object in
+X@tie{}dimension, measured in @code{staff-space} units.")
+     (minimum-Y-extent ,number-pair? "Minimum size of an object in
+Y@tie{}dimension, measured in @code{staff-space} units.")
 
 
 ;;
@@ -546,9 +589,39 @@ syllable following an extender).")
 object.")
      (no-stem-extend ,boolean? "If set, notes with ledger lines do not
 get stems extending to the middle staff line.")
+     (non-break-align-symbols ,list? "A list of symbols that determine
+which NON-break-aligned interfaces to align this to.")
      (non-default ,boolean? "Set for manually specified clefs.")
      (non-musical ,boolean? "True if the grob belongs to a
 @code{NonMusicalPaperColumn}.")
+     (nonstaff-nonstaff-spacing ,list? "The spacing alist
+controlling the distance between the current non-staff line and
+the next non-staff line in the direction of @code{staff-affinity},
+if both are on the same side of the related staff, and
+@code{staff-affinity} is either @code{UP} or @code{DOWN}.  See
+@code{staff-staff-spacing} for a description of the alist
+structure.")
+     (nonstaff-relatedstaff-spacing ,list? "The spacing alist
+controlling the distance between the current non-staff line and
+the nearest staff in the direction of @code{staff-affinity}, if
+there are no non-staff lines between the two, and
+@code{staff-affinity} is either @code{UP} or @code{DOWN}.  If
+@code{staff-affinity} is @code{CENTER}, then
+@code{nonstaff-relatedstaff-spacing} is used for the nearest
+staves on @emph{both} sides, even if other non-staff lines appear
+between the current one and either of the staves.  See
+@code{staff-staff-spacing} for a description of the alist
+structure.")
+     (nonstaff-unrelatedstaff-spacing ,list? "The spacing alist
+controlling the distance between the current non-staff line and
+the nearest staff in the opposite direction from
+@code{staff-affinity}, if there are no other non-staff lines
+between the two, and @code{staff-affinity} is either @code{UP} or
+@code{DOWN}.  See @code{staff-staff-spacing} for a description of
+the alist structure.")
+     (normalized-endpoints ,pair? "Represents left and right placement
+over the total spanner, where the width of the spanner is normalized
+between 0 and 1.")
      (note-names ,vector? "Vector of strings containing names for
 easy-notation note heads.")
 
@@ -640,11 +713,6 @@ value @code{-1} means left aligned, @code{0}@tie{}centered, and
 values may also be specified.")
      (self-alignment-Y ,number? "Like @code{self-alignment-X} but for
 the Y@tie{}axis.")
-     (toward-stem-shift ,number? "Amount by which scripts are shifted
-toward the stem if their direction coincides with the stem direction.
-@code{0.0} means keep the default position (centered on the note
-head), @code{1.0} means centered on the stem.  Interpolated values are
-possible.")
      (shorten-pair ,number-pair? "The lengths to shorten a
 text-spanner on both sides, for example a pedal bracket.  Positive
 values shorten the text-spanner, while negative values lengthen it.")
@@ -669,6 +737,11 @@ vertical distance between two staves, it is possible to have a
 configuration which would result in a tight interleaving of grobs from
 the top staff and the bottom staff.  The larger this parameter is, the
 farther apart the staves are placed in such a configuration.")
+     (skyline-vertical-padding ,number? "The amount by which the left
+and right skylines of a column are padded vertically, beyond the
+@code{Y-extent}s and @code{extra-spacing-height}s of the constituent
+grobs in the column.  Increase this to prevent interleaving of grobs
+from adjacent columns.")
      (slash-negative-kern ,number? "The space to remove between
 slashes in percent repeat glyphs.  Larger values bring the two
 elements closer together.")
@@ -688,9 +761,28 @@ there.")
      (spacing-increment ,number? "Add this much space for a doubled
 duration.  Typically, the width of a note head.  See also
 @rinternals{spacing-spanner-interface}.")
+     (spacing-pair ,pair? "A pair of alignment symbols which set an object's
+spacing relative to its left and right @code{BreakAlignment}s.
+
+For example, a @code{MultiMeasureRest} will ignore prefatory items at its
+bounds (i.e., clefs, key signatures and time signatures) using the following
+override:
+
+@example
+\\override MultiMeasureRest #'spacing-pair = #'(staff-bar . staff-bar)
+@end example")
+     (spanner-id ,string? "An identifier to distinguish concurrent spanners.")
      (springs-and-rods ,boolean? "Dummy variable for triggering
 spacing routines.")
      (stacking-dir ,ly:dir? "Stack objects in which direction?")
+     (staff-affinity ,ly:dir? "The direction of the staff to use
+for spacing the current non-staff line.  Choices are @code{UP},
+@code{DOWN}, and @code{CENTER}.  If @code{CENTER}, the non-staff
+line will be placed equidistant between the two nearest staves on
+either side, unless collisions or other spacing constraints
+prevent this.  Setting @code{staff-affinity} for a staff causes it
+to be treated as a non-staff line.  Setting @code{staff-affinity}
+to @code{#f} causes a non-staff line to be treated as a staff.")
      (staff-padding ,ly:dimension? "Maintain this much space between
 reference points and the staff.  Its effect is to align objects of
 differing sizes (like the dynamics @b{p} and @b{f}) on their
@@ -699,6 +791,48 @@ baselines.")
 staff spaces, counted from the middle line.")
      (staff-space ,ly:dimension? "Amount of space between staff lines,
 expressed in global @code{staff-space}.")
+     (staff-staff-spacing ,list? "When applied to a staff-group's
+@code{StaffGrouper} grob, this spacing alist controls the distance
+between consecutive staves within the staff-group.  When applied
+to a staff's @code{VerticalAxisGroup} grob, it controls the
+distance between the staff and the nearest staff below it in the
+same system, replacing any settings inherited from the
+@code{StaffGrouper} grob of the containing staff-group, if there
+is one.  This property remains in effect even when non-staff lines
+appear between staves.  The alist can contain the following keys:
+
+@itemize
+
+@item
+@code{basic-distance} -- the vertical distance, measured in
+staff-spaces, between the reference points of the two items when
+no collisions would result, and no stretching or compressing is in
+effect.
+
+@item
+@code{minimum-distance} -- the smallest allowable vertical
+distance, measured in staff-spaces, between the reference points
+of the two items, when compressing is in effect.
+
+@item
+@code{padding} -- the minimum required amount of unobstructed
+vertical whitespace between the bounding boxes (or skylines) of
+the two items, measured in staff-spaces.
+
+@item
+@code{stretchability} -- a unitless measure of the dimension's
+relative propensity to stretch.  If zero, the distance will not
+stretch (unless collisions would result).
+
+@end itemize")
+     (staffgroup-staff-spacing ,list? "The spacing alist
+controlling the distance between the last staff of the current
+staff-group and the staff just below it in the same system, even
+if one or more non-staff lines exist between the two staves.  If
+the @code{staff-staff-spacing} property of the staff's
+@code{VerticalAxisGroup} grob is set, that is used instead.  See
+@code{staff-staff-spacing} for a description of the alist
+structure.")
      (stem-attachment ,number-pair? "An @code{(@var{x} . @var{y})}
 pair where the stem attaches to the notehead.")
      (stem-end-position ,number? "Where does the stem end (the end is
@@ -714,7 +848,7 @@ rest?")
      (stencils ,list? "Multiple stencils, used as intermediate
 value.")
      (strict-grace-spacing ,boolean? "If set, main notes are spaced
-normally, then grace notes are put left of the musical columns fot the
+normally, then grace notes are put left of the musical columns for the
 main notes.")
      (strict-note-spacing ,boolean? "If set, unbroken columns with
 non-musical material (clefs, bar lines, etc.) are not spaced
@@ -739,8 +873,6 @@ should use @code{LEFT}.")
      (thickness ,number? "Line thickness, generally measured in
 @code{line-thickness}.")
      (thin-kern ,number? "The space after a hair-line in a bar line.")
-     (threshold ,number-pair? "@code{(@var{min} . @var{max})}, where
-@var{min} and @var{max} are dimensions in staff space.")
      (tie-configuration ,list? "List of @code{(@var{position} .
 @var{dir})} pairs, indicating the desired tie configuration, where
 @var{position} is the offset from the center of the staff in staff
@@ -750,6 +882,11 @@ in the list causes the corresponding tie to be formatted
 automatically.")
      (to-barline ,boolean? "If true, the spanner will stop at the bar
 line just before it would otherwise stop.")
+     (toward-stem-shift ,number? "Amount by which scripts are shifted
+toward the stem if their direction coincides with the stem direction.
+@code{0.0} means keep the default position (centered on the note
+head), @code{1.0} means centered on the stem.  Interpolated values are
+possible.")
      (transparent ,boolean? "This makes the grob invisible.")
 
 
@@ -775,6 +912,9 @@ one below this grob.")
 ;;
      (when ,ly:moment? "Global time step associated with this column
 happen?")
+     (whiteout ,boolean? "If true, the grob is printed over a white
+background to white-out underlying material, if the grob is visible.
+ Usually #f by default.")
      (width ,ly:dimension? "The width of a grob measured in staff
 space.")
      (word-space ,ly:dimension? "Space to insert between words in
@@ -827,136 +967,140 @@ constructed from a whole number of squiggles.")
    `(
      ;;;;;;;;;;;;;;;;
      ;; grobs & grob arrays.  (alphabetical)
-     (X-common ,ly:grob? "Common reference point for axis group.")
-
-     (Y-common ,ly:grob? "See @code{X-common}.")
-
      (accidental-grob ,ly:grob? "The accidental for this note.")
      (accidental-grobs ,list? "An alist with @code{(@var{notename} .
 @var{groblist})} entries.")
-     (adjacent-pure-heights ,vector? "Used by a @code{VerticalAxisGroup} to
-cache the @code{Y-extent}s of different column ranges.")
-     (adjacent-hairpins ,ly:grob-array? "A list of directly neighboring
-hairpins.")
-     (all-elements ,ly:grob-array? "A list of all grobs in this line.  Its
+     (adjacent-spanners ,ly:grob-array? "An array of directly neighboring
+dynamic spanners.")
+     (all-elements ,ly:grob-array? "An array of all grobs in this line.  Its
 function is to protect objects from being garbage collected.")
      (arpeggio ,ly:grob? "A pointer to an @code{Arpeggio} object.")
      (axis-group-parent-X ,ly:grob? "Containing X@tie{}axis group.")
      (axis-group-parent-Y ,ly:grob? "Containing Y@tie{}axis group.")
 
-     (bar-extent ,number-pair? "The Y-extent of the actual bar line.
-This may differ from @code{Y-extent} because it does not include the dots in
-a repeat bar line.")
-     (bars ,ly:grob-array? "A list of bar line pointers.")
+     (bars ,ly:grob-array? "An array of bar line pointers.")
      (beam ,ly:grob? "A pointer to the beam, if applicable.")
-     (bounded-by-me ,ly:grob-array? "A list of spanners that have this
+     (bounded-by-me ,ly:grob-array? "An array of spanners that have this
 column as start/begin point.  Only columns that have grobs or act as
 bounds are spaced.")
      (bracket ,ly:grob? "The bracket for a number.")
 
-     (columns ,ly:grob-array? "A list of grobs, typically containing
+     (columns ,ly:grob-array? "An array of grobs, typically containing
 @code{PaperColumn} or @code{NoteColumn} objects.")
      (conditional-elements ,ly:grob-array? "Internal use only.")
-     (cross-staff ,boolean? "For a beam or a stem, this is true if we
-depend on inter-staff spacing.")
+     (covered-grobs ,ly:grob-array? "Grobs that could potentially collide
+with a beam.")
 
      (direction-source ,ly:grob? "In case @code{side-relative-direction} is
 set, which grob to get the direction from.")
+     (display-cautionary ,boolean? "Should the grob be displayed as a cautionary grob?")
      (dot ,ly:grob? "A reference to a @code{Dots} object.")
      (dots ,ly:grob-array? "Multiple @code{Dots} objects.")
 
-     (elements ,ly:grob-array? "A list of grobs; the type is depending on
+     (elements ,ly:grob-array? "An array of grobs; the type is depending on
 the grob where this is set in.")
      (encompass-objects ,ly:grob-array? "Objects that a slur should avoid
 in addition to notes and stems.")
 
      (figures ,ly:grob-array? "Figured bass objects for continuation line.")
-     (forced ,boolean? "Manually forced accidental.")
 
-     (glyph-name ,string? "The glyph name within the font.")
+     (glissando-index ,integer? "The index of a glissando in its note
+column.")
      (grace-spacing ,ly:grob? "A run of grace notes.")
 
-     (heads ,ly:grob-array? "A list of note heads.")
+     (heads ,ly:grob-array? "An array of note heads.")
 
-     (important-column-ranks ,vector? "A cache of columns that contain
-@code{items-worth-living} data.")
-     (items-worth-living ,ly:grob-array? "A list of interesting items.  If
+     (items-worth-living ,ly:grob-array? "An array of interesting items.  If
 empty in a particular staff, then that staff is erased.")
 
-     (left-items ,ly:grob-array? "DOCME")
-     (left-neighbors ,ly:grob-array? "A list of @code{spacing-wishes} grobs
-that are close to the current column.
+     (keep-alive-with ,ly:grob-array? "An array of other
+@code{VerticalAxisGroup}s.  If any of them are alive, then we will stay alive.")
 
-The closest @code{spacing-wishes} determine the actual distances between the
-columns.")
+     (left-items ,ly:grob-array? "DOCME")
+     (left-neighbor ,ly:grob? "The right-most column that has a spacing-wish
+for this column.")
 
      (normal-stems ,ly:grob-array? "An array of visible stems.")
-     (note-columns ,pair? "A list of @code{NoteColumn} grobs.")
+     (note-columns ,ly:grob-array? "An array of @code{NoteColumn} grobs.")
      (note-head ,ly:grob? "A single note head.")
-     (note-heads ,ly:grob-array? "A list of note head grobs.")
+     (note-heads ,ly:grob-array? "An array of note head grobs.")
      (pedal-text ,ly:grob? "A pointer to the text of a mixed-style piano
 pedal.")
-     (pure-Y-common ,ly:grob? "A cache of the
-@code{common_refpoint_of_array} of the @code{elements} grob set.")
-     (pure-Y-offset-in-progress ,boolean? "A debugging aid for catching
-cyclic dependencies.")
+     (pure-relevant-grobs ,ly:grob-array? "All the grobs (items and spanners)
+that are relevant for finding the @code{pure-Y-extent}")
      (pure-relevant-items ,ly:grob-array? "A subset of elements that are
 relevant for finding the @code{pure-Y-extent}.")
      (pure-relevant-spanners ,ly:grob-array? "A subset of elements that are
 relevant for finding the @code{pure-Y-extent}.")
+     (pure-Y-common ,ly:grob? "A cache of the
+@code{common_refpoint_of_array} of the @code{elements} grob set.")
 
      (rest ,ly:grob? "A pointer to a @code{Rest} object.")
      (rest-collision ,ly:grob? "A rest collision that a rest is in.")
-     (rests ,ly:grob-array? "A list of rest objects.")
+     (rests ,ly:grob-array? "An array of rest objects.")
      (right-items ,ly:grob-array? "DOCME")
-     (right-neighbors ,ly:grob-array? "See @code{left-neighbors}.")
+     (right-neighbor ,ly:grob? "See @code{left-neighbor}.")
 
-     (separation-item ,ly:grob? "A separation item.")
-     (side-support-elements ,ly:grob-array? "The side support, a list of
+     (side-support-elements ,ly:grob-array? "The side support, an array of
 grobs.")
      (slur ,ly:grob? "A pointer to a @code{Slur} object.")
-     (spaceable-staves ,ly:grob-array? "Objects to be spaced during page
-layout.")
      (spacing ,ly:grob? "The spacing spanner governing this section.")
-     (spacing-wishes ,ly:grob-array? "List of note spacing or staff spacing
+     (spacing-wishes ,ly:grob-array? "An array of note spacing or staff spacing
 objects.")
+     (span-start ,boolean? "Is the note head at the start of a spanner?")
+     (spanner-placement ,ly:dir? "The place of an annotation on a spanner.
+LEFT is for the first spanner, and RIGHT is for the last.  CENTER will
+place it on the broken spanner that falls closest to the center of the length
+of the entire spanner, although this behavior is unpredictable in situations
+with lots of rhythmic diversity.  For predictable results, use LEFT and RIGHT.")
+     (staff-grouper ,ly:grob? "The staff grouper we belong to.")
      (staff-symbol ,ly:grob? "The staff symbol grob that we are in.")
      (stem ,ly:grob? "A pointer to a @code{Stem} object.")
-     (stems ,ly:grob-array? "A list of stem objects, corresponding to the
-notes that the arpeggio has to be before.")
+     (stems ,ly:grob-array? "An array of stem objects.")
 
      (tie ,ly:grob? "A pointer to a @code{Tie} object.")
      (tremolo-flag ,ly:grob? "The tremolo object on a stem.")
      (tuplet-number ,ly:grob? "The number for a bracket.")
-     (tuplets ,ly:grob-array? "A list of smaller tuplet brackets.")
+     (tuplets ,ly:grob-array? "An array of smaller tuplet brackets.")
+     (X-common ,ly:grob? "Common reference point for axis group.")
+     (Y-common ,ly:grob? "See @code{X-common}.")
 
      ;;;;;;;;;;;;;;;;
      ;; other
-     (begin-of-line-visible ,boolean? "Used for marking @code{ChordNames}
-that should only show changes.")
+     (adjacent-pure-heights ,pair? "A pair of vectors.  Used by a
+@code{VerticalAxisGroup} to cache the @code{Y-extent}s of different column
+ranges.")
+
+     (bar-extent ,number-pair? "The Y-extent of the actual bar line.
+This may differ from @code{Y-extent} because it does not include the dots in
+a repeat bar line.")
+     (begin-of-line-visible ,boolean? "Set to make @code{ChordName} or
+@code{FretBoard} be visible only at beginning of line or at
+chord changes.")
 
      (cause ,scheme? "Any kind of causation objects (i.e., music, or perhaps
 translator) that was the cause for this grob.")
-     (delta-position ,number? "The vertical position difference.")
-     (details ,list? "Alist of parameters for detailed grob behavior.
+     (cross-staff ,boolean? "For a beam or a stem, this is true if we
+depend on inter-staff spacing.")
 
-More information on the allowed parameters can be found by inspecting
-@file{lily/slur-scoring.cc}, @file{lily/beam-quanting.cc}, and
-@file{lily/tie-formatting-problem.cc}.  Setting @code{debug-tie-scoring},
-@code{debug-beam-scoring} or @code{debug-slur-scoring} also provides
-useful clues.")
+     (delta-position ,number? "The vertical position difference.")
 
      (font ,ly:font-metric? "A cached font metric object.")
+     (forced ,boolean? "Manually forced accidental.")
 
      (head-width ,ly:dimension? "The width of this ligature head.")
 
      (ideal-distances ,list? "@code{(@var{obj} . (@var{dist} .
 @var{strength}))} pairs.")
+     (important-column-ranks ,vector? "A cache of columns that contain
+@code{items-worth-living} data.")
      (interfaces ,list? "A list of symbols indicating the interfaces
 supported by this object.  It is initialized from the @code{meta} field.")
 
      (least-squares-dy ,number? "The ideal beam slope, without damping.")
 
+     (maybe-loose ,boolean? "Used to mark a breakable column that is
+loose if and only if it is in the middle of a line.")
      (meta ,list? "Provide meta information.  It is an alist with the
 entries @code{name} and @code{interfaces}.")
      (minimum-distances ,list? "A list of rods that have the format
@@ -965,9 +1109,8 @@ entries @code{name} and @code{interfaces}.")
      (positioning-done ,boolean? "Used to signal that a positioning element
 did its job.  This ensures that a positioning is only done once.")
      (pure-Y-extent ,number-pair? "The estimated height of a system.")
-
-     (quant-score ,string? "The beam quanting score; stored for
-debugging.")
+     (pure-Y-offset-in-progress ,boolean? "A debugging aid for catching
+cyclic dependencies.")
      (quantize-position ,boolean? "If set, a vertical alignment is aligned
 to be within staff spaces.")
      (quantized-positions ,number-pair? "The beam positions after
@@ -977,9 +1120,9 @@ quanting.")
 acts as an index for looking up a @code{Stencil} object.")
      (shorten ,ly:dimension? "The amount of space that a stem is shortened.
 Internally used to distribute beam shortening over stems.")
-     (skyline-distance ,number? "The distance between this staff and the
-next one, as determined by a skyline algorithm.")
      (stem-info ,pair? "A cache of stem parameters.")
+     (system-Y-offset ,number? "The Y-offset (relative to the bottom of the
+top-margin of the page) of the system to which this staff belongs.")
 
      (use-breve-rest ,boolean? "Use breve rests for measures longer
 than a whole rest.")
@@ -1012,19 +1155,20 @@ a head may be affected by the left and/or right neighbour head.
 @code{context-info} holds for each head such information about the left and
 right neighbour, encoded as a bit mask.")
 
-     (descendens ,boolean? "Is this neume of descendent type?")
      (deminutum ,boolean? "Is this neume deminished?")
+     (descendens ,boolean? "Is this neume of descendent type?")
 
      (flexa-height ,ly:dimension? "The height of a flexa shape in a ligature
 grob (in @code{staff-space} units).")
+     (flexa-interval ,integer? "The interval spanned by the two notes of a
+flexa shape (1 is a second, 7 is an octave).")
      (flexa-width ,ly:dimension? "The width of a flexa shape in a
 ligature grob in (in @code{staff-space} units).")
+     (ligature-flexa ,boolean? "request joining note to the previous one
+in a flexa.")
 
      (inclinatum ,boolean? "Is this neume an inclinatum?")
 
-     (join-heads ,boolean? "Whether to join the note heads of an ambitus
-grob with a vertical line.")
-     (join-right-amount ,number? "DOCME")
 
      (linea ,boolean? "Attach vertical lines to this neume?")