[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: catching layout-content
From: |
David Kastrup |
Subject: |
Re: catching layout-content |
Date: |
Fri, 25 May 2018 12:26:57 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) |
Thomas Morley <address@hidden> writes:
> Hi all,
> how can I see from inside a procedure that there is indeed an
> \override in \layout ?
> Below returns a long list, but nothing like the \override
>
> \layout { \override NoteHead.color = #red }
>
> #(pretty-print
> (sort
> (ly:module->alist (ly:output-def-scope $defaultlayout))
> (lambda (p q)
> (symbol<? (car p) (car q)))))
>
> I'm aware using
> \layout { \context { \Voice \override NoteHead.color = #red } }
> will return a different result, indicating the layout is indeed changed.
>
> Ideally I would love to catch both cases.
Well, you have to look closer: such an override is turned into an
override for every context definition matching the given context alias
(in this case the default "Bottom", so every context def without a
default child). Try
\layout { \override NoteHead.color = #red }
#(pretty-print
(map
(lambda (x)
(if (ly:context-def? (cdr x))
(cons (car x) (ly:context-def-lookup (cdr x) 'property-ops))
x))
(sort
(ly:module->alist (ly:output-def-scope $defaultlayout))
(lambda (p q)
(symbol<? (car p) (car q))))))
By the way: the DOC string of ly:context-def-lookup is complete and
utter crap and has nothing whatsoever to do with what the function
actually does. Must have been some copy&paste job.
--
David Kastrup