Subject: à propos des avertissement

From: Vincent Gay <[email-masked]>
Date: Sun, 29 Jan 2023 12:17:14 +0100

Chez Lily il y a des messages d'erreur (ça bloque) et des messages d'avertissement (c'est pas trop grave)

Dans ces derniers il y en a qui sont localisés (fichier, ligne... voir par exemple post précédent) et d'autre qui ne le sont pas. Par exemple :

Avertissement : extension de reprise sans terminaison

Quand tu as un fichier avec 150 /include et que tu mets un point d'honneur à faire un code propre demmerdes-toi avec ça !

J'ai essayé avec le mode verbeux (-V) sans plus de renseignement.

Ce n'est pas à proprement parlé d'un bug (et surtout pas d'une feature 😉) mais je n'ai pas trouvé où déposer une requête. Ça existe ? Ça tombe pas trop mal, j'aurai de la peine à la rédiger.

Bon dimanche.

--
Vincent Gay
Envoyé depuis mon saxo-phone :)
https://myrealbook.vintherine.org/ - http://photos.vintherine.org/

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 29 Jan 2023 12:49:41 +0100

Bonjour Vincent,

> Ce n'est pas à proprement parlé d'un bug (et surtout pas d'une feature 😉) mais je n'ai pas trouvé où déposer une requête. Ça existe ? Ça tombe pas trop mal, j'aurai de la peine à la rédiger.

LilyPond essaie en général de fournir une localisation d'erreur
si possible. Parfois c'est compliqué, pour des raisons logiques
(comme pour les avertissements « Compression de la page 4 », on
ne voit pas bien où ils devraient aller), ou pour des raisons
techniques (comme dans le cas que tu as rencontré). Parfois, il
manque juste un bout de code pour le faire. Ça ne vaut pas vraiment
la peine d'avoir une page de bug pour chaque avertissement qui
pourrait idéalement avoir une localisation, mais on essaie d'en
ajouter quand on passe dans un endroit du code où on remarque
que ça manque.

En l'occurrence, je soupçonne que tu as quelque chose du genre de

\version "2.24.0"

<<
  {
    \set Score.repeatCommands = #'((volta "1"))
    c'1
    \set Score.repeatCommands = #'((volta #f))
    c'
  }
  {
    \set Score.repeatCommands = #'((volta "1"))
    c'1
    c'
    \set Score.repeatCommands = #'((volta #f))
  }

où l'une des commandes \set Score.repeatCommands = ...
est mal placée. Comme le crochet de volta est déjà
terminé à la fin de la mesure 1, la commande qui termine
un crochet à la fin de la mesure 2 ne trouve pas le
crochet en question.

Cordialement,
Jean

---

From: Vincent Gay <[email-masked]>
Date: Sun, 29 Jan 2023 13:01:23 +0100

Oh oui, c'est bien comme ça que je cherche :

> grep "volta #f" *.ly

Mais il y en a qui ont justifiés et ne produisent pas d'avertissement.

Je ne comprends pas bien quelle genre de raison technique empêche de 
localiser l'avertissement mais si tu me le dis c'est certainement exact. 
Mais ça me donne juste une occasion de râler (moi qui en manquais....).

-- 
Vincent Gay
Envoyé depuis mon saxo-phone :)
https://myrealbook.vintherine.org/  -http://photos.vintherine.org/

---

From: Jean Abou Samra <[email-masked]>
Date: Sun, 29 Jan 2023 13:09:01 +0100

On 29/01/2023 13:01, Vincent Gay wrote:
> Je ne comprends pas bien quelle genre de raison technique empêche de localiser l'avertissement mais si tu me le dis c'est certainement exact. Mais ça me donne juste une occasion de râler (moi qui en manquais....).

Le souci, c'est qu'une propriété de contexte n'est pas forcément modifiée
par un \set. Elle peut aussi l'être par un ly:context-set-property! en
Scheme ou par l'équivalent C++, et c'est en réalité ce qui se produit le
plus fréquemment (exemple : \time modifie automatiquement timeSignatureFraction,
baseMoment, beatStructure et consorts). Pour avoir une localisation
dans ce genre de cas, il faudrait que chaque contexte garde en mémoire
d'où vient chaque modification de ses propriétés. Rien d'insurmontable,
mais c'est quand même un peu de boulot.

Cordialement,
Jean