(define-session ,name ,value)
(export ,name)))
+(define (session-terminate)
+ (if (ly:undead? lilypond-declarations)
+ (for-each
+ (lambda (p) (variable-set! (cadr p) (cddr p)))
+ (ly:get-undead lilypond-declarations))))
+
(define-public (session-initialize thunk)
"Initialize this session. The first session in a LilyPond run is
initialized by calling @var{thunk}, then recording the values of all
"define-note-names.scm"
"c++.scm"
"chord-entry.scm"
+ "skyline.scm"
"stencil.scm"
"define-markup-commands.scm"
"markup.scm"
"define-grobs.scm"
"define-grob-interfaces.scm"
"define-stencil-commands.scm"
+ "scheme-engravers.scm"
"titling.scm"
"text.scm"
(,fraction? . "fraction, as pair")
(,grob-list? . "list of grobs")
(,index? . "non-negative integer")
- ;; this is built on cheap-list
- (,list-or-symbol? . "list or symbol")
(,markup? . "markup")
(,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-markup? . "number or markup")
(,number-or-pair? . "number or pair")
(,number-or-string? . "number or string")
(,number-pair? . "pair of numbers")
(,string-or-pair? . "string or pair")
(,string-or-music? . "string or music")
(,string-or-symbol? . "string or symbol")
+ (,symbol-list? . "symbol list")
+ (,symbol-list-or-music? . "symbol list or music")
+ (,symbol-list-or-symbol? . "symbol list or symbol")
(,void? . "void")
))
(mtrace:start-trace (ly:get-option 'trace-memory-frequency)))
(lilypond-file handler x)
(ly:check-expected-warnings)
+ (session-terminate)
(if start-measurements
(dump-profile x start-measurements (profile-measurements)))
(if (ly:get-option 'trace-memory-frequency)