[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: macro for \once\override
From: |
Aaron Hill |
Subject: |
Re: macro for \once\override |
Date: |
Sat, 29 Aug 2020 05:32:11 -0700 |
User-agent: |
Roundcube Webmail/1.4.2 |
On 2020-08-29 3:19 am, Wols Lists wrote:
On 29/08/20 05:45, Werner LEMBERG wrote:
\once \override FretBoard.size = #'1.0
\once \override FretBoard.fret-diagram-details.barre-type =
#'straight
\once \override FretBoard.fret-diagram-details.dot-color =
#'black
\once \override FretBoard.fret-diagram-details.finger-code =
#'below-string
c'
Unfortunately this might well require re-writing the parser, but it
struck me it might be a nice idea to nick an idea from other object
oriented languages as follows ...
\once \override FretBoard.size = #'1.0
\once \override \using FretBoard.fret-diagram-details {
.barre-type = #'straight
.dot-color = #'black
.finger-code = #'below-string
}
c'
No need to rewrite anything. We can use \with to assist with this
pattern:
%%%%
overrideII =
#(define-music-function
(prop mods)
(key-list? ly:context-mod?)
(define (assign? mod) (eq? 'assign (car mod)))
(define (proc mod)
(let ((subprop (cadr mod))
(value (caddr mod)))
#{ \override #prop . #subprop = #value #}))
#{ #@(map proc (filter assign? (ly:get-context-mods mods))) #})
%%%%
While there is almost certainly a better name than overrideII, it
permits the following:
%%%%
\once \override FretBoard.fret-diagram-details.barre-type = #'none
\once \override FretBoard.fret-diagram-details.number-type = #'arabic
\once \override FretBoard.fret-diagram-details.orientation = #'landscape
\once \override FretBoard.fret-diagram-details.mute-string = #"M"
\once \override FretBoard.fret-diagram-details.label-dir = #LEFT
\once \override FretBoard.fret-diagram-details.dot-color = #'black
%% ...becomes...
\once \overrideII FretBoard.fret-diagram-details
\with {
barre-type = #'none
number-type = #'arabic
orientation = #'landscape
mute-string = #"M"
label-dir = #LEFT
dot-color = #'black
}
%%%%
-- Aaron Hill
- Re: macro for \once\override, (continued)
- Re: macro for \once\override, Andrew Bernard, 2020/08/28
- Re: macro for \once\override, Werner LEMBERG, 2020/08/29
- Re: macro for \once\override, Wols Lists, 2020/08/29
- Re: macro for \once\override, David Kastrup, 2020/08/29
- Re: macro for \once\override, Aaron Hill, 2020/08/29
- Re: macro for \once\override, David Kastrup, 2020/08/29
- Re: macro for \once\override, Aaron Hill, 2020/08/29
- Re: macro for \once\override,
Aaron Hill <=
- Re: macro for \once\override, David Kastrup, 2020/08/29
- Re: macro for \once\override, Aaron Hill, 2020/08/29
- Re: macro for \once\override, David Kastrup, 2020/08/29
- Re: macro for \once\override, Aaron Hill, 2020/08/29
- Re: macro for \once\override, Aaron Hill, 2020/08/29