[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: LaissezVibrerTie and LaissezVibrerTieColumn
From: |
David Kastrup |
Subject: |
Re: LaissezVibrerTie and LaissezVibrerTieColumn |
Date: |
Mon, 23 Oct 2017 15:11:35 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) |
Thomas Morley <address@hidden> writes:
> Hi all,
>
> here:
> https://sourceforge.net/p/testlilyissues/issues/5220/#f5aa/ed76
> I wrote that \parenthesize\laissezVibrer does not work because
> LilyPond tries to parenthesize LaissezVibrerTieColumn as well.
>
> And indeed, with the code below _two_ grobs are affected:
> LaissezVibrerTieColumn and LaissezVibrerTie
>
> {
> c'1
> -\tweak after-line-breaking #(lambda (grob) (write grob))
> -\laissezVibrer
> }
>
> This looks fishy.
> While the proposed check for interval-sane? at the tracker may be a
> good thing at its own, I found changing laissez-vibrer-engraver.cc
>
> - if (!lv_column_)
> - lv_column_ = make_item ("LaissezVibrerTieColumn", cause);
>
> + if (!lv_column_)
> + {
> + lv_column_ = make_item ("LaissezVibrerTieColumn", SCM_EOL);
> + }
>
> seems to cure it.
> Though, I'm hardly knowing what I'm doing here...
>
> Is this appropiate?
"cause" here is the actual tie event triggering the column. I think
that it should rather be the first tie, making the
LaissezVibrerTieColumn a grob with ultimately identifiable cause but not
a directly caused grob. Then it should be ignored by the
Parenthesis_engraver. This would involve changing
SCM cause = tie_ev->self_scm ();
if (!lv_column_)
lv_column_ = make_item ("LaissezVibrerTieColumn", cause);
Grob *lv_tie = make_item ("LaissezVibrerTie", cause);
into
SCM cause = tie_ev->self_scm ();
Grob *lv_tie = make_item ("LaissezVibrerTie", cause);
if (!lv_column_)
lv_column_ = make_item ("LaissezVibrerTieColumn", lv_tie->self_scm ());
I don't think that it would be a problem to have the tie created before
its column.
--
David Kastrup