]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 3294: Define call-after-session for cleanup called after every file
authorDavid Kastrup <dak@gnu.org>
Wed, 3 Apr 2013 08:58:24 +0000 (10:58 +0200)
committerDavid Kastrup <dak@gnu.org>
Tue, 9 Apr 2013 07:37:55 +0000 (09:37 +0200)
scm/lily.scm

index cd7b92964bdcfa21ea590ca5349c092fb94c87ca..3d179dd2cb2e6d6e66a3840706582586f463cda4 100644 (file)
     (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)