Subject: Problème de scheme(?) entre lilypond 2.18.2 & 2.20.0

From: filosophem <[email-masked]>
Date: Wed, 1 Jul 2020 02:24:50 -0700 (MST)

Bonjour à tous,

J'avais récupérer une jolie fonction (que certains doivent déjà connaitre) 
qui permet de faire un include d'un fichier si ce dernier existe (cf ex
ci-dessous)

/\version "2.18.2"

includeIfExists =
#(define-music-function (parser location file)(string?)
   (if (file-exists? file)
       (ly:parser-include-string parser (format "\\include \"~A\"\n" file)))
       (make-music 'SequentialMusic 'void #t))

\includeIfExists "/home/myname/lilypond/myfile.ly"/

En voulant tester, la dernière mouture de mon linux préféré, j'ai installé
lilypond 2.20.0 et là "c'est le drame" :

/Starting lilypond 2.20.0 [ma_partition.ly]...
Processing `/home/seb/Documents/Drum/Lilypond/ma_partition.ly'
Parsing.../home/seb/Documents/Drum/Lilypond/ma_partition.ly:6:8: In
procedure ly:parser-include-string in expression (ly:parser-include-string
parser (format "\\include \"~A\"
" filename)):
/home/seb/Documents/Drum/Lilypond/Stairway to Heaven/Stairway To
Heaven.ly:6:8: Wrong number of arguments to #<primitive-procedure
ly:parser-include-string>
Exited with return code 1./

Comme le scheme n'est pas ma tasse de thé, je préfère poser la question à
des gens compétants.

Merci d'avance pour vos suggestions.

PS: j'ai essayé de changer le numéro de version sans effet. De même la
conversion via /convert-ly -e ma_partition.ly/ n'a rien changé non plus

-----

"/home sweet /home"

Filosophem
--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

---

From: Valentin Villenave <[email-masked]>
Date: Wed, 1 Jul 2020 11:58:45 +0200

On 7/1/20, filosophem <[email-masked]> wrote:
> des gens compétents.

Hello,
il suffit de supprimer tout les mots "parser" et "location" (y compris
après "parser-include-string"). Et aussi, la dernière ligne peut être
raccourcie en (make-music 'Music) plutôt que "'SequentialMusic 'void
#t".

V.

---

From: filosophem <[email-masked]>
Date: Wed, 1 Jul 2020 03:03:48 -0700 (MST)

Merci vvillenave

çà marche impec. Voici le code avec vos remarques:

/includeIfExists =
#(define-music-function (file)(string?)
   (if (file-exists? file)
       (ly:parser-include-string (format "\\include \"~A\"\n" file)))
   (make-music 'Music))/

Bonne journée à tous

-----

"/home sweet /home"

Filosophem