X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fscm-option.cc;h=dac63fde4404009a0c34012d9577a913043eecd8;hb=a33165e3b6af2d807d069e6eacd0e220ba2ef68a;hp=3b5de500c13df0b9a85cf987615cfde7119bb697;hpb=955f829883aa125b2b633b1e71f6256da5b773fa;p=lilypond.git diff --git a/lily/scm-option.cc b/lily/scm-option.cc index 3b5de500c1..dac63fde44 100644 --- a/lily/scm-option.cc +++ b/lily/scm-option.cc @@ -1,18 +1,19 @@ -/* +/* scm-option.cc -- implement option setting from Scheme - + source file of the GNU LilyPond music typesetter - - (c) 2001--2003 Han-Wen Nienhuys - + + (c) 2001--2004 Han-Wen Nienhuys + */ -#include -#include "parse-scm.hh" -#include "string.hh" -#include "lily-guile.hh" #include "scm-option.hh" + +#include + +#include "parse-scm.hh" #include "warn.hh" +#include "main.hh" /* This interface to option setting is meant for setting options are @@ -24,20 +25,23 @@ preferably, also dont use TESTING_LEVEL_GLOBAL, since it defeats another purpose of this very versatile interface, which is to support multiple debug/testing options concurrently. - + */ /* Write midi as formatted ascii stream? */ bool midi_debug_global_b; +int preview_resolution_global = 90; + + /* General purpose testing flag */ int testing_level_global; /* Backwards compatibility. */ -bool lily_1_8_relative = true; +bool lily_1_8_relative = false; bool lily_1_8_compatibility_used = false; /* @@ -45,27 +49,25 @@ bool lily_1_8_compatibility_used = false; */ bool internal_type_checking_global_b; + +/* + What is this function for ? + */ LY_DEFINE (ly_option_usage, "ly:option-usage", 0, 0, 0, (SCM), - "Print ly-set-option usage") -{ + "Print ly:set-option usage") +{ printf ( _("lilypond -e EXPR means:").to_str0 ()); puts (""); printf (_ (" Evalute the Scheme EXPR before parsing any .ly files.").to_str0 ()); puts (""); printf (_ (" Multiple -e options may be given, they will be evaluated sequentially.").to_str0 ()); puts (""); - printf (_(" The function ly-set-option allows for access to some internal variables.").to_str0 ()); + printf (_(" The function ly:set-option allows for access to some internal variables.").to_str0 ()); puts ("\n"); - printf (_ ("Usage: lilypond -e \"(ly-set-option SYMBOL VAL)\"").to_str0 ()); + printf (_ ("Usage: lilypond -e \"(ly:set-option SYMBOL VAL)\"").to_str0 ()); puts ("\n"); - printf (_ ("Where SYMBOL VAL pair is any of:").to_str0 ()); - puts (""); - printf ( " help ANY-SYMBOL\n" - " internal-type-checking BOOLEAN\n" - " midi-debug BOOLEAN\n" - " parse-protect BOOLEAN\n" - " testing-level INTEGER\n"); - + printf (_ ("Use help as SYMBOL to get online help.").to_str0 ()); + exit (0); return SCM_UNSPECIFIED; } @@ -76,7 +78,11 @@ LY_DEFINE (ly_option_usage, "ly:option-usage", 0, 0, 0, (SCM), don't timestamp the output @item -t,--test -Switch on any experimental features. Not for general public use. */ +Switch on any experimental features. Not for general public use. + +*/ + + LY_DEFINE (ly_set_option, "ly:set-option", 1, 1, 0, (SCM var, SCM val), "Set a global option value. Supported options include\n" "\n" @@ -91,56 +97,48 @@ LY_DEFINE (ly_set_option, "ly:set-option", 1, 1, 0, (SCM var, SCM val), "If protection is switched on, errors in inline scheme are caught in the parser. \n" "If off, GUILE will halt on errors, and give a stack trace. Default is protected evaluation. \n" "@item old-relative\n" -"Relative for simultaneous functions similar to chord syntax\n" +"Relative for simultaneous music functions similar to chord syntax\n" "@item new-relative\n" -"Relative for simultaneous functions similar to sequential music\n" +"Relative for simultaneous music functions similar to sequential music\n" "@end table\n" "\n" "This function is useful to call from the command line: @code{lilypond -e\n" -"\"(ly-set-option 'midi-debug #t_)\"}.\n") +"\"(ly:set-option 'midi-debug #t)\"}.\n") { if (val == SCM_UNDEFINED) val = SCM_BOOL_T; if (var == ly_symbol2scm ("help")) - { - /* lilypond -e "(ly-set-option 'help #t)" */ - ly_option_usage (SCM_EOL); - } + /* lilypond -e "(ly:set-option 'help #t)" */ + ly_option_usage (SCM_EOL); else if (var == ly_symbol2scm ("midi-debug")) - { - midi_debug_global_b = to_boolean (val); - } + midi_debug_global_b = to_boolean (val); else if (var == ly_symbol2scm ("testing-level")) - { - testing_level_global = gh_scm2int (val); - } + testing_level_global = scm_to_int (val); else if (var == ly_symbol2scm ("parse-protect" )) - { - parse_protect_global = to_boolean(val); - } + parse_protect_global = to_boolean (val); else if (var == ly_symbol2scm ("internal-type-checking")) - { - internal_type_checking_global_b = to_boolean (val); - } + internal_type_checking_global_b = to_boolean (val); else if (var == ly_symbol2scm ("old-relative")) { lily_1_8_relative = true; - lily_1_8_compatibility_used = false; + /* Needs to be reset for each file that uses this option. */ + lily_1_8_compatibility_used = false; } + else if (var == ly_symbol2scm ("resolution")) + preview_resolution_global = robust_scm2int (val, 90); else if (var == ly_symbol2scm ("new-relative")) - { - lily_1_8_relative = false; - } + lily_1_8_relative = false; else { - warning (_("Unknown internal option!")); + if (scm_is_symbol (var)) + var = scm_symbol_to_string (var); + + warning (_f ("No such internal option: %s", ly_scm2string (var))); } - return SCM_UNSPECIFIED; } - LY_DEFINE (ly_get_option, "ly:get-option", 1, 0, 0, (SCM var), "Get a global option setting. Supported options include\n" "@table @code\n" @@ -148,21 +146,33 @@ LY_DEFINE (ly_get_option, "ly:get-option", 1, 0, 0, (SCM var), "Report whether old-relative compatibility mode is necessary\n" "@item old-relative\n" "Report whether old-relative compatibility mode is used\n" + "@item verbose\n" + "Report whether we are running in verbose mode\n" + "@item resolution\n" + "Resolution for the PNG output." "@end table\n" "\n") { - if (var == ly_symbol2scm ("old-relative-used")) - { - return gh_bool2scm (lily_1_8_compatibility_used); - } - if (var == ly_symbol2scm ("old-relative")) - { - return gh_bool2scm (lily_1_8_relative); - } + SCM o = SCM_UNSPECIFIED; + + if (var == ly_symbol2scm ("safe")) // heavily used; put in front. + o = ly_bool2scm (safe_global_b); + else if (var == ly_symbol2scm ("old-relative-used")) + o = ly_bool2scm (lily_1_8_compatibility_used); + else if (var == ly_symbol2scm ("old-relative")) + o = ly_bool2scm (lily_1_8_relative); + else if (var == ly_symbol2scm ("verbose")) + o = ly_bool2scm (verbose_global_b); + else if ( var == ly_symbol2scm ("resolution")) + o = scm_from_int (preview_resolution_global); else { - warning (_("Unknown internal option!")); - } + if (scm_is_symbol (var)) + var = scm_symbol_to_string (var); - return SCM_UNSPECIFIED; + String s = ly_scm2string (var); + + warning (_f ("No such internal option: %s", s.to_str0() )); + } + return o; }