]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/define-grob-properties.scm
minor parmesan fixes
[lilypond.git] / scm / define-grob-properties.scm
index 7628772368cf01725f7738553da79e5833b0aa5b..014481c0ca7ffd195b42b4851fa6e3d914cae1bc 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2005  Han-Wen Nienhuys <hanwen@cs.uu.nl>
+;;;; (c) 1998--2006  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define (define-grob-property symbol type? description)
      (apply define-grob-property x))
 
    `(
-     (X-extent-callback ,procedure? "Procedure that calculates the
-extent of this object. If this value is set to @code{#f}, the object
-is empty in the X direction.  The procedure takes a grob and axis
-argument, and returns a number-pair.
-")
-
-     (X-offset-callbacks ,list? "A list of functions determining this
-objects' position relative to its parent. The last one in the list is
-called first.  The functions take a grob and axis argument. ")
-
-     (Y-extent-callback ,procedure? "see @code{X-extent-callback}.")
-     (Y-offset-callbacks ,list? "see @code{X-offset-callbacks}.")
+     (X-extent ,number-pair? "Hard coded extent in X@tie{}direction.")
+     (X-offset ,number? "The horizontal amount that this object is
+moved relative to its X-parent.")
+     (Y-extent ,number-pair? "See @code{X-extent}.")
+     (Y-offset ,number? "The vertical amount that this object is moved
+relative to its Y-parent.")
 
-     (accidentals ,list? "List of alteration numbers")
-     (alteration-alist ,list? "List of @code{(@var{pitch}
-. @var{accidental})} pairs for key signature.")
-     (add-stem-support ,boolean? "If set, the Stem object is included in this script's support") 
-    
+     (add-stem-support ,boolean? "If set, the @code{Stem} object is
+included in this script's support.") 
+     (after-line-breaking ,boolean? "Dummy property, used to trigger
+callback for @code{after-line-breaking}.")
      (align-dir ,ly:dir? "Which side to align? @code{-1}: left side,
 @code{0}: around center of width, @code{1}: right side.")
-     (arpeggio-direction ,ly:dir? "If set, put an
-arrow on the arpeggio squiggly line.")
-  
-     (auto-knee-gap ,ly:dimension? "If a gap is found between note heads
-where a horizontal beam fits that is larger than this number, make a kneed beam.")
-     (axes ,list? "list of axis numbers.
-In the case of alignment grobs, this should contain only one number.")
-
-     (balloon-text ,markup? "Text to add to help balloon")
-     (balloon-text-props ,list? "Font properties
-for balloon text.")
-     (balloon-text-offset ,number-pair?
-                         "Where to put text relative to balloon.")
-     (balloon-padding ,ly:dimension? "Text to add to help balloon")
-     (balloon-original-callback ,procedure? "The
-original stencil drawer to draw the balloon around.")
-
-
-     (bar-size ,ly:dimension? "size of a bar line.")
-     (bar-size-procedure ,procedure? "Procedure that computes the size of a bar line.")
-     (barre-type ,symbol? "Type of barre indication used in a fret diagram.
-Choices include @code{curved} and @code{straight}.")
-     (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.")
+     (allow-loose-spacing ,boolean? "If set, column can be detached
+from main spacing.")
+     (alteration ,number? "Alteration numbers for accidental.")
+     (alteration-alist ,list? "List of @code{(@var{pitch}
+. @var{accidental})} pairs for key signature.")
+     (arpeggio-direction ,ly:dir? "If set, put an arrow on the
+arpeggio squiggly line.")
+     (arrow-length ,number? "Arrow length.")
+     (arrow-width ,number? "Arrow width.")
+     (auto-knee-gap ,ly:dimension? "If a gap is found between note
+heads where a horizontal beam fits that is larger than this number,
+make a kneed beam.")
+     (average-spacing-wishes ,boolean? "If set, the spacing wishes
+are 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.")
+     (axes ,list? "List of axis numbers.  In the case of alignment
+grobs, this should contain only one number.")
+
+     (bar-size ,ly:dimension? "The size of a bar line.")
+     (barre-type ,symbol? "Type of barre indication used in a fret
+diagram.  Choices include @code{curved} and @code{straight}.")
+     (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.")
      (baseline-skip ,ly:dimension? "Distance between base lines of
- multiple lines of text.")
-     (beam-thickness ,ly:dimension? "thickness, measured in staffspace.")
-     (beam-width ,ly:dimension? "width of the tremolo sign.")
-     (beamed-lengths ,list? "list of stem lengths given beam multiplicity .")
-     (beamed-minimum-free-lengths ,list? "list of normal minimum free stem lengths (chord to beams) given beam multiplicity.")
-     (beamed-extreme-minimum-free-lengths ,list? "list of extreme minimum free stem lengths (chord to beams) given beam multiplicity.")
-
+multiple lines of text.")
+     (beam-thickness ,ly:dimension? "Beam thickness, measured in
+@code{staff-space} units.")
+     (beam-width ,ly:dimension? "Width of the tremolo sign.")
      (beamed-stem-shorten ,list? "How much to shorten beamed stems,
-when their direction is forced. It is a list, since the value is different
-depending on the number flags/beams.")
-     (beaming ,pair?
-             "Pair of number lists. Each number list specifies which
-beams to make. 0 is the central beam, 1 is the next beam toward the
-note etc. This information is used to determine how to connect the
-beaming patterns from stem to stem inside a beam.")
-
-
-     (before-line-breaking-callback ,procedure? "This procedure is
-called before line breaking, but after splitting breakable items at
-potential line breaks.")
-     (between-cols ,pair? "Where to attach a loose column to")
-     (bound-padding ,number? "The amount of padding to insert around spanner bounds.")
+when their direction is forced.  It is a list, since the value is
+different depending on the number of flags and beams.")
+     (beaming ,pair? "Pair of number lists.  Each number list
+specifies which beams to make.  @code{0}@tie{}is the central beam,
+@code{1}@tie{}is the next beam toward the note, etc.  This
+information is used to determine how to connect the beaming patterns
+from stem to stem inside a beam.")
+     (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.")
      (bracket-flare ,number-pair? "A pair of numbers specifying how
-much edges of brackets should slant outward.  Value 0.0 means straight
-edges")
+much edges of brackets should slant outward.  Value @code{0.0} means
+straight edges.")
+     (bracket-visibility ,boolean-or-symbol? "This controls the
+visibility of the tuplet bracket.  Setting it to false prevents
+printing of the bracket.  Setting the property to @code{if-no-beam}
+makes it print only if there is no beam associated with this tuplet
+bracket.")
+     (break-align-anchor ,number? "Grobs aligned to this break-align
+grob will have their X-offsets shifted by this number. In barlines,
+for example, this is used to position grobs relative to the (visual)
+center of the barline.")
+     (break-align-anchor-alignment ,number? "Read by
+ly:break-aligned-interface::calc-extent-aligned-anchor for aligning
+an anchor to a grobs extent")
      (break-align-symbol ,symbol? "This key is used for aligning and
 spacing breakable items.")
-     (break-align-orders ,vector? " Defines the order in which
-prefatory matter (clefs, key signatures) appears. The format is a
-vector of length 3, where each element is one order for end-of-line,
-middle of line, and start-of-line respectively. An order is a list of
-symbols.
+     (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).")
+     (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
+end-of-line, middle of line, and start-of-line, respectively.  An
+order is a list of symbols.
 
 For example, clefs are put after key signatures by setting
 
 @example
-       \\override Score.BreakAlignment #'break-align-orders = #(make-vector  3
-         '(span-bar
-         breathing-sign
-         staff-bar
-         key
-         clef
-         time-signature))
+\\override Score.BreakAlignment #'break-align-orders =
+  #(make-vector 3 '(span-bar
+                    breathing-sign
+                    staff-bar
+                    key
+                    clef
+                    time-signature))
 @end example")
-     (break-glyph-function ,procedure? "This function determines the
-appearance of a bar line at the line break.  It takes a glyph and
-break-direction and returns the glyph at a line break.")
      (break-overshoot ,number-pair? "How much does a broken spanner
 stick out of its bounds?")
-     (bracket-visibility ,boolean-or-symbol? "This controls the
-visibility of the tuplet bracket.  Setting it to false will prevent
-printing of the bracket. Setting the property to @code{'if-no-beam}
-will make it print only if there is no beam associated with this
-tuplet bracket.")
-     (break-visibility ,vector? "A vector of 3 booleans, #(end-of-line unbroken begin-of-line).
-#t means visible, #f means killed.")
-
-     (breakable ,boolean? "Can this object appear at a line break,
-like clefs and bar lines?")
-     (c0-position ,integer? "An integer indicating the position of
-middle C.")
-     (cautionary-style ,symbol? "How to print cautionary
-accidentals. Choices are @code{smaller} or
-@code{parentheses}.")
-     (cautionary ,boolean? "Is this a cautionary accidental?")
-     (concaveness ,number? "A beam is concave when its inner stems are
-closer to the beam than the two outside stems. This number is a
-measure of the closeness of the inner stems. It is used for damping
-the slope of the beam.")
-     (collapse-height ,ly:dimension? "Minimum height of system start delimiter.  If equal or smaller, the bracket is removed.")
+     (break-visibility ,vector? "A vector of 3@tie{}booleans,
+@code{#(@var{end-of-line} @var{unbroken} @var{begin-of-line})}.
+@code{#t} means visible, @code{#f} means killed.")
+     (breakable ,boolean? "Allow breaks here.")
 
+     (c0-position ,integer? "An integer indicating the position of
+middle@tie{}C.")
+     (clip-edges ,boolean? "Allow outward pointing beamlets at the
+edges of beams?")
+     (collapse-height ,ly:dimension? "Minimum height of system start
+delimiter.  If equal or smaller, the bracket is removed.")
      (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
+tighter.")
+     (concaveness ,number? "A beam is concave if its inner stems are
+closer to the beam than the two outside stems.  This number is a
+measure of the closeness of the inner stems.  It is used for damping
+the slope of the beam.")
+     (connect-to-neighbor ,pair? "Pair of booleans, indicating whether
+this grob looks as a continued break.")
+     (control-points ,list? "List of offsets (number pairs) that form
+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.")
 
-     (context ,ly:context? "Originating context of the grob")
-     
-     ;;DOCME
-     (control-points ,list? "List of 4 offsets (number-pairs) that form control points for the  tie/slur shape.")
-
-     (damping ,number? "Amount of beam slope damping. 0: no, 1: yes,
-100000: horizontal beams.")
-     (dash-period ,number? "the length of one dash + white space. If
-negative, no line is drawn at all.")
-     
+     (damping ,number? "Amount of beam slope damping.")
      (dash-fraction ,number? "Size of the dashes, relative to
-dash-period. Should be between 0.0 (no line) and 1.0 (continuous
-line).")
-
-     (arrow ,boolean? "Add an arrow to the line.")
-     (arrow-length ,number? "Arrow length.")
-     (arrow-width ,number? "Arrow width.")
-
-     ;; todo: why is this tunable?
-     (dir-function ,procedure? "The function to determine the
-direction of a beam. Choices include: 
-
-@table @code
-@item beam-dir-majority
-number count of up or down notes
-@item beam-dir-mean
-mean center distance of all notes
-@item beam-dir-median.
-mean center distance weighted per note
-@end table
-
-")
-     
-     (direction ,ly:dir? "Up or down, left or right?")
+@code{dash-period}.  Should be between @code{0.0} (no line) and
+@code{1.0} (continuous line).")
+     (dash-period ,number? "The length of one dash together with
+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.")
+     (direction ,ly:dir? "If @code{side-axis} is @code{1} (or
+@code{#X}), then this property determines whether the object is placed
+@code{#LEFT}, @code{#CENTER} or @code{#RIGHT} with respect to the
+other object.  Otherwise, it determines whether the object is placed
+@code{#UP}, @code{#CENTER} or #DOWN.  Numerical values may also be
+used: @code{#UP}=@code{1}, @code{#DOWN}=@code{-1},
+@code{#LEFT}=@code{-1}, @code{#RIGHT}=@code{1}, @code{CENTER}=@code{0}
+but also other numerical values are permitted.")
      (dot-color ,symbol? "Color of dots.  Options include 
 @code{black} and @code{white}.")
-     (dot-radius ,number? "Radius of dots.")
      (dot-count ,integer? "The number of dots.")
-     (duration-log ,integer? "The 2-log of the note head duration, i.e. 0=whole note, 1 = half note, etc.")
-     (edge-height ,pair? "A pair of number specifying the heights of
-the vertical edges '(@var{left-height} . @var{right-height}).")
-     (edge-text ,pair? "A pair specifying the texts to be set at the
-edges '(@var{left-text} . @var{right-text}).")
-     (eccentricity ,number? "How asymmetrical to make a slur. Positive means move the center to the right.")
-     
-     (enclose-bounds ,number?
-                    "How much of the bound a spanner should enclose:
-+1 = completely, 0 = center, -1 not at all.")
-
-     (expand-limit ,integer? "maximum number of measures expanded in church rests.")
-
-     ;; remove me? 
-     (extra-X-extent ,number-pair? "A grob is enlarged in X dimension
-by this much.")
-     (extra-Y-extent ,number-pair? "See @code{extra-Y-extent}.")
-     
-     (X-extent ,number-pair? "Hard coded extent in X direction. ")
-     (Y-extent ,number-pair? "See @code{X-extent}.")
+     (dot-radius ,number? "Radius of dots.")
+     (duration-log ,integer? "The 2-log of the note head duration,
+i.e. @code{0} = whole note, @code{1} = half note, etc.")
 
-     (extra-offset ,number-pair? "A pair representing an offset. This
+     (eccentricity ,number? "How asymmetrical to make a slur.
+Positive means move the center to the right.")
+     (edge-height ,pair? "A pair of numbers specifying the heights of
+the vertical edges: @code{(@var{left-height} . @var{right-height})}.")
+     (edge-text ,pair? "A pair specifying the texts to be set at the
+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? "See @code{extra-X-extent}.")
+     ;; remove me?
+     (extra-dy ,number? "Slope glissandi this much extra.")
+     (extra-offset ,number-pair? "A pair representing an offset.  This
 offset is added just before outputting the symbol, so the typesetting
 engine is completely oblivious to it.")
-
-     (finger-code ,symbol? "Code for the type of fingering indication in a
-fret diagram.  Options include @code{none}, @code{in-dot}, and @code{below-string}.")
+     (extra-spacing-width ,number-pair? "In the horizontal spacing
+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)}.")
+
+     (finger-code ,symbol? "Code for the type of fingering indication
+in a fret diagram.  Options include @code{none}, @code{in-dot}, and
+@code{below-string}.")
      (flag-count ,number? "The number of tremolo beams.")
-     (flag-style ,symbol?
-                "a string determining what style of flag-glyph is
-typeset on a Stem. Valid options include @code{()} and
-@code{mensural}.  Additionally, @code{\"no-flag\"} switches off the
+     (flag-style ,symbol? "A string determining what style of flag
+glyph is typeset on a @code{Stem}.  Valid options include @code{()}
+and @code{mensural}.  Additionally, @code{no-flag} switches off the
 flag.")
-     
-     (flag-width-function ,procedure? "Procedure that computes the width of a half-beam (a non-connecting beam.).")
-     (strict-note-spacing ,boolean? "If set, unbroken columns
-with non-musical material (clefs, barlines, etc.) are not spaced
-separately, but put before musical columns.")
-     (font-family ,symbol? "The font family is the broadest category for selecting text fonts. Options include: @code{sans}, @code{roman} ")
      (font-encoding ,symbol? "The font encoding is the broadest
-category for selecting a font. Options include: @code{fetaMusic},
-@code{fetaNumber}, @code{TeX-text}, @code{TeX-math}, @code{fetaBraces},
-@code{fetaDynamic}")
-     (font-name ,string? "Specifies a file name (without extension) of
-the font to load.  This setting override selection using
+category for selecting a font.  Options include: @code{fetaMusic},
+@code{fetaNumber}, @code{TeX-text}, @code{TeX-math},
+@code{fetaBraces}, @code{fetaDynamic}.")
+     (font-family ,symbol? "The font family is the broadest category
+for selecting text fonts.  Options include: @code{sans},
+@code{roman}.")
+     (font-name ,string? "Specifies a file name (without extension)
+of the font to load.  This setting overrides selection using
 @code{font-family}, @code{font-series} and @code{font-shape}.")
-     (font-magnification ,number? "Magnification of the font, when it
-is selected with @code{font-name}.")
-
-     (font-size ,number? "The font size, compared the `normal'
-size.  0 is style-sheet's normal size, -1 is smaller, +1 is bigger.
-Each step of 1 is approximately 12% larger, 6 steps are exactly a
-factor 2 larger. Fractional values are allowed.")
-
-     (font-series ,symbol? "Select the series of a font. Choices
+     (font-series ,symbol? "Select the series of a font.  Choices
 include @code{medium}, @code{bold}, @code{bold-narrow}, etc.")
-     (font-shape ,symbol? "Select the shape of a font. Choices include @code{upright},
-@code{italic}, @code{caps}.")
-
-     (forced-distance ,ly:dimension? "A fixed distance between object
-reference points in an alignment.")
-
+     (font-shape ,symbol? "Select the shape of a font.  Choices
+include @code{upright}, @code{italic}, @code{caps}.")
+     (font-size ,number? "The font size, compared to the @q{normal}
+size.  @code{0}@tie{}is style-sheet's normal size, @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.")
      (force-hshift ,number? "This specifies a manual shift for notes
-in collisions. The unit is the note head width of the first voice
+in collisions.  The unit is the note head width of the first voice
 note.  This is used by @internalsref{note-collision-interface}.")
-
+     (forced ,boolean? "Manually forced accidental.")
      (fraction ,number-pair? "Numerator and denominator of a time
 signature object.")
      (french-beaming ,boolean? "Use French beaming style for this
-stem. The stem will stop at the innermost beams.")
+stem.  The stem stops at the innermost beams.")
      (fret-count ,integer? "The number of frets in a fret diagram.")
-
      ;; ugh: double, change.
      (full-size-change ,boolean? "Don't make a change clef smaller.")
-     (non-default ,boolean? "Set for manually specified clefs.")
-
-
-     (glyph ,string? "a string determining what (style) of glyph is
-typeset. Valid choices depend on the function that is reading this
-property.")
-     (glyph-name ,string? "a name of character within font.")
-     (glyph-name-procedure ,procedure? "Return the name of a character
-within font, to use for printing a symbol.")
 
      (gap ,ly:dimension? "Size of a gap in a variable symbol.")
      (gap-count ,integer? "Number of gapped beams for tremolo.")
-     (grace-space-factor ,number? "Space grace notes at this fraction
-of the @code{spacing-increment}.")
-
+     (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-alist ,list? "An alist of key-string pairs.")
      (grow-direction ,ly:dir? "Crescendo or decrescendo?")
-     (hair-thickness ,number? "Thickness of the thin line in a bar line.")
-     (height ,ly:dimension? "Height of an object in staffspace.")
-     (height-limit ,ly:dimension? "Maximum slur height: the longer the
-slur, the closer it is to this height.")
 
+     (hair-thickness ,number? "Thickness of the thin line in a bar
+line.")
+     (head-direction ,ly:dir? "Are the note heads left or right in a
+semitie?")
+     (height ,ly:dimension? "Height of an object in
+@code{staff-space} units.")
+     (height-limit ,ly:dimension? "Maximum slur height: The longer the
+slur, the closer it is to this height.")
      (horizontal-shift ,integer? "An integer that identifies ranking
-of note-column for horizontal shifting. This is used by
+of @code{NoteColumn}s for horizontal shifting.  This is used by
 @internalsref{note-collision-interface}.")
-     (avoid-slur ,symbol? "Method of handling slur collisions.
-Choices are @code{around}, @code{inside}, @code{outside}.  If unset, script
-and slur ignore eachother.")
+     (horizontal-skylines ,ly:skyline-pair? "Two skylines, one to the
+left and one to the right of this grob.")
+
+     (ignore-collision ,boolean? "If set, don't do note collision
+resolution on this @code{NoteColumn}.")
+     (implicit ,boolean? "Is this an implicit bass figure?")
+     (infinite-spacing-height ,boolean? "If true, then for the
+purposes of horizontal spacing, treat this item as though it were
+infinitely tall.  That is, no object from another column is allowed to
+stick above or below this item.")
+     (inspect-index ,integer? "If debugging is set, set beam and slur
+configuration to this index, and print the respective scores.")
      (inspect-quants ,number-pair? "If debugging is set,
-set beam quant to this position, and print the respective scores.")
+set beam and slur quants to this position, and print the respective
+scores.")
 
+     (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
 things sticking into the margin.")
-     (kern ,ly:dimension? "Amount of extra white space to add. For
-bar line, this is the amount of space after a thick line.")
+     (kern ,ly:dimension? "Amount of extra white space to add.  For
+bar lines, this is the amount of space after a thick line.")
      (knee ,boolean? "Is this beam kneed?")
      (knee-spacing-correction ,number? "Factor for the optical
-correction amount for kneed beams. Set between 0 for no correction and
-1 for full correction.")
-     (label-dir ,ly:dir? "Side to which label is attached. @code{-1} for left, @code{1} for right.")
-     (layer ,number? "The output layer [0..2]: layers define the order
-of printing objects. Objects in lower layers are overprinted by
-objects in higher layers.")
-     (ledger-line-thickness ,number-pair?
-                           "The thickness of ledger lines: it is the
-sum of 2 numbers.  The first is the factor for line thickness, and the
-second for staff space. Both contributions are added.")
-     (left-position ,number? "Vertical position of left part of spanner.")
+correction amount for kneed beams.  Set between @code{0} for no
+correction and @code{1} for full correction.")
+
+     (label-dir ,ly:dir? "Side to which a label is attached.
+@code{-1} for left, @code{1}@tie{}for right.")
+     (layer ,number? "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.")
+     (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
+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 a group of accidentals.")
+left to an object (e.g., a group of accidentals).")
      (length ,ly:dimension? "User override for the stem length of
 unbeamed stems.")
-     (length-fraction ,number? "Length of ledger line as fraction of note head size.")
-     (lengths ,list? "Default stem lengths. The list gives a length
-for each flag-count.")
+     (length-fraction ,number? "Multiplier for lengths.  Used for
+determining ledger lines and stem lengths.")
+     (line-break-penalty ,number? "Penalty for a line break at this
+column.  This affects the choices of the line breaker; it avoids a
+line break at a column with a positive penalty and prefer a line break
+at a column with a negative penalty.")
+     (line-break-permission ,symbol? "Instructs the line breaker on
+whether to put a line break at this column.  Can be @code{force} or
+@code{allow}.")
+     (line-break-system-details ,list? "An alist of properties to use
+if this column is the start of a system.")
      (line-count ,integer? "The number of staff lines.")
-     (measure-length ,ly:moment? "Length of a
-measure. Used in some spacing situations.")
-
+     (line-positions ,list? "Vertical positions of staff lines.")
+     (line-thickness ,number? "The thickness of the tie or slur
+contour.")
+     (long-text ,markup? "Text markup.  See @usermanref{Text
+markup}.")
+
+     (max-beam-connect ,integer? "Maximum number of beams to connect
+to beams from this stem.  Further beams are typeset as beamlets.")
+     (max-stretch ,number? "The maximum amount that this
+@code{VerticalAxisGroup} can be vertically stretched (for example, in
+order to better fill a page).")
      (measure-count ,integer? "The number of measures for a
-multimeasure rest.")
-     (merge-differently-headed ,boolean? "Merge
-note heads in collisions, even if they have different note heads. The
-smaller of the two heads will be rendered invisible. This used
-polyphonic guitar notation. The value of this setting is used by
-@internalsref{note-collision-interface} .")
-
+multi-measure rest.")
+     (measure-length ,ly:moment? "Length of a measure.  Used in some
+spacing situations.")
      (merge-differently-dotted ,boolean? "Merge note heads in
-collisions, even if they have a different number of dots. This normal
-notation for some types of polyphonic music. ")
-
-     (minimum-length-fraction ,number? "Minimum length of ledger line as fraction of note head size.")
+collisions, even if they have a different number of dots.  This is
+normal notation for some types of polyphonic music.
+
+@code{merge-differently-dotted} only applies to opposing stem
+directions (i.e. voice 1 &@tie{}2).")
+     (merge-differently-headed ,boolean? "Merge note heads in
+collisions, even if they have different note heads.  The
+smaller of the two heads is rendered invisible.  This is used in
+polyphonic guitar notation.  The value of this setting is used by
+@internalsref{note-collision-interface}.
+
+@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? "See @code{minimum-X-extent}.")
      (minimum-distance ,ly:dimension? "Minimum distance between rest
 and notes or beam.")
-     (minimum-X-extent ,number-pair? "Minimum size of an object in X
-dimension, measured in staff space.")
-     (minimum-Y-extent ,number-pair? "See @code{minimum-Y-extent}.")
      (minimum-length ,ly:dimension? "Try to make a spanner at least
-this long. This requires an appropriate routine for the
-@code{spacing-procedure} property.")
+this long, normally in the horizontal direction.  This requires an
+appropriate callback for the @code{springs-and-rods} property.  If
+added to a @code{Tie}, this sets the minimum distance between
+noteheads.")
+     (minimum-length-fraction ,number? "Minimum length of ledger line
+as fraction of note head size.")
      (minimum-space ,ly:dimension? "Minimum distance that the victim
 should move (after padding).")
+
      (neutral-direction ,ly:dir? "Which direction to take in the
 center of the staff.")
      (neutral-position ,number? "Position (in half staff spaces) where
 to flip the direction of custos stem.")
-
-     (next ,ly:grob? "Object that is next relation (eg. the lyric syllable following an extender.")
-     (note-names ,vector? "Vector of strings containing names for
-easy-notation note heads.")
-     (no-ledgers ,boolean? "If set, don't draw ledger lines on this object.")
-     (no-spacing-rods ,boolean? "Items with this property do not cause
-spacing constraints.")
+     (next ,ly:grob? "Object that is next relation (e.g., the lyric
+syllable following an extender.")
+     (no-ledgers ,boolean? "If set, don't draw ledger lines on this
+object.")
      (no-stem-extend ,boolean? "If set, notes with ledger lines do not
 get stems extending to the middle staff line.")
+     (non-default ,boolean? "Set for manually specified clefs.")
+     (non-musical ,boolean? "True if the grob belongs to a
+@code{NonMusicalPaperColumn}.")
+     (note-names ,vector? "Vector of strings containing names for
+easy-notation note heads.")
      (number-type ,symbol? "Type of numbers to use in label.  Choices
 include @code{roman-lower}, @code{roman-upper}, and @code{arabic}.")
-     (number-visibility ,boolean-or-symbol? "Like
-@code{bracket-visibility}, but for the number.")
-
 
+     (outside-staff-horizontal-padding ,number? "By default, an
+outside-staff-object can be placed so that is it very close to another
+grob horizontally.  If this property is set, the outside-staff-object
+is raised so that it is not so close to its neighbour.")
+     (outside-staff-padding ,number? "The padding to place between
+this grob and the staff when spacing according to
+@code{outside-staff-priority}.")
+     (outside-staff-priority ,number? "If set, the grob is positioned
+outside the staff in such a way as to avoid all collisions.
+In case of a potential collision, the grob with the smaller
+@code{outside-staff-priority} is closer to the staff.")
 
      (packed-spacing ,boolean? "If set, the notes are spaced as
 tightly as possible.")
      (padding ,ly:dimension? "Add this much extra space between
 objects that are next to each other.")
-     (page-penalty ,number? "Penalty for page break at
-this column.  10000 or more means forbid linebreak, -10000 or less
-means force page break.  Other values influence page breaking decisions
-as a real penalty.")
-     (penalty ,number? "Penalty for line break at
-this column.  10000 or more means forbid line break, -10000 or less
-means force line break.  Other values influence line breaking decisions
-as a real penalty.")
-
-     (positions ,pair?
-               "Pair of staff coordinates @code{(@var{left}
-. @var{right})}, where both @var{left} and @var{right} are in the
-staff-space unit of the current staff.")
-     (print-function ,procedure? "Function taking grob as argument,
-returning a @code{Stencil} object.")
-     
-     (ratio ,number? "Parameter for slur shape. The higher this number, the
-quicker the slur attains it @code{height-limit}.")
-     (remove-first ,boolean? "Remove the first staff of a orchestral score?")
-     (right-padding ,ly:dimension? "Space to insert between note and
-accidentals.")
-     (right-position ,number? "Vertical position of right part of spanner.")
+     (page-break-penalty ,number? "Penalty for page break at this
+column.  This affects the choices of the page breaker; it avoids a
+page break at a column with a positive penalty and prefer a page break
+at a column with a negative penalty.")
+     (page-break-permission ,symbol? "Instructs the page breaker on
+whether to put a page break at this column.  Can be @code{force} or
+@code{allow}.")
+     (page-turn-penalty ,number? "Penalty for a page turn at this
+column.  This affects the choices of the page breaker; it avoids a
+page turn at a column with a positive penalty and prefer a page turn
+at a column with a negative penalty.")
+     (page-turn-permission ,symbol? "Instructs the page breaker on
+whether to put a page turn at this column.  Can be @code{force} or
+@code{allow}.")
+     (parenthesized ,boolean? "Parenthesize this grob.")
+     (positions ,pair? "Pair of staff coordinates @code{(@var{left}
+. @var{right})}, where both @var{left} and @var{right} are in
+@code{staff-space} units of the current staff.")
+
+     (ratio ,number? "Parameter for slur shape.  The higher this
+number, the quicker the slur attains its @code{height-limit}.")
+     (remove-empty ,boolean? "If set, remove group if it contains no
+interesting items.")
+     (remove-first ,boolean? "Remove the first staff of a orchestral
+score?")
+     (restore-first ,boolean? "Print a natural before the
+accidental.")
+     (rhythmic-location ,rhythmic-location? "Where (bar number,
+measure position) in the score.")
+     (right-bound-info ,list? "An alist of properties for determining
+attachments of spanners to edges.")
+     (right-padding ,ly:dimension? "Space to insert on the right side
+of an object (e.g., between note and its accidentals).")
+     (rotation ,list? "Number of degrees to rotate this object, and
+what point to rotate around.  For example, @code{#'(45 0 0)} rotates
+by 45 degrees around the center of this object.")
+
+     (same-direction-correction ,number? "Optical correction amount
+for stems that are placed in tight configurations.  This amount is
+used for stems with the same direction to compensate for note-head to
+stem distance.")
      (script-priority ,number? "A sorting key that determines in what
 order a script is within a stack of scripts.")
-
      (self-alignment-X ,number? "Specify alignment of an object.  The
-value -1 means left aligned, 0 centered, and 1 right-aligned in X
-direction. Values in between may also be specified.")
-     (self-alignment-Y ,number? "like @code{self-alignment-X} but for
-Y axis.")
-
+value @code{-1} means left aligned, @code{0}@tie{}centered, and
+@code{1}@tie{}right-aligned in X@tie{}direction.  Values in-between
+may also be specified.")
+     (self-alignment-Y ,number? "Like @code{self-alignment-X} but for
+the Y@tie{}axis.")
      (shorten-pair ,number-pair? "The lengths to shorten a
-text-spanner on both sides, for example a pedal bracket")
-     (common-shortest-duration ,ly:moment?
-                              "The most common shortest note length.
-This is used in spacing. Enlarging this will set the score tighter.")
+text-spanner on both sides, for example a pedal bracket.  Positive
+values shorten the text-spanner, while negative values lengthen it.")
      (shortest-duration-space ,ly:dimension? "Start with this much
-space for the shortest duration. This is expressed in
-@code{spacing-increment} as unit. See also
+space for the shortest duration.  This is expressed in
+@code{spacing-increment} as unit.  See also
 @internalsref{spacing-spanner-interface}.")
-     (shortest-playing-duration ,ly:moment? "The duration of the shortest playing here.")
-     (shortest-starter-duration ,ly:moment? "The duration of the shortest
-note that starts here.")
-     (side-relative-direction ,ly:dir?
-                             "Multiply direction of
+     (shortest-playing-duration ,ly:moment? "The duration of the
+shortest playing here.")
+     (shortest-starter-duration ,ly:moment? "The duration of the
+shortest note that starts here.")
+     (side-axis ,number? "If the value is @code{#X} (or
+equivalently@tie{}@code{1}), the object is placed horizontally next
+to the other object.  If the value is @code{#Y} or@tie{}@code{0}, it
+is placed vertically.")
+     (side-relative-direction ,ly:dir? "Multiply direction of
 @code{direction-source} with this to get the direction of this
 object.")
      (size ,number? "Size of object, relative to standard size.")
      (slope ,number? "The slope of this object.")
      (slur-padding ,number? "Extra distance between slur and script.")
-     (slur-details ,list?
-                  "An alist of scoring parameters for slur formatting")
      (space-alist ,list? "A table that specifies distances between
-prefatory items, like clef and time-signature. The format is an alist
+prefatory items, like clef and time-signature.  The format is an alist
 of spacing tuples: @code{(@var{break-align-symbol} @var{type}
 . @var{distance})}, where @var{type} can be the symbols
 @code{minimum-space} or @code{extra-space}.")
-     (space-function ,procedure? "Calculate the vertical space between
-two beams. This function takes a beam grob and the maximum number of
-beams.")
-
      (spacing-increment ,number? "Add this much space for a doubled
-duration. Typically, the width of a note head. See also
+duration.  Typically, the width of a note head. See also
 @internalsref{spacing-spanner-interface}.")
-
-     (spacing-procedure ,procedure? "Procedure for calculating spacing
-parameters.  The routine is called after
-@code{before-line-breaking-callback}.")
+     (springs-and-rods ,boolean? "Dummy variable for triggering
+spacing routines.")
      (stacking-dir ,ly:dir? "Stack objects in which direction?")
-     (staff-space ,ly:dimension? "Amount of space between staff lines,
-expressed in global staffspace.")
+     (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 dynamic @b{p} and @b{f}) on their
+baselines.")
      (staff-position ,number? "Vertical position, measured in half
 staff spaces, counted from the middle line.")
-     
-     (stemlet-length ,number? "How long should a stem over a rest be?")
-     (stem-attachment-function ,procedure? "A function that calculates
-where a stem attaches to the note head? This is a fallback when this
-information is not specified in the font.  The function takes a grob
-and axis argument, and returns a (@var{x} . @var{y}) pair, specifying
-location in terms of note head bounding box.")
-
-     (stem-end-position ,number? "Where does the stem end (the end is opposite to the support-head.")
-
-     (stem-shorten ,list? "How much a stem in a forced direction
-should be shortened. The list gives an amount depending on the number
-of flags/beams.")
-
+     (staff-space ,ly:dimension? "Amount of space between staff lines,
+expressed in global @code{staff-space}.")
+     (stem-attachment ,number-pair? "A @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
+opposite to the support-head)?")
      ;;[TODO: doco]
      (stem-spacing-correction ,number? "Optical correction amount for
-stems that are placed in tight configurations. For opposite
+stems that are placed in tight configurations.  For opposite
 directions, this amount is the correction for two normal sized stems
 that overlap completely.")
-
-     (same-direction-correction ,number? "Optical correction amount
-for stems that are placed in tight configurations. This amount is used
-for stems with the same direction to compensate for note-head to stem distance.")
-     (string-count ,integer? "The number of strings in a fret diagram.")
-     (stroke-style ,string? "set to \"grace\" to turn stroke through flag on.")
-     
+     (stemlet-length ,number? "How long should a stem over a rest
+be?")
+     (stencil ,ly:stencil? "The symbol to print.")
+     (stencils ,list? "Multiple stencils, used as intermediate
+value.")
+     (strict-grace-spacing ,boolean? "If set, grace notes 
+are not spaced separately, but put before musical columns.")
+     (strict-note-spacing ,boolean? "If set, unbroken columns
+with non-musical material (clefs, barlines, etc.) are not spaced
+separately, but put before musical columns.")
+     (string-count ,integer? "The number of strings in a fret
+diagram.")
+     (string-fret-finger-combinations ,list? "List consisting of
+@code{(@var{string-number} @var{fret-number} @var{finger-number})}
+entries.")
+     (stroke-style ,string? "Set to @code{\"grace\"} to turn stroke
+through flag on.")
      (style ,symbol? "This setting determines in what style a grob is
-typeset. Valid choices depend on the @code{print-function} that is
-reading this property.")
+typeset.  Valid choices depend on the @code{stencil} callback reading
+this property.")
+
      (text ,markup? "Text markup.  See @usermanref{Text markup}.")
 ;;FIXME -- Should both be the same?
      (text-direction ,ly:dir? "This controls the ordering of the
-words. The default RIGHT is for roman text. Arabic or hebrew should
-use LEFT.")
+words.  The default @code{RIGHT} is for roman text.  Arabic or Hebrew
+should use @code{LEFT}.")
      (thick-thickness ,number? "Bar line thickness, measured in
-@code{linethickness}.")
-     (thickness ,number? "Bar line thickness, measured in
-@code{linethickness}.")
+@code{line-thickness}.")
+     (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? "(@var{min} . @var{max}), where
+     (threshold ,number-pair? "@code{(@var{min} . @var{max})}, where
 @var{min} and @var{max} are dimensions in staff space.")
-     (tie-configuration ,list? "List of (@var{position} . @var{dir})
-pairs, indicating the desired tie configuration.")
-     (transparent ,boolean? "This is almost the same as setting
-@code{print-function} to @code{#f}, but this retains the dimensions of
-this grob, which means that grobs can be erased individually.")
-     (uniform-stretching ,boolean? "If set, items stretch proportional
-to their durations. This looks better in complex polyphonic patterns")
-     (used ,boolean? "If set, this spacing column is kept in the spacing problem")
+     (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
+space and @var{dir} indicates the direction of the tie
+(@code{1}=>up, @code{-1}=>down, @code{0}=>center).  A non-pair entry
+in the list causes the corresponding tie to be formatted
+automatically.")
+     (transparent ,boolean? "This makes the grob invisible.")
+
+     (uniform-stretching ,boolean? "If set, items stretch
+proportionally to their durations.  This looks better in complex
+polyphonic patterns.")
+     (used ,boolean? "If set, this spacing column is kept in the
+spacing problem")
+
+     (vertical-skylines ,ly:skyline-pair? "Two skylines, one above and
+one below this grob.")
+
      (when ,ly:moment? "Global time step associated with this column
 happen?")
-     (word-space ,ly:dimension? "space to insert between words in texts.")
-     (width ,ly:dimension? "The width of a grob measured in staff space.")
-     (x-gap ,ly:dimension? "The horizontal gap between note head and tie.")
-     (zigzag-length ,ly:dimension? "The length of the lines of a
-zigzag, relative to @code{zigzag-width}. A value of 1 gives 60-degree
-zigzags.")
-     (zigzag-width ,ly:dimension? "The width of one
-zigzag-squiggle. This number will be adjusted slightly so that the
-glissando line can be constructed from a whole number of squiggles.")
-
-     (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. ")
-     (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 dynamic @b{p} and @b{f}) on their baselines.")
+     (width ,ly:dimension? "The width of a grob measured in staff
+space.")
+     (word-space ,ly:dimension? "Space to insert between words in
+texts.")
 
+     (zigzag-length ,ly:dimension? "The length of the lines of a
+zigzag, relative to @code{zigzag-width}.  A value of@tie{}@code{1}
+gives 60-degree zigzags.")
+     (zigzag-width ,ly:dimension? "The width of one zigzag squiggle.
+This number is adjusted slightly so that the glissando line can
+be constructed from a whole number of squiggles.")
      )))
 
 
@@ -519,19 +569,43 @@ sizes (like the dynamic @b{p} and @b{f}) on their baselines.")
      (apply define-internal-grob-property x))
    
    `(
+     ;;;;;;;;;;;;;;;;
+     ;; grobs & grob arrays. (alphabetical)
+     (X-common ,ly:grob? "Common refpoint for axis group.")
+     (Y-common ,ly:grob? "See @code{X-common}.")
+     (adjacent-pure-heights ,vector? "Used by a VerticalAxisGroup to cache the Y-extents of different column ranges.")
      (axis-group-parent-X ,ly:grob? "Containing X axis group")
      (axis-group-parent-Y ,ly:grob? "Containing Y axis group")
      (accidental-grobs ,list? "Alist with (NOTENAME . GROBLIST) entries")
      (adjacent-hairpins ,ly:grob-array? "List of directly neighboring hairpins")
-     (after-line-breaking-callback ,procedure? "This procedure is called after line breaking. Its return value is ignored.")     
      (all-elements ,ly:grob-array? "list of all grobs in this line. Its
 function is to protect objects from being garbage collected.")
      (arpeggio ,ly:grob? "pointer to arpeggio object.")
      (beam ,ly:grob? "pointer to the beam, if applicable.")
+     (bracket ,ly:grob? "the bracket for a  number.")
+     (cross-staff ,boolean? "for a beam or a stem, true if we depend on inter-staff spacing")
      (direction-source ,ly:grob? "in case side-relative-direction is
 set, which grob to get the direction from .")
      (dot ,ly:grob? "reference to Dots object.")
+     (dots ,ly:grob-array? "multiple Dots objects.")
+     (figures ,ly:grob-array? "Figured bass objects for continuation line.")
+     (important-column-ranks ,vector? "Cache of columns that contain items-worth-living.")
+     (items-worth-living ,ly:grob-array? "A list of interesting items. If
+empty in a particular staff, then that staff is erased.")
+
+     (glyph-name ,string? "a name of character within font.")
+     (left-neighbors ,ly:grob-array? " List of
+spacing-wish grobs that are close to the current column.
+
+The closest spacing-wishes determine the actual distances between the
+columns.
+")
+     (left-items ,ly:grob-array? "")
      (pedal-text ,ly:grob? "Pointer to the text of a mixed-style piano pedal.")
+     
+     (pure-Y-common ,ly:grob? "Caches the common_refpoint_of_array of the elements grob-set")
+     (pure-relevant-items ,ly:grob-array? "A subset of elements that are relevant for finding the pure-Y-extent.")
+     (pure-relevant-spanners ,ly:grob-array? "A subset of elements that are relevant for finding the pure-Y-extent.")
      (stem ,ly:grob? "pointer to Stem object.")
      (tremolo-flag ,ly:grob? "The tremolo object on a stem.")
      (tie ,ly:grob? "")
@@ -542,96 +616,107 @@ set, which grob to get the direction from .")
      (accidental-grob ,ly:grob? "Accidental for this note.")
      (bars ,ly:grob-array? "list of bar line pointers.")
      (bounded-by-me ,ly:grob-array? "list of spanners that have this
-column as start/begin point. Only columns that have grobs or act as bounds are spaced.")
+column as start/begin point. Only columns that have grobs or act as
+bounds are spaced.")
+     
      (columns ,ly:grob-array? "list of grobs, typically containing
 paper-columns or note-column objects.")
      (conditional-elements ,ly:grob-array? "Internal use only")
-     (dependencies ,ly:grob-array? "list of score-grob pointers that indicate who to compute first for certain global passes.")
      (encompass-objects ,ly:grob-array? "Objects that a slur should avoid
 in addition to notes and stems.")
-     (elements ,ly:grob-array? "list of grobs, type depending on the Grob where this is set in.")
+     (elements ,ly:grob-array? "list of grobs, type depending on the Grob
+where this is set in.")
+     (grace-spacing ,ly:grob? "a run of grace notes.")
      (heads ,ly:grob-array? "List of note heads.")
-     (items-worth-living ,ly:grob-array? "A list of interesting items. If
-empty in a particular staff, then that staff is erased.")
-     (details ,list? "alist of parameters for detailed grob behavior.")
+
+     (note-columns ,pair? "list of NoteColumn grobs.")
+
+     (normal-stems ,ly:grob-array? "Array of visible stems.") 
      (note-heads ,ly:grob-array? "List of note head grobs")
      (note-head ,ly:grob? "A single note head")
+     (right-items ,ly:grob-array? "")
+     (right-neighbors ,ly:grob-array? "see left-neighbors")
+     (separation-item ,ly:grob? "A separation item.")
+     (slur ,ly:grob? "A pointer to a slur object")
+     (spacing ,ly:grob? "the spacing spanner governing this section.")
+     (spaceable-staves ,ly:grob-array? "Objects to be spaced during page layout.")
      (side-support-elements ,ly:grob-array? "the support, a list of grobs.")
      (spacing-wishes ,ly:grob-array? "List of note spacing or staff spacing objects.")
      (stems ,ly:grob-array? "list of stem objects, corresponding to the notes that the arpeggio has to be before.")
      (tuplets ,ly:grob-array? "list of smaller tuplet brackets")
+     (tuplet-number ,ly:grob? "the number for a bracket.")
 
-     (left-neighbors ,ly:grob-array? " List of
-spacing-wish grobs that are close to the current column.
-
-The closest spacing-wishes determine the actual distances between the
-columns.
-")
-     (right-neighbors ,ly:grob-array? "see left-neighbors")
-     (left-items ,ly:grob-array? "")
-     (right-items ,ly:grob-array? "")
+     
+     
+     ;;;;;;;;;;;;;;;;
+     ;; other
+     (begin-of-line-visible ,boolean? "Used for marking ChordNames that should only show changes.")
      (cause ,scheme? "Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob.  ")
-     (font ,ly:font-metric? "Cached font metric object")
+     (circled-tip ,boolean? "Put a circle at start/end of hairpins (al/del niente)")
+     (delta-position ,number? "vertical position difference")
+     (details ,list? "alist of parameters for detailed grob behavior.
 
-     (positioning-done ,boolean?
-                      "Used to signal that a positioning element
-did its job. This ensures that a positioning is only done once.")
+more information on the allowed parameters can be found by inspecting
+lily/slur-scoring.cc, lily/beam-quanting.cc, and
+lily/tie-formatting-problem.cc.  Setting @code{debug-tie-scoring},
+@code{debug-beam-scoring} or @code{debug-slur-scoring} also provides
+useful clues.
 
+")
 
-     (script-stencil ,pair? "Pair (@code{type} . @code{arg}), which
-acts as an index for looking up a Stencil object.")
+     (font ,ly:font-metric? "Cached font metric object")
+     (head-width ,ly:dimension? "width of this ligature head")
+     
+     (ideal-distances ,list? "(@var{obj} . (@var{dist} . @var{strength})) pairs.")
+     (interfaces ,list? "list of symbols indicating the interfaces supported by this object. Is initialized from the @code{meta} field.")
+     (least-squares-dy ,number? 
+                      "ideal beam slope, without damping.")
 
      (meta ,list? "Contains meta information. It is an alist with the
 entries @code{name} and @code{interfaces}.")
+     (minimum-distances ,list? "list of rods, that have the format (@var{obj} . @var{dist}).")
+     
+     (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")
 
-
-     ;; TODO: use interface for this!
-     (chord-tremolo ,boolean? "if set, this beam is a tremolo. ")
-     (begin-of-line-visible ,boolean? "Used for marking ChordNames that should only show changes.")
-
+     (quantized-positions ,number-pair? "Beam positions after quanting.")
+     (quantize-position ,boolean? "If set, a vertical alignment is aligned to be within staff spaces.")
      (quant-score ,string? "Beam quanting score -- can be stored for
 debugging")
      
-     (least-squares-dy ,number? 
-                      "ideal beam slope, without damping.")
-     (ligature-primitive-callback ,procedure? "callback that brews ligature head.")
-     (stem-info ,pair? "caching of stem parameters")
-     (note-columns ,pair? "list of NoteColumn grobs.")
-
-     (position-callbacks ,list? "list of
-functions set spanner positions.")
-
-;;; add-join would be enough if in Mensural_ligature::brew_ligature_primitive
-;;; the next note could be seen
-     (join-right-amount ,number? "")
-
-     (delta-pitch ,number? "the interval between this and the next note, or, more precisely, their vertical distance; this is used in ligatures for calculation of the height of vertical joins flexa shapes")
-     (head-width ,ly:dimension? "width of this ligature head")
-
-     ;; [TODO: change this]
-     (primitive ,integer? "Pointer to a ligature primitive, i.e. an item similar to a note head that is part of a ligature. ")
-     (stencil ,ly:stencil? "Cached output of the print-function.")
-     (ideal-distances ,list? "(@var{obj} . (@var{dist} . @var{strength})) pairs.")
-     (minimum-distances ,list? "list of rods, that have the format (@var{obj} . @var{dist}).")
+     (script-stencil ,pair? "Pair (@code{type} . @code{arg}), which
+acts as an index for looking up a Stencil object.")
 
-     (interfaces ,list? "list of symbols indicating the interfaces supported by this object. Is initialized from the @code{meta} field.")
+     (stem-info ,pair? "caching of stem parameters")
      (shorten ,ly:dimension? "The amount of space that a
 stem. Internally used to distribute beam shortening over stems. ")
-     (slur ,ly:grob? "A pointer to a slur object")
+     (skyline-distance ,number? "The distance between this staff and the next one, as determined by a skyline algorithm.")
+     (skyline-horizontal-padding ,number? "For determining the vertical distance between 2 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.")
      (use-breve-rest ,boolean? "Use breve rests for measures longer
 than a whole rest.")
      
 
-     (spaceable-staves ,ly:grob-array? "Objects to be spaced during page layout.")
-
+     
      ;; ancient notation
+     (join-right-amount ,number? "")
+     (primitive ,integer? "Pointer to a ligature primitive, i.e. an item similar to a note head that is part of a ligature. ")
 
+     
      ;;;;;;; TODO:
      ;; there are too many properties for ancient notation
      ;; probably neume-types (a list of symbols) would also work.
-     
-     (auctum ,boolean? "is this neume augmented?")
-     (ascendens ,boolean? "is this neume of an ascending?")
+
+     ;; However, such this list would consist of a couple of dozens of
+     ;; entries, since head prefixes may be combined in many ways.  If
+     ;; the macros in gregorian-init.ly would directly set prefix-set,
+     ;; all the head prefixes could be junked; however, such macros
+     ;; would be quite numerous, I guess.  --jr
+
+     (auctum ,boolean? "is this neume liquescentically augmented?")
+     (ascendens ,boolean? "is this neume of an ascending type?")
      (add-cauda ,boolean? "does this flexa require an additional cauda on the left side?")
      (add-join ,boolean? "is this ligature head joined with the next one by a vertical line?")
      (cavum ,boolean? "is this neume outlined?")
@@ -641,22 +726,28 @@ than a whole rest.")
      (flexa-width ,ly:dimension? "width of a flexa shape in a ligature grob in staff_space.")
      (join-heads ,boolean? "Whether to join the note heads of an ambitus grob with a vertical line.")
      (linea ,boolean? "attach vertical lines to this neume?")
-  
      (add-stem ,boolean? "is this ligature head a virga and therefore needs an additional stem on the right side?")
-     (context-info ,integer? "DOCME")
+     (context-info ,integer? "Within a ligature, the final glyph or shape of a head may be affected by the left and/or right neighbour head.  context-info holds for each head such information about the left and right neighbour, encoded as a bit mask.")
      (inclinatum ,boolean? "is this neume an inclinatum?")
      (oriscus ,boolean? "is this neume an oriscus?")
      (quilisma ,boolean? "is this neume a quilisma?")
      (pes-or-flexa ,boolean? "shall this neume be joined with the previous head?")
-     ;; DOCME
-     (prefix-set ,number? "")
+     (prefix-set ,number? "a bit mask that holds all Gregorian head prefixes, such as @code{\\virga} or @code{\\quilisma}")
      (stropha ,boolean? "Is this neume a stropha?")
      (virga ,boolean? "Is this neume a virga?")
      (x-offset ,ly:dimension? "Extra horizontal offset for ligature heads.")
-     
+
      ;; end ancient notation
 
+     ;; fret-diagrams extra properties
+     (xo-font-magnification ,number? "Magnification used for mute and
+         open string indicators in fret diagrams")
+     (mute-string ,string? "String to be used to indicate muted string in
+         fret diagrams")
+     (open-string ,string? "String to be used to indicate open string in
+         fret diagrams")
+     (orientation ,symbol? "Orientation of fret-diagram.  Options include @code{normal} and @code{landscape}")
+
      )))
 
 (define-public all-backend-properties