From: David Kastrup Date: Wed, 3 Apr 2013 08:58:24 +0000 (+0200) Subject: Issue 3294: Define call-after-session for cleanup called after every file X-Git-Tag: release/2.17.16-1~10 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=d52cc1ba72627a3da014d83979e1e0d5167219c4;p=lilypond.git Issue 3294: Define call-after-session for cleanup called after every file --- diff --git a/scm/lily.scm b/scm/lily.scm index cd7b92964b..3d179dd2cb 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -44,6 +44,12 @@ (car (string-tokenize (utsname:sysname (uname))))))) (define lilypond-declarations '()) +(define after-session-hook (make-hook)) + +(define-public (call-after-session thunk) + (if (ly:undead? lilypond-declarations) + (ly:error (_ "call-after-session used after session start"))) + (add-hook! after-session-hook thunk #t)) (defmacro-public define-session (name value) "This defines a variable @var{name} with the starting value @@ -74,9 +80,11 @@ session has started." (define (session-terminate) (if (ly:undead? lilypond-declarations) - (for-each - (lambda (p) (variable-set! (cadr p) (cddr p))) - (ly:get-undead lilypond-declarations)))) + (begin + (for-each + (lambda (p) (variable-set! (cadr p) (cddr p))) + (ly:get-undead lilypond-declarations)) + (run-hook after-session-hook)))) (define lilypond-interfaces #f)