]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.5.34
authorfred <fred>
Wed, 27 Mar 2002 02:05:51 +0000 (02:05 +0000)
committerfred <fred>
Wed, 27 Mar 2002 02:05:51 +0000 (02:05 +0000)
16 files changed:
Documentation/GNUmakefile
lily/bar.cc
lily/grob.cc
lily/include/main.hh
lily/item.cc
lily/main.cc
lily/music.cc
lily/scm-option.cc
lily/system-start-delimiter-engraver.cc
lily/system-start-delimiter.cc
lily/volta-engraver.cc
make/ly-rules.make
scm/basic-properties.scm
scm/grob-description.scm
scm/grob-property-description.scm
scripts/lilypond-book.py

index 0dd22f2f2e8477b1122f1e6e0497e560dfdb683c..bda53f721248c213e063330e09d692fe511c3997 100644 (file)
@@ -4,7 +4,7 @@ NAME = documentation
 SUBDIRS=user bibliography pictures topdocs misc windows
 STEPMAKE_TEMPLATES=documentation texinfo tex
 LOCALSTEPMAKE_TEMPLATES=lilypond ly
-
+LILYPOND_BOOK_FLAGS=--extra-options '-e "(set-lily-option (quote internal-type-checking) \#t)"'
 README_TOP_FILES=NEWS DEDICATION CHANGES 
 EXTRA_DIST_FILES=
 
index 7ad1f12693a9fee9ca4b5e0f482bc57d3b521945..a390189a929d2bbbae3204d212775ad4c0d8f569 100644 (file)
@@ -153,7 +153,7 @@ Bar::before_line_breaking (SCM smob)
   
   if (!gh_string_p (g))
     {
-      me->set_grob_property ("molecule-callback", SCM_BOOL_T);
+      me->set_grob_property ("molecule-callback", SCM_EOL);
       me->set_extent_callback (SCM_EOL, X_AXIS);
       // leave y_extent for spanbar? 
     }
index e9025beb46d04b5de7bee8d1d653c110b50ce9e8..4077188023f22a9ab952a30d153a3a7bd3f82d84 100644 (file)
@@ -168,10 +168,15 @@ Grob::set_immutable_grob_property (SCM s, SCM v)
 }
 #endif
 
-
 void
 Grob::internal_set_grob_property (SCM s, SCM v)
 {
+#ifndef NDEBUG
+  if (internal_type_checking_global_b)
+    assert (type_check_assignment (s, v, ly_symbol2scm ("backend-type?")));
+#endif
+
+  
   mutable_property_alist_ = scm_assq_set_x (mutable_property_alist_, s, v);
 }
 
@@ -818,6 +823,9 @@ ly_set_grob_property (SCM elt, SCM sym, SCM val)
       return SCM_UNSPECIFIED;
     }
 
+  if (!type_check_assignment (sym, val, ly_symbol2scm ("backend-type?")))
+    return SCM_UNSPECIFIED;
+      
   if (sc)
     {
       sc->internal_set_grob_property (sym, val);
index 69cc315faf54bfd46cf99224b830703c7f941f7b..0fadb2524af66638c513fe4427102a74e414c21b 100644 (file)
@@ -31,6 +31,8 @@ extern String output_name_global;
 extern bool safe_global_b;
 extern bool verbose_global_b;
 extern bool store_locations_global_b;
+extern bool internal_type_checking_global_b;
+
 
 /* misc */
 extern All_font_metrics *all_fonts_global_p;
index e92ac8ac90afbffcb934c820e656808513545b60..b07210f8bc011a5f4dc0e17642686fa293da7832 100644 (file)
@@ -173,7 +173,7 @@ Item::handle_prebroken_dependencies ()
          set_extent_callback (SCM_EOL, Y_AXIS);
        }
       else if (trans)
-       set_grob_property ("molecule-callback", SCM_BOOL_T);
+       set_grob_property ("molecule-callback", SCM_EOL);
     }
 }
 
index d1158824c167db06075af6a161a064aa55e108ee..37d8dfff9eb07e1150f610959f3f992132b76518 100644 (file)
@@ -103,8 +103,8 @@ static Getopt_long *oparser_p_static = 0;
        follow regular localisation guidelines).
  */
 static Long_option_init options_static[] = {
-  /* print example usage:  lilypond -e "(set-lily-option 'help 0)" ? */
-  {_i ("EXPR"), "evaluate", 'e',_i ("evalute EXPR as Scheme after .scm init is read")},
+  /* print example usage:  lilypond -e "" ? */
+  {_i ("EXPR"), "evaluate", 'e',_i ("Scheme options: try -e \"(set-lily-option 'help 0)\" for more help.")},
   /* another bug in option parser: --output=foe is taken as an abbreviation
      for --output-format */
   {_i ("EXT"), "format", 'f',  _i ("use output format EXT (tex [default], pdftex, ps, scm or as)")},
index 597afc58b22da9b6bcf7c5fe6077703771674967..b00c8519d66f1dc56a8efee83999f0e74e65118b 100644 (file)
@@ -6,6 +6,7 @@
   (c)  1997--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
+#include "main.hh"
 #include "input-smob.hh"
 #include "music.hh"
 #include "music-list.hh"
@@ -167,9 +168,16 @@ Music::internal_get_mus_property (SCM sym) const
 }
 
 
+
 void
 Music::internal_set_mus_property (SCM s, SCM v)
 {
+#ifndef NDEBUG
+  if (internal_type_checking_global_b)
+    assert (type_check_assignment (s, v, ly_symbol2scm ("backend-type?")));
+#endif
+  
+
   mutable_property_alist_ = scm_assq_set_x (mutable_property_alist_, s, v);
 }
 
@@ -238,7 +246,7 @@ ly_set_mus_property (SCM mus, SCM sym, SCM val)
     }
 
 
-  bool ok = type_check_assignment (val, sym, ly_symbol2scm ("music-type?"));
+  bool ok = type_check_assignment (sym, val, ly_symbol2scm ("music-type?"));
   if (ok)
     {
       sc->internal_set_mus_property (sym, val);
index 5e38876b0d456b33ca5d90928fc0bf1f9aadb72b..2eac1482aca2df84441d60cfb0a720e54163d4db 100644 (file)
@@ -33,7 +33,10 @@ bool midi_debug_global_b;
 /* General purpose testing flag */
 int testing_level_global;
 
-
+/*
+  crash if internally the wrong type is used for a grob property.
+ */
+bool internal_type_checking_global_b;
 
 /*
 
@@ -59,15 +62,22 @@ set_lily_option (SCM var, SCM val)
    */
   if (var == ly_symbol2scm ("help"))
     {
-      cout << '\n';
-      cout << _ ("Scheme options:");
-      cout << '\n';
-      cout << "  help (any-symbol)"; 
-      cout << '\n';
-      cout << "  midi-debug (boolean)"; 
-      cout << '\n';
-      cout << "  testing-level (int)"; 
-      cout << '\n';
+      cout << _("lilypond -e EXPR means
+
+evalute EXPR as Scheme after init.scm has been read.  In particular,
+the function set-lily-option allows for access to some internal
+variables. Usage:
+
+  (set-lily-option SYMBOL VAL)
+
+possible options for SYMBOL are :
+")<<endl;
+      
+      cout << "  help (any-symbol)"<<endl; 
+      cout << "  internal-type-checks #t"<<endl; 
+      cout << "  midi-debug (boolean)"<<endl; 
+      cout << "  testing-level (int)"<<endl; 
+
       exit (0);
     }
   else if (var == ly_symbol2scm ("midi-debug"))
@@ -78,6 +88,10 @@ set_lily_option (SCM var, SCM val)
     {
      testing_level_global = gh_scm2int (val); 
     }
+  else if (var == ly_symbol2scm ("internal-type-checks"))
+    {
+     internal_type_checking_global_b = to_boolean (val); 
+    }
   else if (var == ly_symbol2scm ("find-old-relative"))
     {
       /*
index fe40a06b84d19c51f7e7f45d13e35f05517ee971..6dd02513da3bebefbcfc469ad9596c2c3381723e 100644 (file)
@@ -49,11 +49,11 @@ System_start_delimiter_engraver::acknowledge_grob (Grob_info inf)
       /*
        UGH UGH
        */
-      if (gh_symbol_p (gl) && gl  == ly_symbol2scm ("brace")
-         && gh_symbol_p (my_gl) && my_gl == ly_symbol2scm ("bracket"))
+      if (gh_string_p (gl) && gh_equal_p (gl, ly_symbol2scm ("brace"))
+         && gh_string_p (my_gl) && gh_equal_p (my_gl, ly_symbol2scm ("bracket")))
        inf.grob_l_->translate_axis (-0.8, X_AXIS); // ugh
-      else if (gh_symbol_p (gl) && gl  == ly_symbol2scm ("bracket")
-              && gh_symbol_p (my_gl) && my_gl == ly_symbol2scm ("bracket"))
+      else if (gh_string_p (gl) && gh_equal_p (gl, ly_symbol2scm ("bracket"))
+              && gh_string_p (my_gl) && gh_equal_p (my_gl, ly_symbol2scm ("bracket")))
        {
          inf.grob_l_->translate_axis ( -0.8, X_AXIS); // ugh
          inf.grob_l_->set_grob_property ("arch-height",
@@ -71,7 +71,7 @@ System_start_delimiter_engraver::System_start_delimiter_engraver ()
 void
 System_start_delimiter_engraver::initialize ()
 {
-  SCM delim_name =get_property ("SystemStartDelimiter");
+  SCM delim_name =get_property ("systemStartDelimiter");
   delim_ = new Spanner (internal_get_property (delim_name));
 
   delim_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
@@ -91,5 +91,5 @@ ENTER_DESCRIPTION(System_start_delimiter_engraver,
 /* descr */       "creates a system start delimiter (ie. SystemStart@{Bar,Brace,Bracket@} spanner",
 /* creats*/       "SystemStartBar SystemStartBrace SystemStartBracket",
 /* acks  */       "system-start-delimiter-interface staff-symbol-interface",
-/* reads */       "",
+/* reads */       "systemStartDelimiter",
 /* write */       "");
index e2c4f02d87f0f3d7e0714eb5a387a68822b005e8..b526caebb841ecc37e499b70a9b746e45d31d007 100644 (file)
@@ -84,8 +84,8 @@ System_start_delimiter::after_line_breaking (SCM smob)
 {
   Grob * me = unsmob_grob (smob);
   SCM   gl = me->get_grob_property ("glyph");
-  
-  if (scm_ilength (me->get_grob_property ("elements")) <=  1 && gl == ly_symbol2scm ("bar-line"))
+
+  if (scm_ilength (me->get_grob_property ("elements")) <=  1 && gh_equal_p (gl,ly_str02scm ("bar-line")))
     {
       me->suicide ();
     }
index 411cbc07da0d2d428014e4b30815448eb135f6d3..4d03ac6ea3857575e003a4066fb99751c5974d84 100644 (file)
@@ -111,13 +111,6 @@ Volta_engraver::process_music ()
     {
       end_volta_span_p_ = volta_span_p_;
       volta_span_p_ =0;
-
-      /*
-       maybe do typeset_grob () directly?
-      */
-
-      if (!gh_string_p (start_str_))
-       end_volta_span_p_->set_grob_property ("last-volta", SCM_BOOL_T);
     }
 
   if (gh_string_p (start_str_) && volta_span_p_)
index 81cb51cb6d6edd4fa4a65941ec30aed92f301f47..2f5b4942352f01a5b951e7570fc1ee918cb56ed7 100644 (file)
@@ -5,19 +5,20 @@
 
 $(outdir)/%.latex: %.doc
        rm -f $@
-       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) $<
+       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES)\
+$(LILYPOND_BOOK_FLAGS) --dependencies --outdir=$(outdir) $<
        chmod -w $@
 
 # don't do ``cd $(outdir)'', and assume that $(outdir)/.. is the src dir.
 # it is not, for --srcdir builds
 $(outdir)/%.texi: %.tely
        rm -f $@
-       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi $<
+       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi $(LILYPOND_BOOK_FLAGS) $<
        chmod -w $@
 
 $(outdir)/%.texi: $(outdir)/%.tely
        rm -f $@
-       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi $<
+       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi $(LILYPOND_BOOK_FLAGS) $<
        rm -f $<
        chmod -w $@
 
@@ -25,7 +26,7 @@ $(outdir)/%.texi: $(outdir)/%.tely
 # for plain info doco: don't run lily
 $(outdir)/%.nexi: %.tely
        rm -f $@
-       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi --no-lily $<
+       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --dependencies --outdir=$(outdir) --format=texi --no-lily $(LILYPOND_BOOK_FLAGS) $<
        mv $(@D)/$(*F).texi $@
        chmod -w $@
 
index e3c781c1bcea9ef685be3d978b8045e4cc4da64f..57c77912b4de063a1b9554aabe155349fc5de945 100644 (file)
                          ("||:" . ("||" . "|:"))
                          ("|" . ("|" . ""))
                          ("||:" . ("||" . "|:"))
-                         ("|s" . (nil . "|"))
+                         ("|s" . (() . "|"))
                          ("|:" . ("|" . "|:"))
-                         ("|." . ("|." . nil))
-                         (".|" . (nil . ".|"))
-                         (":|" . (":|" . nil))
-                         ("||" . ("||" . nil))
-                         (".|." . (".|." . nil))
+                         ("|." . ("|." . ()))
+                         (".|" . (() . ".|"))
+                         (":|" . (":|" . ()))
+                         ("||" . ("||" . ()))
+                         (".|." . (".|." . ()))
                          ("" . ("" . ""))
-                         ("empty" . ("nil" . nil))
-                         ("brace" . (nil . "brace"))
-                         ("bracket" . (nil . "bracket"))  
+                         ("empty" . ("()" . ()))
+                         ("brace" . (() . "brace"))
+                         ("bracket" . (() . "bracket"))  
                          )
                        )))
 
 ;; See [Wanske] page 126 -- 134, [Ross] pg 143 -- 147
 ;;
 
-;; documentme: difference between extra-space and minimum-space
-
-;; documentme: difference between extra-space and minimum-space
+;; documentme: difference between extra-space and minimum-space-pair 
 
 ;; (Measured in staff space)
 (define default-break-align-space-alist
  '(
-   ((Staff_bar Custos) . (minimum-space 2.0))
-   ((Custos begin-of-note) . (minimum-space 0.0))
+   ((Staff_bar Custos) . (minimum-space-pair  2.0))
+   ((Custos begin-of-note) . (minimum-space-pair  0.0))
    ((none Instrument_name) . (extra-space 1.0))
    ((Instrument_name Left_edge_item) . (extra-space 1.0))
    ((Left_edge_item Clef_item) . (extra-space 1.0))
    ((Left_edge_item Staff_bar) . (extra-space 0.0))
 ;   ((none Left_edge_item) . (extra-space -15.0))
 ;   ((none Left_edge_item) . (extra-space -15.0))
-   ((none Clef_item) . (minimum-space 1.0))
-   ((none Staff_bar) . (minimum-space 0.0))
-   ((none Clef_item) . (minimum-space 1.0))
-   ((none Key_item) . (minimum-space 0.5))
+   ((none Clef_item) . (minimum-space-pair  1.0))
+   ((none Staff_bar) . (minimum-space-pair  0.0))
+   ((none Clef_item) . (minimum-space-pair  1.0))
+   ((none Key_item) . (minimum-space-pair  0.5))
    ((none Time_signature) . (extra-space 0.0))
-   ((none begin-of-note) . (minimum-space 1.5))
-   ((Clef_item Key_item) . (minimum-space 4.0))
+   ((none begin-of-note) . (minimum-space-pair  1.5))
+   ((Clef_item Key_item) . (minimum-space-pair  4.0))
    ((Key_item Time_signature) . (extra-space 1.0))
-   ((Clef_item  Time_signature) . (minimum-space 3.5))
-   ((Staff_bar Clef_item) .   (minimum-space 1.0))
-   ((Clef_item  Staff_bar) .  (minimum-space 3.7))
-   ((Time_signature Staff_bar) .  (minimum-space 2.0))
+   ((Clef_item  Time_signature) . (minimum-space-pair  3.5))
+   ((Staff_bar Clef_item) .   (minimum-space-pair  1.0))
+   ((Clef_item  Staff_bar) .  (minimum-space-pair  3.7))
+   ((Time_signature Staff_bar) .  (minimum-space-pair  2.0))
    ((Key_item  Staff_bar) .  (extra-space 1.0))
-   ((Staff_bar Time_signature) . (minimum-space 1.5)) 
+   ((Staff_bar Time_signature) . (minimum-space-pair  1.5)) 
    ((Time_signature begin-of-note) . (extra-space 2.0)) 
    ((Key_item begin-of-note) . (extra-space 2.5))
    ((Staff_bar begin-of-note) . (extra-space 1.0))
-   ((Clef_item begin-of-note) . (minimum-space 5.0))
-   ((Left_edge_item Breathing_sign) . (minimum-space 0.0))   
-   ((none Breathing_sign) . (minimum-space 0.0))
-   ((Breathing_sign Key_item) . (minimum-space 1.5))
-   ((Breathing_sign begin-of-note) . (minimum-space 1.0))
-   ((Breathing_sign Staff_bar) . (minimum-space 1.5))
-   ((Breathing_sign Clef_item) . (minimum-space 2.0))
+   ((Clef_item begin-of-note) . (minimum-space-pair  5.0))
+   ((Left_edge_item Breathing_sign) . (minimum-space-pair  0.0))   
+   ((none Breathing_sign) . (minimum-space-pair  0.0))
+   ((Breathing_sign Key_item) . (minimum-space-pair  1.5))
+   ((Breathing_sign begin-of-note) . (minimum-space-pair  1.0))
+   ((Breathing_sign Staff_bar) . (minimum-space-pair  1.5))
+   ((Breathing_sign Clef_item) . (minimum-space-pair  2.0))
    )
 )
index 0ce17a070685e768e591e16820cfe6f5ea5ed182..02bfd0d36d96627e090d6b2a7731e4911277bb7d 100644 (file)
                (meta . ,(grob-description sustain-pedal-interface side-position-interface font-interface))
        ))
 
-       ;; TODO: should split in 3
        (SystemStartBrace . (
-               (glyph . brace)
+               (glyph . "brace")
                (molecule-callback . ,System_start_delimiter::brew_molecule)
                (collapse-height . 5.0)
                (font-family . braces)
        (SystemStartBracket . (
                (Y-extent-callback . #f)
                (molecule-callback . ,System_start_delimiter::brew_molecule)
-               (glyph . bracket)
+               (glyph . "bracket")
                (arch-height . 1.5)
                (arch-angle . 50.0)
                (arch-thick . 0.25)
        (SystemStartBar . (
                (Y-extent-callback . #f)
                (molecule-callback . ,System_start_delimiter::brew_molecule)
-               (glyph . bar-line)
+               (glyph . "bar-line")
                (thickness . 1.6)
                (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking)
                (meta . ,(grob-description system-start-delimiter-interface ))
 
 ;; make sure that \property Foo.Bar =\turnOff doesn't complain
 
-(map (lambda (x) (set-object-property! (car x) 'translator-type? list?))
+(map (lambda (x)
+       ; (display (car x)) (newline)
+
+       (set-object-property! (car x) 'translation-type? list?))
      all-grob-descriptions)
index 4231dfe19d078387c2fae5f0674a523b268cdb4d..b64817cf6147a7b34536c85e6fa83e568ec8cc6e 100644 (file)
@@ -21,8 +21,6 @@
   (set! all-backend-properties (cons symbol all-backend-properties))
   )
 
-
-  
 ;; put this in an alist?
 
 (grob-property-description 'X-extent-callback procedure? "procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.")
@@ -177,7 +175,7 @@ is used by @ref{note-collision-interface}.")
 (grob-property-description 'fraction number-pair? "fraction of a time signature.")
 (grob-property-description 'full-size-change boolean? "if set, don't make a change clef smaller.")
 
-(grob-property-description 'glyph symbol? "a string determining what (style) of  glyph is typeset. Valid choices depend on the function that is reading this property. .")
+(grob-property-description 'glyph string? "a string determining what (style) of  glyph is typeset. Valid choices depend on the function that is reading this property. .")
 (grob-property-description 'glyph-name string? "a name of character within font.")
 
 (grob-property-description 'gap number? "Size of a gap in a variable symbol.")
@@ -205,7 +203,9 @@ For text,  this is `relative'(?) to the current alignment.
 
 For barline, space after a thick line.")
 (grob-property-description 'layer number? "The output layer [0..2].  The default is 1.")
+
 (grob-property-description 'left-padding number? "space left of accs.")
+
 (grob-property-description 'length number? "Stem length for unbeamed stems, only for user override.")
 (grob-property-description 'lengths list? "Stem length given multiplicity of flag.")
 (grob-property-description 'line-count integer? "Number of staff
@@ -220,6 +220,7 @@ and will have no effect.
 (grob-property-description 'maximum-duration-for-spacing moment? "space as if a duration of this type is available in this measure.")
 (grob-property-description 'maximum-length number? "don't make Grob longer than this")
 (grob-property-description 'maximum-rest-count integer? "kill off rests so we don't more than this number left.")
+(grob-property-description 'measure-count integer? "number of measures for a multimeasure rest.")
 (grob-property-description 'merge-differently-dotted boolean? " Merge noteheads in collisions, even if they have a different number of dots. This normal notation for some types of polyphonic music. The value of this setting is used by @ref{note-collision-interface} .")
 (grob-property-description 'minimum-distance number? "minimum distance between notes and rests.")
 (grob-property-description 'minimum-distances list? "list of rods (ie. (OBJ . DIST) pairs).")
@@ -236,9 +237,14 @@ Also works as a scaling parameter for the length of hyphen. .")
 FIXME: also pair? (cons LEFT RIGHT)
 
 ")
+(grob-property-description 'minimum-space-pair number-pair? "
 
+? (cons LEFT RIGHT)
+
+")
 (grob-property-description 'minimum-width number? "minimum-width of rest symbol, in staffspace.")
 (grob-property-description 'molecule-callback procedure? "Function taking grob as argument, returning a Scheme encoded Molecule.")
+(grob-property-description 'molecule molecule? "Cached output of the molecule-callback.")
 
 (grob-property-description 'new-accidentals list? "list of (pitch, accidental) pairs.")
 (grob-property-description 'no-spacing-rods boolean? "read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM).")
@@ -267,18 +273,19 @@ as a real penalty.")
 (grob-property-description 'right-padding number? "space right of accs.")
 (grob-property-description 'right-trim-amount number? "shortening of the lyric extender on the right.")
 (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? "real number: -1 =
+(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 'shortest-playing-duration moment? "duration of the shortest playing in that column.")
 (grob-property-description 'shortest-starter-duration moment? "duration of the shortest notes that starts exactly in this column.")
 (grob-property-description 'side-relative-direction dir? "if set: get the direction from a different object, and multiply by this.")
-(grob-property-description 'side-support list? "the support, a list of grobs.")
+(grob-property-description 'side-support-elements 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 'solid boolean? "should porrectus be solidly filled?.")
@@ -294,7 +301,7 @@ itself.  Return value is ignored.")
 (grob-property-description 'stacking-dir dir? "stack contents of grobs in which direction ?.")
 (grob-property-description 'staff-space number? "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 'staff-symbol boolean? "the staff symbol grob that we're in.")
+
 (grob-property-description 'staffline-clearance number? "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
@@ -376,6 +383,7 @@ The following abbreviations are currently defined:
 (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 number? "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
@@ -403,3 +411,24 @@ function of type (beam multiplicity dy staff-line-thickness) -> real.  Default v
 (grob-property-description 'y-free number? "minimal vertical gap between slur and noteheads or stems.")
 (grob-property-description 'y-offset number? "extra vertical offset for ties away from the center line.")
 (grob-property-description 'y number? "set by beam: position of left edge.")
+
+
+;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;; INTERNAL
+
+(grob-property-description 'left-neighbors list? "")
+(grob-property-description 'right-neighbors list? "")
+(grob-property-description 'left-items list? "")
+(grob-property-description 'right-items list? "")
+(grob-property-description 'cause scheme? "Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob.  ")
+(grob-property-description 'font font-metric? "Cached font metric object")
+(grob-property-description 'break-alignment-done boolean? "mark flag to signal we've done alignment already.")
+(grob-property-description 'staff-symbol ly-grob? "the staff symbol grob that we're in.")
+(grob-property-description 'collision-done boolean? "")
+(grob-property-description 'rest ly-grob? "the staff symbol grob that we're in.")
+(grob-property-description 'rest-collision ly-grob? "rest collision that a rest is in.")
+
+(grob-property-description 'staff-support boolean? " JUNKME.")
+(grob-property-description 'script-molecule pair? "index code for script.")
+
+(grob-property-description 'accidentals-grob ly-grob? "accidentals for this note.")
index 2eb4a0c5f257d034824de2d8ab317cae9db3ed62..8dc047bb26b72249bf39bd8faad216465e04a3dd 100644 (file)
@@ -98,7 +98,7 @@ include_path = [os.getcwd()]
 
 
 # g_ is for global (?)
-
+g_extra_opts = ''
 g_here_dir = os.getcwd ()
 g_dep_prefix = ''
 g_outdir = ''
@@ -106,6 +106,7 @@ g_force_lilypond_fontsize = 0
 g_read_lys = 0
 g_do_pictures = 1
 g_num_cols = 1
+
 format = ''
 g_run_lilypond = 1
 no_match = 'a\ba'
@@ -368,6 +369,7 @@ option_definitions = [
   ('EXT', 'f', 'format', 'set format.  EXT is one of texi and latex.'),
   ('DIM',  '', 'default-music-fontsize', 'default fontsize for music.  DIM is assumed to be in points'),
   ('DIM',  '', 'default-lilypond-fontsize', 'deprecated, use --default-music-fontsize'),
+  ('OPT', '', 'extra-options' , 'Pass OPT quoted to the lilypond command line'),
   ('DIM', '', 'force-music-fontsize', 'force fontsize for all inline lilypond. DIM is assumed be to in points'),
   ('DIM', '', 'force-lilypond-fontsize', 'deprecated, use --force-music-fontsize'),
   ('DIR', 'I', 'include', 'include path'),
@@ -1046,7 +1048,7 @@ def compile_all_files (chunks):
                        if g_outdir:
                                lilyopts = lilyopts + '--dep-prefix=' + g_outdir + '/'
                texfiles = string.join (tex, ' ')
-               system ('lilypond --header=texidoc %s %s' % (lilyopts, texfiles))
+               system ('lilypond --header=texidoc %s %s %s' % (lilyopts, g_extra_opts, texfiles))
 
                #
                # Ugh, fixing up dependencies for .tex generation
@@ -1329,6 +1331,8 @@ for opt in options:
        elif o == '--default-lilypond-fontsize':
                print "--default-lilypond-fontsize is deprecated, use --default-music-fontsize"
                default_music_fontsize = string.atoi (a)
+       elif o == '--extra-options':
+               g_extra_opts = a
        elif o == '--force-music-fontsize':
                g_force_lilypond_fontsize = string.atoi(a)
        elif o == '--force-lilypond-fontsize':