From d52cc1ba72627a3da014d83979e1e0d5167219c4 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Wed, 3 Apr 2013 10:58:24 +0200 Subject: [PATCH] Issue 3294: Define call-after-session for cleanup called after every file --- scm/lily.scm | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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) -- 2.39.5