lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Markup module patch (Issue 2026)


From: Ian Hulin
Subject: Re: Markup module patch (Issue 2026)
Date: Fri, 16 Dec 2011 17:46:39 +0000
User-agent: Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20111124 Thunderbird/8.0

Hi Han-Wen,

On 15/12/11 12:48, Han-Wen Nienhuys wrote:
> On Wed, Dec 14, 2011 at 12:51 AM, Ian Hulin <address@hidden> wrote:
> 
>> In order to get the markup stuff to compile or be interpreted
>> correctly with Guile V2, I had to get the procedures validating the
>> markup commands to look in a single module at the list where they were
>> held. So I chose the base (lily) module.
> 
>> To keep it consistent, I got
>> the define-markup-command and define-markup-list-command macros to
>> push and pop the current Scheme module by doing
>> (let (prevmod (current-module))
>>     (existing declaration)
>>        ...
> 
> Does this mean that markup definitions in user code (ie. in .ly files)
> will be put in the lily module too? How will you prevent definitions
> from leaking between files?
> 
You mean in the case of something like
$ lilypond gibbon.ly vole.ly aardvark.ly
where gibbon.ly has
#(define-markup-command (bananas layout properties markup?) blah ...)
vole.ly and aardvark.ly would still be able code
\markup \bananas ...
and they would pick up the definition from gibbon.ly.

Mao.  You're right.

> Why can't the validation procedure look in multiple places?
> 

Because this means serious fiddling with the maoing markup code.  I
really hope you didn't write it because I agree with David, it's a fetid
pile of Dingo's kidneys to maintain, and I fear it'll take me a
lo-o-o-ong time and much cursing and swearing to change it.

It'll mean trying to find a way of getting compile-markup-expression to
look in a list both in the current module, and then falling back to the
(lily) module (where all the base code markup commands from
define-markup-commands.scm will be) before failing the validation.

> If it needs to be one place, it should probably be the scope of the
> .ly file, with some initialization importing the definitions from the
> lily module.
> 
You mean:
1. do some icky stuff in the lilypond-file procedure to create a new
lilypond scope, then make sure it (use-modules (lily)) before letting
ly:parse-file loose in it?
2. have compile-markup-expression do a double lookup in
(current-module), and if needed then look in (lily)?

Worth a punt,

Cheers,
Ian



reply via email to

[Prev in Thread] Current Thread [Next in Thread]