X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Flily.scm;h=5c2c846275ed121a5eeeadd7d852a647db4312b3;hb=706b1bf8f6eed212eb1314641148ecea950623e8;hp=bbea5afab996462f9eedb9a6ee3613f65581ce5a;hpb=d6bfed981f663c440475b56995c7f965af16589d;p=lilypond.git diff --git a/scm/lily.scm b/scm/lily.scm index bbea5afab9..5c2c846275 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2011 Jan Nieuwenhuizen +;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -120,6 +120,10 @@ jobs.") (log-file #f "If string FOO is given as argument, redirect output to log file `FOO.log'.") + (max-markup-depth 1024 +"Maximum depth for the markup tree. If a markup has more levels, +assume it will not terminate on its own, print a warning and return a +null markup instead.") (midi-extension ,(if (eq? PLATFORM 'windows) "mid" "midi") @@ -215,7 +219,8 @@ messages into errors.") (srfi srfi-14) (scm clip-region) (scm memory-trace) - (scm coverage)) + (scm coverage) + (scm safe-utility-defs)) (define-public _ gettext) ;;; There are new modules defined in Guile V2.0 which we need to use. @@ -340,50 +345,6 @@ messages into errors.") (fresh-interface!)))) (set-module-obarray! iface (module-obarray mod)))))) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define (type-check-list location signature arguments) - "Typecheck a list of arguments against a list of type predicates. -Print a message at LOCATION if any predicate failed." - (define (recursion-helper signature arguments count) - (define (helper pred? arg count) - (if (not (pred? arg)) - (begin - (ly:input-message - location - (format - #f (_ "wrong type for argument ~a. Expecting ~a, found ~s") - count (type-name pred?) arg)) - #f) - #t)) - - (if (null? signature) - #t - (and (helper (car signature) (car arguments) count) - (recursion-helper (cdr signature) (cdr arguments) (1+ count))))) - (recursion-helper signature arguments 1)) - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Safe definitions utility - -(define safe-objects - (list)) - -(define-macro (define-safe-public arglist . body) - "Define a variable, export it, and mark it as safe, i.e. usable in -LilyPond safe mode. The syntax is the same as `define*-public'." - (define (get-symbol arg) - (if (pair? arg) - (get-symbol (car arg)) - arg)) - - (let ((safe-symbol (get-symbol arglist))) - `(begin - (define*-public ,arglist - ,@body) - (set! safe-objects (cons (cons ',safe-symbol ,safe-symbol) - safe-objects)) - ,safe-symbol))) (define-safe-public (lilypond-version) (string-join @@ -410,7 +371,8 @@ LilyPond safe mode. The syntax is the same as `define*-public'." "output-lib.scm")) ;; - Files containing definitions used later by other files later in load (define init-scheme-files-used - '("markup-macros.scm")) + '("markup-macros.scm" + "parser-ly-from-scheme.scm")) ;; - Main body of files to be loaded (define init-scheme-files-body '("file-cache.scm" @@ -434,7 +396,6 @@ LilyPond safe mode. The syntax is the same as `define*-public'." "auto-beam.scm" "chord-name.scm" "bezier-tools.scm" - "parser-ly-from-scheme.scm" "ly-syntax-constructors.scm" "define-context-properties.scm" @@ -459,6 +420,7 @@ LilyPond safe mode. The syntax is the same as `define*-public'." "define-grob-interfaces.scm" "define-stencil-commands.scm" "titling.scm" + "text.scm" "paper.scm" "backend-library.scm" @@ -526,6 +488,7 @@ LilyPond safe mode. The syntax is the same as `define*-public'." `((,boolean-or-symbol? . "boolean or symbol") (,color? . "color") (,cheap-list? . "list") + (,fraction? . "fraction, as pair") (,grob-list? . "list of grobs") ;; this is built on cheap-list (,list-or-symbol? . "list or symbol") @@ -533,6 +496,7 @@ LilyPond safe mode. The syntax is the same as `define*-public'." (,markup-command-list? . "markup command list") (,markup-list? . "markup list") (,moment-pair? . "pair of moment objects") + (,number-list? . "number list") (,number-or-grob? . "number or grob") (,number-or-pair? . "number or pair") (,number-or-string? . "number or string") @@ -541,15 +505,18 @@ LilyPond safe mode. The syntax is the same as `define*-public'." (,scheme? . "any type") (,string-or-pair? . "string or pair") (,string-or-symbol? . "string or symbol") + (,void? . "void") )) (define-public lilypond-exported-predicates `((,ly:box? . "box") (,ly:context? . "context") + (,ly:context-mod? . "context modification") (,ly:dimension? . "dimension, in staff space") (,ly:dir? . "direction") (,ly:dispatcher? . "dispatcher") (,ly:duration? . "duration") + (,ly:event? . "event") (,ly:font-metric? . "font metric") (,ly:grob? . "graphical (layout) object") (,ly:grob-array? . "array of grobs") @@ -578,10 +545,13 @@ LilyPond safe mode. The syntax is the same as `define*-public'." (,ly:skyline-pair? . "pair of skylines") (,ly:source-file? . "source file") (,ly:spanner? . "spanner") + (,ly:spring? . "spring") (,ly:stencil? . "stencil") (,ly:stream-event? . "stream event") (,ly:translator? . "translator") (,ly:translator-group? . "translator group") + (,ly:unpure-pure-container? . "unpure/pure container") + (,ly:vsize? . "vsize") )) @@ -848,6 +818,7 @@ PIDs or the number of the process." (if (ly:get-option 'trace-memory-frequency) (mtrace:start-trace (ly:get-option 'trace-memory-frequency))) (lilypond-file handler x) + (ly:check-expected-warnings) (if start-measurements (dump-profile x start-measurements (profile-measurements))) (if (ly:get-option 'trace-memory-frequency)