]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/scm-option.cc
''
[lilypond.git] / lily / scm-option.cc
index b98327d1a37cc797a7c8f6176833b238cdc3c4ea..e924020aa78624e2e7fa332c23fe054b45d05849 100644 (file)
@@ -3,15 +3,16 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 2001--2002  Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
 #include <iostream.h>
+
 #include "string.hh"
 #include "lily-guile.hh"
 #include "scm-option.hh"
-
+#include "warn.hh"
 
 /*
   This interface to option setting is meant for setting options are
@@ -33,14 +34,14 @@ 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;
 
-  TODO: verzin iets tegen optie code bloot
-
+/*
 
-  other interesting stuff to add:
+add these as well:
 
 @item -T,--no-timestamps
 don't timestamp the output
@@ -50,8 +51,20 @@ Switch on any experimental features.  Not for general public use.
 
  */
 
-SCM
-set_lily_option (SCM var, SCM val)
+LY_DEFINE(set_lily_option,"set-lily-option", 2, 0, 0,  (SCM var, SCM val),
+         "Set a global option for the program. Supported options  include
+
+
+@table @code
+@item help
+List all options.
+@item midi-debug
+If set to true, generate human  readable MIDI
+@end table
+
+This function is useful to call from the command line: @code{lilypond -e
+\"(set-lily-option 'midi-debug #t)\"}.
+")
 {
   /*
     Scheme option usage:
@@ -59,15 +72,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 :
+").ch_C()<<endl;
+      
+      cout << "  help (any-symbol)"<<endl; 
+      cout << "  internal-type-checking (boolean)"<<endl; 
+      cout << "  midi-debug (boolean)"<<endl; 
+      cout << "  testing-level (int)"<<endl; 
+
       exit (0);
     }
   else if (var == ly_symbol2scm ("midi-debug"))
@@ -78,6 +98,10 @@ set_lily_option (SCM var, SCM val)
     {
      testing_level_global = gh_scm2int (val); 
     }
+  else if (var == ly_symbol2scm ("internal-type-checking"))
+    {
+     internal_type_checking_global_b = to_boolean (val); 
+    }
   else if (var == ly_symbol2scm ("find-old-relative"))
     {
       /*
@@ -91,20 +115,16 @@ set_lily_option (SCM var, SCM val)
       */
 
       ;
-      
     }
+  else
+    {
+      warning (_("Unknown internal option!"));
+    }
+  
 
   return SCM_UNSPECIFIED;
 }
 
 
-static void
-init_functions ()
-{
-  scm_make_gsubr ("set-lily-option", 2, 0, 0, (Scheme_function_unknown)set_lily_option);
-}
-
-
-ADD_SCM_INIT_FUNC (init_functions_sopt, init_functions);