lilypond-devel
[Top][All Lists]
Advanced

[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



reply via email to

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