-(grob-property-description 'pes-or-flexa boolean? "shall this neume be joined with the previous head?.")
-(grob-property-description 'pitch-max ly:pitch? "FIXME, JUNKME")
-(grob-property-description 'pitch-min ly:pitch? "FIXME, JUNKME")
-
-
-(grob-property-description 'pitches list? "list of musical-pitch.")
-(grob-property-description 'quilisma boolean? "is this neume a quilisma?.")
-(grob-property-description 'positions pair? "cons of staff positions (LEFT . RIGHT")
-(grob-property-description 'prefix-set number? "DOCME")
-(grob-property-description 'ratio number? "Slur parameter. See height-limit.")
-(grob-property-description 'right-padding ly:dimension? "space right of accs.")
-(grob-property-description 'right-trim-amount ly:dimension? "shortening of the lyric extender on the right.")
-(grob-property-description 'right-widen boolean? "Whether the right edge of a piano pedal bracket should be widened by the second element of edge-widen")
-(grob-property-description 'script-priority number? "A sorting key that determines in what order a script is within a stack of scripts.")
-(grob-property-description 'self-alignment-X number-or-grob? "real number: -1 =
-left aligned, 0 = center, 1 right-aligned in X direction.
-
- Set to an grob pointer, if you want that grob to be the center.
-In this case, the center grob should have this object as a
-reference point.
-
-TODO: revise typing.")
-(grob-property-description 'self-alignment-Y number? "like self-alignment-X but for Y axis.")
-(grob-property-description 'semivocalis boolean? "is this neume a lisquescending one?.")
-(grob-property-description 'shorten ly:dimension? "the amount of space that a stem should be shortened (DOCME!)")
-(grob-property-description 'shorten-pair number-pair? "the length on each side to shorten a text-spanner, for example a pedal bracket")
-(grob-property-description 'common-shortest-duration ly:moment?
- "The most common shortest note length.
-This is used in spacing. Making this larger will make the score tighter.")
-(grob-property-description 'shortest-duration-space ly:dimension? "Start
-with this much space for the shortest duration. This is explessed in @code{spacing-increment} as unit. See also
-@ref{spacing-spanner-interface}.")
-(grob-property-description 'shortest-playing-duration ly:moment? "duration of the shortest playing in that column.")
-(grob-property-description 'shortest-starter-duration ly:moment? "duration of the shortest notes that starts exactly in this column.")
-(grob-property-description 'side-relative-direction ly:dir? "if set: get the direction from a different object, and multiply by this.")
-(grob-property-description 'side-support-elements grob-list? "the support, a list of grobs.")
-(grob-property-description 'slope number? "some kind of slope")
-(grob-property-description 'slope-limit number? "set slope to zero if slope is running away steeper than this.")
-
-(grob-property-description 'space-alist list? "Alist of break align
-spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be
-minimum-space or extra-space.")
-(grob-property-description 'space-function procedure? "return interbeam space given Beam grob and multiplicity.")
-(grob-property-description 'spacing-increment number? "Add this much space for a doubled duration. Typically, the width of a note head. See also @ref{spacing-spanner-interface}.")
-
-(grob-property-description 'spacing-wishes grob-list? "List of note spacing or staff spacing objects.")
-(grob-property-description 'spacing-procedure procedure? "procedure
-taking grob as argument. This is called after
-before-line-breaking-callback, but before the actual line breaking
-itself. Return value is ignored.")
-(grob-property-description 'stacking-dir ly:dir? "stack contents of grobs in which direction ?.")
-(grob-property-description 'staff-space ly:dimension? "Amount of line leading relative to global staffspace.")
-(grob-property-description 'staff-position number? "vertical position in staff spaces, counted from the middle line.")
-
-(grob-property-description 'staffline-clearance ly:dimension? "don't get closer than this to stafflines.")
-(grob-property-description 'stem ly:grob? "pointer to Stem object.")
-(grob-property-description 'stem-attachment-function procedure? "Where
-does the stem attach to the notehead? Function takes a symbol argument
-being the style. It returns a (X . Y) pair, specifying location in
-terms of note head bounding box.")
-(grob-property-description 'stem-end-position number? "Where does the stem end (the end is opposite to the support-head.")
-
-(grob-property-description 'stem-shorten list? "shorten stems in forced directions given flag multiplicity:
-the Nth element of the list gives the amount stem shortening of a note with N flags.
-")
-(grob-property-description 'stem-spacing-correction number? "optical correction amount. [TODO: doco] ")
-(grob-property-description 'stems grob-list? "list of stem objects, corresponding to the notes that the arpeggio has to be before.")
-(grob-property-description 'stropha boolean? "is this neume a stropha?.")
-(grob-property-description 'style symbol? "a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .")
-(grob-property-description 'support-head ly:grob? "the note head at
-one end of the stem.")
-(grob-property-description 'text markup? "Text markup. See reference manual for more information.")
-(grob-property-description 'text-start boolean? "Indicator for whether a piano pedal bracket has leading text, such as Ped.")
-(grob-property-description 'thick-thickness number? "thickness, measured in stafflinethickness.")
-(grob-property-description 'thickness number? "thickness, measured in stafflinethickness.")
-(grob-property-description 'thin-kern number? "space after a hair-line.")
-(grob-property-description 'forced-distance ly:dimension? "forced distance for an alignment.")
-
-(grob-property-description 'threshold number-pair? "(cons MIN MAX), where MIN and MAX are dimensions in staffspace.")
-(grob-property-description 'transparent boolean? "This is almost the
-same as setting molecule-callback to #f, but this retains the
-dimensions of this grob, which means that you can erase grobs
-individually. .")
-(grob-property-description '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 #'if-no-beam will make it
-print only if there is no beam associated with this tuplet bracket.")
-(grob-property-description 'number-visibility boolean-or-symbol? "
-Like @code{bracket-visibility}, but for the number.")
-(grob-property-description 'tie ly:grob? "")
-(grob-property-description 'break-visibility procedure? "a function
-that takes the break direction and returns a cons of booleans
-containing (TRANSPARENT . EMPTY).
-")
+ (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.")
+
+ (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.")
+ (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.")
+
+ (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.")
+ (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
+@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
+@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
+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
+@internalsref{spacing-spanner-interface}.")
+
+ (spacing-procedure ,procedure? "Procedure for calculating spacing
+parameters. The routine is called after
+@code{before-line-breaking-callback}.")
+ (stacking-dir ,ly:dir? "Stack objects in which direction?")
+ (staff-space ,ly:dimension? "Amount of space between staff lines,
+expressed in global staffspace.")
+ (staff-position ,number? "Vertical position, measured in half
+staff spaces, counted from the middle line.")
+ (staffline-clearance ,ly:dimension? "How far away ties keep from
+staff lines.")
+ (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.")
+
+ ;;[TODO: doco]
+ (stem-spacing-correction ,number? "Optical correction amount for
+stems that are placed in tight configurations. For opposite
+directions, this amount is the correction for two normal sized stems
+that overlap completely.")
+
+
+ (string-count ,integer? "The number of strings in a fret diagram.")
+ (stroke-style ,string? "set to \"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.")
+ (text ,markup? "Text markup. See @usermanref{Text markup}.")
+;;FIXME -- Should both be the same?
+ (thick-thickness ,number? "Bar line thickness, measured in
+@code{linethickness}.")
+ (thickness ,number? "Bar line thickness, measured in
+@code{linethickness}.")
+ (thin-kern ,number? "The space after a hair-line in a bar line.")
+
+ (threshold ,number-pair? "(@var{min} . @var{max}), where
+@var{min} and @var{max} are dimensions in staff space.")
+ (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.")
+ (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.")
+ (number-visibility ,boolean-or-symbol? "Like
+@code{bracket-visibility}, but for the number.")
+
+ ;; FIXME.
+ (break-visibility ,procedure? "A function that takes the break
+direction and returns a cons of booleans containing (@var{transparent}
+. @var{empty}). The following variables are predefined:
+@code{all-visible}, @code{begin-of-line-visible},
+@code{end-of-line-visible}, @code{begin-of-line-invisible},
+@code{end-of-line-invisible}, @code{all-invisible}.")
+ (flag-count ,number? "The number of tremolo beams.")
+
+ (when ,ly:moment? "Global time step associated with this column
+happen?")
+ (word-space ,ly:dimension? "space to insert between lyrics or
+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.")
+ (y-offset ,ly:dimension? "Extra vertical offset for ties away
+from the center line.")
+ (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.")
+
+ )))
+
+
+;;;;;;;;;;;;;;;;
+;; INTERNAL
+
+
+(define (define-internal-grob-property symbol type? description)
+ (define-grob-property symbol type? description)
+ (set-object-property! symbol 'backend-internal #t)
+ symbol
+ )