]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/time-signature-settings.scm
Merge branch 'lilypond/translation' of git+ssh://git.savannah.gnu.org/srv/git/lilypon...
[lilypond.git] / scm / time-signature-settings.scm
index dbca769a1c8e321fb9e9d7b0e39e23707b26b5b7..c5792d9b80e9c9adc3648bf11efd58f26bc9a3e2 100644 (file)
@@ -254,19 +254,34 @@ checking. "
   "Like the C++ code that executes \revert, but without type
 checking. "
 
-  (define (revert-member alist entry new)
-    "Return ALIST, with ENTRY removed.  ALIST is not modified, instead
+  (define (entry-count alist entry-key)
+    "Count the number of entries in alist with a key of
+ENTRY-KEY."
+    (cond
+      ((null? alist) 0)
+      ((equal? (caar alist) entry-key)
+         (+ 1 (entry-count (cdr alist) entry-key)))
+      (else (entry-count (cdr alist) entry-key))))
+
+  (define (revert-member alist entry-key)
+    "Return ALIST, with the first entry having a key of
+ENTRY-KEY removed.  ALIST is not modified, instead
 a fresh copy of the list-head is made."
     (cond
-      ((null? alist) new)
-      ((equal? (car alist) entry) (revert-member (cdr alist) entry new))
-      (else (revert-member (cdr alist) entry (cons (car alist) new)))))
-
-  (ly:context-set-property!
-    context property
-    (revert-member (ly:context-property context property) setting '())))
-
-(define-public (override-time-signature-setting time-signature setting . rest)
+      ((null? alist) '())
+      ((equal? (caar alist) entry-key) (cdr alist))
+      (else (cons (car alist)
+                  (revert-member (cdr alist) entry-key)))))
+
+  ;; body of revert-property-setting
+  (let ((current-value (ly:context-property context property)))
+    (if (> (entry-count current-value setting) 1)
+        (ly:context-set-property!
+          context
+          property
+          (revert-member current-value setting)))))
+
+(define-public (override-time-signature-setting time-signature setting)
   "Override the time signature settings for the context in @var{rest},
 with the new setting alist @var{setting}. "
     (context-spec-music
@@ -276,17 +291,9 @@ with the new setting alist @var{setting}. "
                       'timeSignatureSettings
                       time-signature
                       setting)))
-      (if (and (pair? rest) (symbol? (car rest)))
-          (car rest)
-          'Voice)))
-
-(define-public (score-override-time-signature-setting
-                 time-signature setting)
-  (override-time-signature-setting
-    time-signature setting 'Score))
+      'Timing))
 
-(define-public (revert-time-signature-setting
-                  time-signature . rest)
+(define-public (revert-time-signature-setting time-signature)
   (context-spec-music
     (make-apply-context
       (lambda (c)
@@ -294,6 +301,4 @@ with the new setting alist @var{setting}. "
           c
           'timeSignatureSettings
           time-signature)))
-    (if (and (pair? rest) (symbol? (car rest)))
-        (car rest)
-        'Voice)))
+    'Timing))