lilypond-devel
[Top][All Lists]
Advanced

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

Syntax-change and tmp-files


From: Jean Abou Samra
Subject: Syntax-change and tmp-files
Date: Sat, 3 Oct 2020 18:53:39 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

Hi,

the following code works up to 2.21.4:

\version "2.18.2"
pts-list = #'(-0.5 0 0.5 0 0 1)
#(define test-stencil
   (ly:make-stencil
     `(polygon ',pts-list 0.1 #t)
     '(-0.5 . 0.5)
     '(0 . 1)))
\markup \stencil #test-stencil

With recent master (2.21.7) I get:

Unsupported SCM value for format: (-0.5 0 0.5 0 0 1)
Converting to `atest-105.pdf'...
warning: `(gs -q -dNODISPLAY -dNOSAFER -dNOPAUSE -dBATCH
-dAutoRotatePages=/None -dPrinted=false /tmp/lilypond-tmp-287200)'
failed (256)
fatal error: failed files: "atest-105.ly"

And two tmp-files are generated (ps and pdf) and _not_ deleted.

With 2.21.7 the correct syntax would be:
pts-list = #'(-0.5 0 0.5 0 0 1)
#(define test-stencil
   (ly:make-stencil
     `(polygon ,pts-list 0.1 #t)
     '(-0.5 . 0.5)
     '(0 . 1)))
\markup \stencil #test-stencil

Note: ',pts-list vs ,pts-list

Is it possible to write a convert-rule? (I needed two hours to track it down)
Furthermore, those tmp-files are going on my nerves. I collected 20 of
them before I found the above mentioned culprit. Any chance to delete
them, if compilation fails?

Cheers,
   Harm
Afaict, the syntax-change happened with

commit 06ba7f0823a14da773391ccf3c10244a54e812d4
Author: Han-Wen Nienhuys <hanwenn@gmail.com>
Date:   Sun Aug 2 21:47:25 2020 +0200

     Dispatch stencil routines using explicit tables
[...]
     * Stencil expressions are no longer passed through the eval
       function. This means that all inner (quasi)quoting should be
       removed.
[...]

To be clear, I support this change, from my point of view it's now more logical.
Alas, debugging of older code is difficult without a better error
message or a convert-rule...
We can surely make interesting things happen in convert-ly. The
question is, what is the exact specification of the change it
should operate? Off the top of my head, I don't see an easy implementation
for converting all kinds of quotes without tools like regex as mentioned
in https://gitlab.com/lilypond/lilypond/-/merge_requests/369. Maybe
just add a NOT_SMART warning whenever ly:make-stencil is used?

Best,
Jean



reply via email to

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