From 7dfbfb432aa9163784fa88110c1ae544dec800ef Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Tue, 9 Oct 2012 14:56:05 +0200 Subject: [PATCH] Let \overrideProperty accept nested properties --- ly/music-functions-init.ly | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/ly/music-functions-init.ly b/ly/music-functions-init.ly index 24b3c6dda6..eb9f1cf7ec 100644 --- a/ly/music-functions-init.ly +++ b/ly/music-functions-init.ly @@ -712,10 +712,10 @@ of @var{base-moment}, @var{beat-structure}, and @var{beam-exceptions}.") (override-time-signature-setting time-signature setting))) overrideProperty = -#(define-music-function (parser location name property value) - (symbol-list? symbol? scheme?) +#(define-music-function (parser location name property-path value) + (symbol-list? symbol-list-or-symbol? scheme?) - (_i "Set @var{property} to @var{value} in all grobs named @var{name}. + (_i "Set @var{property-path} to @var{value} in all grobs named @var{name}. The @var{name} argument is a symbol list of the form @code{Context.GrobName} or @code{GrobName}.") (if (<= 1 (length name) 2) @@ -727,11 +727,20 @@ or @code{GrobName}.") (if (equal? (cdr (assoc 'name (ly:grob-property grob 'meta))) (last name)) - (set! (ly:grob-property grob property) value)))) + (if (symbol? property-path) + (ly:grob-set-property! grob property-path value) + (case (length property-path) + ((0) *unspecified*) + ((1) + (ly:grob-set-property! + grob (car property-path) value)) + (else + (ly:grob-set-nested-property! + grob property-path value))))))) (begin (ly:parser-error parser (_ "bad grob name") location) (make-music 'Music)))) - + -- 2.39.2