Re: Nested context properties -- an implementation sketch

2011-08-14 Thread David Kastrup
"Trevor Daniels"  writes:

> David Kastrup wrote Sunday, August 14, 2011 8:11 PM
>
>
>> "Trevor Daniels"  writes:
>>
>>> I think we need to clarify a few things first.
>>>
>>> You wrote
>>>
 I have no clear view about \set yet.  It would seem to me that
 \unset
 should be equivalent to \revert, and \set should be equivalent to
 \revert+\override.
>>>
>>> As we are contemplating a major change anyway, I'd
>>> prefer an equivalence in operation of \override,
>>> \once \override and \revert with \set, \once \set
>>> and \unset.  Or is this infeasible?
>>
>> A sequence of \set \set \set would lead to stack buildup.  That
>> seems
>> contrary to the spirit of the command name.
>>
>> On the other hand, a sequence of \set \unset will, under my proposal
>> which is pretty much the current semantics, cancel a previous
>> override,
>> while a sequence \override \set \set \set \revert will be neutral,
>> all-in-all.
>
> Now I am confused.  Are you saying that \set will
> operate on grob properties rather than or in addition
> to operating on context properties?  That would be
> a major change!

I am talking about context properties exclusively.  grob properties are
basically just copies of context properties at a certain point of time
(the initial, immutable grob properties at least, and the mutable being
per-grob only anyway and not subject to context scoping), and thus are
not concerned with all the scoping mess as far as I can tell, nor with
overrides and reverts and once.  They just take a snapshot of the
context property when created, and work from there.

As far as I understand.  Which may not be all that far since I get my
knowledge from hearsay and from analyzing the code bottom-up (and not
having reached the top yet).

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Fw: cartouche collides with heading

2011-08-14 Thread Werner LEMBERG

A fix from Karl.  Please test and report back.


 Werner
--- Begin Message ---
the first cartouche collides with the heading.

Does this patch (not yet committed) solve the problem in your real file?
(It fixes the test file, thanks much for the reduction.)

k

--- texinfo.tex.~1.347.~2011-07-08 08:58:52.0 -0700
+++ texinfo.tex 2011-08-14 17:23:58.0 -0700
@@ -6275,2 +6274,8 @@ end
   \let\nonarrowing = t%
+  %
+  % If this cartouche directly follows a sectioning command, we need the
+  % \parskip glue (backspaced over by default) or the cartouche can
+  % collide with the section heading.
+  \ifnum\lastpenalty>1 \vskip\parskip \fi
+  %
   \vbox\bgroup
--- End Message ---
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: T1349 - Fix load order for running with Guile V2 (issue 4849054)

2011-08-14 Thread ianhulin44

Reinhold's recent commit for log-levels will require a git re-base and
probably a merge for scm/lily.scm.  Will do this, re-test and upload new
patch-set.
Ian


http://codereview.appspot.com/4849054/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Fixes heights and pure heights of stems. (issue 4898044)

2011-08-14 Thread n . puttock

Hi Mike,

This looks like a work in progress.

What's going on with the begin/end position methods?  You've removed the
grob properties, but kept the exported callbacks plus an entry in
pure-conversions-alist which does nothing.

Cheers,
Neil


http://codereview.appspot.com/4898044/diff/1/scm/flag-styles.scm
File scm/flag-styles.scm (right):

http://codereview.appspot.com/4898044/diff/1/scm/flag-styles.scm#newcode188
scm/flag-styles.scm:188: ((if (eqv? d DOWN)
index-cell

http://codereview.appspot.com/4898044/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Add scripts/auxiliar/guileindent.scm (issue 4896043)

2011-08-14 Thread n . puttock

Hi Carl,

This latest patch looks great.

I'm not sold on the change to `else', but that's mainly due to being
used to how Emacs does it.

I'll do a bit more testing on other files and report back.

Cheers,
Neil

http://codereview.appspot.com/4896043/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Make accidental styles available as context mods. (issue 4819064)

2011-08-14 Thread n . puttock


http://codereview.appspot.com/4819064/diff/1/scm/music-functions.scm
File scm/music-functions.scm (right):

http://codereview.appspot.com/4819064/diff/1/scm/music-functions.scm#newcode1267
scm/music-functions.scm:1267: Staff ,(make-accidental-rule 'same-octave
0)
As Carl's pointed out here, http://codereview.appspot.com/4896043/, the
current indentation cannot be maintained.  I agree that the data
structure should be revised instead.

http://codereview.appspot.com/4819064/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Nested context properties -- an implementation sketch

2011-08-14 Thread Trevor Daniels


David Kastrup wrote Sunday, August 14, 2011 8:11 PM



"Trevor Daniels"  writes:


I think we need to clarify a few things first.

You wrote


I have no clear view about \set yet.  It would seem to me that
\unset
should be equivalent to \revert, and \set should be equivalent 
to

\revert+\override.


As we are contemplating a major change anyway, I'd
prefer an equivalence in operation of \override,
\once \override and \revert with \set, \once \set
and \unset.  Or is this infeasible?


A sequence of \set \set \set would lead to stack buildup.  That 
seems

contrary to the spirit of the command name.

On the other hand, a sequence of \set \unset will, under my 
proposal
which is pretty much the current semantics, cancel a previous 
override,

while a sequence \override \set \set \set \revert will be neutral,
all-in-all.


Now I am confused.  Are you saying that \set will
operate on grob properties rather than or in addition
to operating on context properties?  That would be
a major change!

Trevor



-
No virus found in this message.
Checked by AVG - www.avg.com
Version: 10.0.1392 / Virus Database: 1520/3833 - Release Date: 08/14/11


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Add scripts/auxiliar/guileindent.scm (issue 4896043)

2011-08-14 Thread Carl . D . Sorensen

New comments, and the results of fixing some non-indent spacing issues
in the source file.



http://codereview.appspot.com/4896043/diff/1/scm/music-functions.scm
File scm/music-functions.scm (right):

http://codereview.appspot.com/4896043/diff/1/scm/music-functions.scm#newcode752
scm/music-functions.scm:752: (set! new-settings (delete x
new-settings)))
On 2011/08/14 03:15:34, Carl wrote:

This is too much indentation.  I'll need to figure out why. It worked

well at

line 157.


I think it's the missing space between lambda and (x).  When I added it,
the indentation worked properly.

http://codereview.appspot.com/4896043/diff/1/scm/music-functions.scm#newcode973
scm/music-functions.scm:973: )))
On 2011/08/14 07:48:48, Trevor Daniels wrote:

Is it out of the question to move orphaned brackets to the previous

line?

I think we don't want to do that in general.  The only time we want to
have orphaned brackets (parentheses in the US) is if there is a list
that may be added to.  In that case, the orphaned brackets should be all
the brackets that are not part of a list entry.

In this case, I think the first bracket on this line should be attached
to the end of the line before (to close off the labmda form).  Then the
final orphaned brackets would line up properly with the list of lambda
forms.

http://codereview.appspot.com/4896043/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Fix for Issue 620. (issue 4814041)

2011-08-14 Thread n . puttock


http://codereview.appspot.com/4814041/diff/24001/lily/axis-group-interface.cc
File lily/axis-group-interface.cc (right):

http://codereview.appspot.com/4814041/diff/24001/lily/axis-group-interface.cc#newcode82
lily/axis-group-interface.cc:82:
Axis_group_interface::relative_maybe_bound_group_extent (vector
const &elts,
vector

http://codereview.appspot.com/4814041/diff/24001/lily/axis-group-interface.cc#newcode109
lily/axis-group-interface.cc:109: vector new_elts;
vector

http://codereview.appspot.com/4814041/diff/24001/lily/axis-group-interface.cc#newcode118
lily/axis-group-interface.cc:118: if (new_elts.size () == 0)
!new_elts.size ()

http://codereview.appspot.com/4814041/diff/24001/lily/axis-group-interface.cc#newcode846
lily/axis-group-interface.cc:846: "bound-alignment-interfaces "
tab

http://codereview.appspot.com/4814041/diff/24001/lily/axis-group-interface.cc#newcode847
lily/axis-group-interface.cc:847: "default-staff-staff-spacing "
tab

http://codereview.appspot.com/4814041/diff/24001/lily/hairpin.cc
File lily/hairpin.cc (right):

http://codereview.appspot.com/4814041/diff/24001/lily/hairpin.cc#newcode144
lily/hairpin.cc:144: Interval e = (Axis_group_interface::has_interface
(b)
tab

http://codereview.appspot.com/4814041/diff/24001/lily/include/axis-group-interface.hh
File lily/include/axis-group-interface.hh (right):

http://codereview.appspot.com/4814041/diff/24001/lily/include/axis-group-interface.hh#newcode50
lily/include/axis-group-interface.hh:50: static Interval
relative_maybe_bound_group_extent (vector const &list,
vector

http://codereview.appspot.com/4814041/diff/24001/lily/include/axis-group-interface.hh#newcode51
lily/include/axis-group-interface.hh:51: Grob *common, Axis, bool);
indent

http://codereview.appspot.com/4814041/diff/24001/lily/line-spanner.cc
File lily/line-spanner.cc (right):

http://codereview.appspot.com/4814041/diff/24001/lily/line-spanner.cc#newcode112
lily/line-spanner.cc:112: Interval extent = (Paper_column::has_interface
(bound_grob)
if you change this to Axis_group_interface::has_interface () you should
be able to remove the special case in separation-item.cc for arpeggios
(and restore the old code which was replaced for issue 591 in
rhythmic-column-engraver.cc)

http://codereview.appspot.com/4814041/diff/24001/lily/line-spanner.cc#newcode118
lily/line-spanner.cc:118: details);
tabs

http://codereview.appspot.com/4814041/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Fix for Issue 620. (issue 4814041)

2011-08-14 Thread n . puttock

On 2011/08/05 00:21:45, MikeSol wrote:


Neil - whenever you get the chance, I'd like to hear more of what you

have to

say about it.  If you think that custom engravers would be a better

idea here

(or even non-custom engravers), I'd like to fully discuss it on the

list.

I think an engraver approach would be too complicated for this.

Ideally, I'd like a solution which doesn't require a new property, but
that's probably not feasible.

Cheers,
Neil

http://codereview.appspot.com/4814041/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Fixes heights and pure heights of stems. (issue 4898044)

2011-08-14 Thread tdanielsmusic

Wow, this is a major rewrite!

I can't comment on the logic, and at present I can't test it, so I've
just made a few nit-picking comments on style.

Trevor


http://codereview.appspot.com/4898044/diff/1/input/regression/stem-length-estimation.ly
File input/regression/stem-length-estimation.ly (right):

http://codereview.appspot.com/4898044/diff/1/input/regression/stem-length-estimation.ly#newcode4
input/regression/stem-length-estimation.ly:4: texidoc = "Stems with
overridden 'stem-end-position should
'Y-extent

http://codereview.appspot.com/4898044/diff/1/lily/include/stem.hh
File lily/include/stem.hh (right):

http://codereview.appspot.com/4898044/diff/1/lily/include/stem.hh#newcode55
lily/include/stem.hh:55: static Grob* get_reference_head (Grob *);
Grob *get_reference_head

http://codereview.appspot.com/4898044/diff/1/lily/stem-tremolo.cc
File lily/stem-tremolo.cc (right):

http://codereview.appspot.com/4898044/diff/1/lily/stem-tremolo.cc#newcode219
lily/stem-tremolo.cc:219: Real ss = Staff_symbol_referencer::staff_space
(me);
delete

http://codereview.appspot.com/4898044/diff/1/lily/stem.cc
File lily/stem.cc (right):

http://codereview.appspot.com/4898044/diff/1/lily/stem.cc#newcode34
lily/stem.cc:34: The only exception to this is ::pure_height, whcih
calls internal_pure_height
which

http://codereview.appspot.com/4898044/diff/1/lily/stem.cc#newcode141
lily/stem.cc:141: if (stemlet && !lh && beam)
All three conditions include !lh; better test !lh outside

http://codereview.appspot.com/4898044/diff/1/lily/stem.cc#newcode149
lily/stem.cc:149: + beam_translation * max (0, (beam_count - 1))
indent

http://codereview.appspot.com/4898044/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Fixes heights and pure heights of stems. (issue 4898044)

2011-08-14 Thread bordage . bertrand

Same remark for fingerings.
See input/regression/fingering-cross-staff.ly

Consecutive ties look better in input/regression/tie-single.ly

http://codereview.appspot.com/4898044/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Fixes heights and pure heights of stems. (issue 4898044)

2011-08-14 Thread bordage . bertrand

Benchmark done on a book with many beams:
without the patch: 51.8s and 80 pages
with the patch: 52.2s and 83 pages

I also noticed some ugliness's between beams and figured bass. The
figures stay exactly where they were, but the stems are longer and
collide a bit with them.

Bertrand

http://codereview.appspot.com/4898044/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Nested context properties -- an implementation sketch

2011-08-14 Thread David Kastrup
"Trevor Daniels"  writes:

> David
>
> I think we need to clarify a few things first.
>
> You wrote
>
>> The semantics can be summarized as follows:
>>
>> a) a revert will only cancel the last _matching_ override, and the
>> match
>>   includes the complete specified property path, _and_ the
>> prospective
>>   use of \once.  \revert will not cancel \once\override and vice
>> versa.
>> b) At the end of a timestep, all \once\override are reverted.  All
>>   non-\once overrides remain in effect and on the stack as if none
>> of
>>   the \once\override had ever happened.
>
> Will the order of \override and \once \overide within
> the same timestep for the same property matter, or
> does the \once \override always take precedence within
> its timestep?

The order matters with regard to which override determines the active
state of a property (always the last override).  It does not matter for
matching reverts to overrides.

> I'm not clear about stacking.  Will \override be equivalent
> to push and \revert to pop, with the top value left on
> the stack being effective?  Or is there no stack?

There is a stack, and the last active override determines the value.  If
an override is just for a subproperty, it determines the value just for
that subproperty (and its respective subsubproperties).

The exact matching is done for matching reverts (which may for that
reason happen below the stack top) to overrides, not for reading out
properties.

>> I have no clear view about \set yet.  It would seem to me that
>> \unset
>> should be equivalent to \revert, and \set should be equivalent to
>> \revert+\override.
>
> As we are contemplating a major change anyway, I'd
> prefer an equivalence in operation of \override,
> \once \override and \revert with \set, \once \set
> and \unset.  Or is this infeasible?

A sequence of \set \set \set would lead to stack buildup.  That seems
contrary to the spirit of the command name.

On the other hand, a sequence of \set \unset will, under my proposal
which is pretty much the current semantics, cancel a previous override,
while a sequence \override \set \set \set \revert will be neutral,
all-in-all.

I don't particularly like all the semantics, but they are reasonably
comprehensible and useful.

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Nested context properties -- an implementation sketch

2011-08-14 Thread Trevor Daniels


David

I think we need to clarify a few things first.

You wrote


The semantics can be summarized as follows:

a) a revert will only cancel the last _matching_ override, and the 
match
  includes the complete specified property path, _and_ the 
prospective
  use of \once.  \revert will not cancel \once\override and vice 
versa.

b) At the end of a timestep, all \once\override are reverted.  All
  non-\once overrides remain in effect and on the stack as if none 
of

  the \once\override had ever happened.


Will the order of \override and \once \overide within
the same timestep for the same property matter, or
does the \once \override always take precedence within
its timestep?

I'm not clear about stacking.  Will \override be equivalent
to push and \revert to pop, with the top value left on
the stack being effective?  Or is there no stack?

I have no clear view about \set yet.  It would seem to me that 
\unset

should be equivalent to \revert, and \set should be equivalent to
\revert+\override.


As we are contemplating a major change anyway, I'd
prefer an equivalence in operation of \override,
\once \override and \revert with \set, \once \set
and \unset.  Or is this infeasible?

Trevor



-
No virus found in this message.
Checked by AVG - www.avg.com
Version: 10.0.1392 / Virus Database: 1520/3833 - Release Date: 08/14/11


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Nested context properties -- an implementation sketch

2011-08-14 Thread David Kastrup
Graham Percival  writes:

> On Sun, Aug 14, 2011 at 05:31:11PM +0200, David Kastrup wrote:
>> Werner LEMBERG  writes:
>> 
>> > Unfortunately, I have nothing useful to say.
>> 
>> Well, there is the code (obviously bound to be streamlined before
>> implementation) and there are the proposed semantics.  At least for the
>> latter, I would want to get some sort of feedback.
>
> I agree.  :(
>
>> The semantics can be summarized as follows:
>
> Those look fine to me.

There are likely two contentious changes.  The first is related to
nested properties: namely that the pairing of override/revert of a
property x should be independent from override/revert of a nested
property x.y.  However, if overrides and reverts of x and x.y are not
acting as if they were issued independently, and if overrides and
reverts of x and x.z are not acting as if issued independently, then it
gets quite hard to let overrides and reverts of x.y and x.z act as if
they were issued independently.  And that would make working with nested
properties less straightforward in my opinion.

The second is that \once\override will not mix with \override\revert.
Currently \once\override ... \override will have the second \override
active just for the current timestep, and revert to the previous value
afterwards.  \override ... \once \override ... \revert \revert will at
first revert both overrides, but reinstate the state after the first
override at the end of the timestep.  If I understand the code
correctly.

I prefer to have behavior corresponding to simple well-defined rules
rather than implementation artifacts.  Even if it means that the
implementation is harder to write.

>> Once I rewrite the property code in C, getting negative feedback about
>> the semantics afterwards will be a major pain.  So I made a toy
>> implementation (it is already suffering from too much premature
>> optimization for a toy, but is still more or less readable) in Scheme.
>
> If you really want to poke the hornet's nest, and if the scheme
> implementation can be used for any arbitrary lilypond file (i.e.
> just by adding an \include "new-overrides.ly" to the top), then we
> could ask on the lilypond-user mailing list.

Since a number of other Context internals in addition to the grob
property list manipulators themselves are written in C++, such a
replacement is unfortunately not feasible to do without recompilation as
far as I can see.

> Since we'll be having a release candidate as soon as Mike fixes
> his python 2.4 problem in output-distance.py, I'd ask you to wait
> until 2.16 is out before pushing this change.  That's the only
> real feedback I can give, sorry.

I'll not likely be that fast, anyway.  On the other hand, once the stuff
works for me, it seems reasonable to get it out for massive testing.  So
it seems a bit awkward that we don't have a release branch separate from
master.

Since the change of semantics would not be limited to nested properties,
it does not make sense to rush this in under the pretense of it being a
mere bug fix, however.  It is more like fixing a design flaw.

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Fixes heights and pure heights of stems. (issue 4898044)

2011-08-14 Thread mtsolo

Reviewers: ,

Message:
Hey all,

This patch fixes a bug in LilyPond that has nagged me for some time:
incorrect heights and pure heights for stems.

THE GOOD:

With this patch, heights for stems are correct (they weren't before) and
pure heights are better approximations.  There is one new regtest that
shows it in action, and the code works favorably in several other
regtests.  To wit:

beam-collision-beamcount.ly : leads to the lesser of two evils in a beam
collision
spacing-correction-accidentals.ly: actually works now (before the
spacing was off)
tablature-tremolo.ly: the heights between systems corresponds to the
actual system skyline (lengths of stems in this context used to be set
to zero)

Also, the Stem grob's property list is cleaned up.  It looses three
confusing properties: length, stem-begin-position, and
stem-end-position.  It also leads to cleaner overrides: if the user
wants to do some work with stem ends but does not want to trigger beam
calculations, she can work with the pure callback.  Idem for stem
beginnings.

To see this patch do its thing, add:

\override Stem #'stencil =
#(lambda (grob)
  (let ((y-ext (ly:stem::pure-height grob 0 1000))
 (stem (ly:stem::print grob)))
  (if (null? stem) (ly:make-stencil '() '(0 . 0) '(0 . 0))
(ly:stencil-add stem
(stencil-with-color (ly:stencil-translate-axis
(ly:stencil-translate-axis (make-line-stencil 0.2 0 (car y-ext) 0 (cdr
y-ext)) 0 Y) -0.3 X) red)

or

\override Stem #'stencil =
#(lambda (grob)
  (let ((y-ext (ly:stem::height grob))
 (stem (ly:stem::print grob)))
  (if (null? stem) (ly:make-stencil '() '(0 . 0) '(0 . 0))
(ly:stencil-add stem
(stencil-with-color (ly:stencil-translate-axis
(ly:stencil-translate-axis (make-line-stencil 0.2 0 (car y-ext) 0 (cdr
y-ext)) 0 Y) -0.3 X) red)

depending on if you want to see the height or pure height.  You'll see
that the results of this patch compared to current master are much
better.

THE BAD:

The pure height calculation for beamed stems is more computationally
intensive, which increases compile time for pieces with lots of beams,
especially if those beams hold lots of stems.  A separate patch to cache
pure heights would speed this (and many other things) up a great deal.
At a certain point, beam-slope-stemlet.ly gave me periodic errors of
infinite stencil offset for the tuplet bracket.  It no longer does this,
but I'm not sure if this is because I actually fixed it or because I'm
lucky.  The problem originally came from the change in
tuplet-brackets.cc.

THE UGLY:

Because this patch effects stem extents across the board, the regtest
comparisons are nightmarish to check.  The layout probably does not
change at all in most regtests (at least not to the naked eye), but
because of the change in Y-extent, almost every regtest with stems comes
back as having changed.  So, spotting regressions is very difficult.
The files I list above are the only ones where I see a noteworthy
change, and I believe all of these are for the better.

PARTING SHOT:

This is a labor of love that will pave the way for non-buggy glissando
stems in LilyPond as well as (probably) no more stem-accidental
collisions in extreme beaming situations.  It may also fix other
collision-related issues in the tracker (I'll have to do some snooping).
 The existing code logic does not change at all save the stem
pure_height function.  stem.cc is, however, significantly rearranged in
order to consolidate properties and standardize height/pure-height
approximations.

Thanks for your time looking at this, and I'm looking forward to any and
all comments!

Cheers,
MS

Description:
Fixes heights and pure heights of stems.

Please review this at http://codereview.appspot.com/4898044/

Affected files:
  M input/regression/stem-length-estimation.ly
  A input/regression/stem-pure-height-beamed.ly
  M lily/beam.cc
  M lily/dot-column.cc
  M lily/include/stem.hh
  M lily/note-spacing.cc
  M lily/staff-spacing.cc
  M lily/stem-tremolo.cc
  M lily/stem.cc
  M lily/tie-formatting-problem.cc
  M lily/tuplet-bracket.cc
  M ly/engraver-init.ly
  M scm/define-grob-properties.scm
  M scm/define-grobs.scm
  M scm/flag-styles.scm



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Prevents nested tuplets from colliding. (issue4808082)

2011-08-14 Thread m...@apollinemike.com
On Aug 11, 2011, at 11:40 PM, n.putt...@gmail.com wrote:

> Hi Mike,
> 
> Have you tested this with broken tuplets?  I've tried adding breaks at
> random in tuplet-nest.ly and get collisions in some cases.
> 
> Cheers,
> Neil


Thanks Neil!

New patchset uploaded that fixes the line breaking problem.
I haven't gotten around to making the other changes you pointed out yet, but I 
will either tonight or tomorrow.

Cheers,
MS
___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Nested context properties -- an implementation sketch

2011-08-14 Thread Graham Percival
On Sun, Aug 14, 2011 at 05:31:11PM +0200, David Kastrup wrote:
> Werner LEMBERG  writes:
> 
> > Unfortunately, I have nothing useful to say.
> 
> Well, there is the code (obviously bound to be streamlined before
> implementation) and there are the proposed semantics.  At least for the
> latter, I would want to get some sort of feedback.

I agree.  :(

> The semantics can be summarized as follows:

Those look fine to me.

> Once I rewrite the property code in C, getting negative feedback about
> the semantics afterwards will be a major pain.  So I made a toy
> implementation (it is already suffering from too much premature
> optimization for a toy, but is still more or less readable) in Scheme.

If you really want to poke the hornet's nest, and if the scheme
implementation can be used for any arbitrary lilypond file (i.e.
just by adding an \include "new-overrides.ly" to the top), then we
could ask on the lilypond-user mailing list.


Since we'll be having a release candidate as soon as Mike fixes
his python 2.4 problem in output-distance.py, I'd ask you to wait
until 2.16 is out before pushing this change.  That's the only
real feedback I can give, sorry.

Cheers,
- Graham

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Nested context properties -- an implementation sketch

2011-08-14 Thread David Kastrup
Werner LEMBERG  writes:

>> Well David,
>> 
>> I should not want to let you implement this in the current form
>> without any feedback from the developer list.  [...]
>
> :-)
>
> Unfortunately, I have nothing useful to say.

Well, there is the code (obviously bound to be streamlined before
implementation) and there are the proposed semantics.  At least for the
latter, I would want to get some sort of feedback.

The semantics can be summarized as follows:

a) a revert will only cancel the last _matching_ override, and the match
   includes the complete specified property path, _and_ the prospective
   use of \once.  \revert will not cancel \once\override and vice versa.
b) At the end of a timestep, all \once\override are reverted.  All
   non-\once overrides remain in effect and on the stack as if none of
   the \once\override had ever happened.

I have no clear view about \set yet.  It would seem to me that \unset
should be equivalent to \revert, and \set should be equivalent to
\revert+\override.

I am pretty sure that any less strict 1:1 matching of reverts and
overrides will cause surprises to users that are really hard to track
down and explain.

This is a change of existing semantics and will likely require changes
to some Lilypond scores.  I should be quite surprised if such changes
would not make the intent of the writer easier to follow and maintain,
but they would be changes nevertheless.

Once I rewrite the property code in C, getting negative feedback about
the semantics afterwards will be a major pain.  So I made a toy
implementation (it is already suffering from too much premature
optimization for a toy, but is still more or less readable) in Scheme.
The version in C will be less readable, but deliver the same results.
The Scheme version was likely overkill to do, but whether or not
somebody actually looks at it, it helped for focussing on the needed
data structures.

So from those not interested in the code (long as it works(TM)), I'd be
at least interested in hearing whether they would be ok with _what_ I
propose it should be doing, never mind _how_ it does it.

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Nested context properties -- an implementation sketch

2011-08-14 Thread Werner LEMBERG

> Well David,
> 
> I should not want to let you implement this in the current form
> without any feedback from the developer list.  [...]

:-)

Unfortunately, I have nothing useful to say.


Werner

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: chaotic stems when querying direction property

2011-08-14 Thread Ricardo Wurmus
> > So ly:glob-property has side effects because of the stem callback?
> > How can I make sure to get the final stem direction after all
> > dependent properties were calculated?
> >
> > I want to replace a note head with a triangle, but there is a gap
> > between note head a stem when the stem points upward. To correct this, I
> > modify the stem-attachment property of the note head. This correction
> > offset must be different when the stem points down.
>
> I'd override the default callback for stem-attachment.  It should be
> safe to get the stem direction at this point since it's already been
> calculated and cached.
>
> Cheers,
> Neil

Thanks, Neil. That helped.

I will read a little more about callbacks. A number of ugly parts of my
code could be solved a lot more elegantly through callbacks.

Best,
Rekado

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Nested context properties -- an implementation sketch

2011-08-14 Thread David Kastrup
David Kastrup  writes:

> I don't think that anything close to a sensible implementation can be
> significantly simpler or significantly more efficient.  There are some
> things that may be nicer to do in C, and some shortcuts that may be
> taken.  But as a functional sketch, this should more or less be what it
> takes.
>
> I don't think we can get this much cheaper.

> ;; Structure of source: a list exactly as long as the list reaching
> ;; from cache inclusively to tail exclusively, and associated 1:1 with
> ;; the respective list elements.  Each element of source has the
> ;; following parts:
> ;;   car   ->  records whether this property was entered with \once or
> ;; not.
> ;;   cdr   ->  length of nested property path.  After this many cdar
> ;; calls on the property alist, you reach the set value of
> ;; the nested property.  All other content of the property
> ;; alist entry is taken from other alist entries.

Well David,

I should not want to let you implement this in the current form without
any feedback from the developer list.  When you try converting your
approach into C code, you'll likely notice a few problems where
performance might be suboptimal.

The one thing to note is that fold-right is an inefficient function to
use, and because of the guile implementation, greatly more so if you use
it with more than a single list.  It is still O(n), but with a factor of
ugliness that warrants some polishing up, the simplest polish-up
possibly just consisting in hard-coding the case for 2 lists instead of
using general code.

But that still results in complex code and a recursion filling up the
stack before actually starting any work working the stack down to empty
again.

So let us see what you are using fold-right for.  Its main purpose
appears to be for updating a context's personal part of the property
list in reverse, back to front.  And it is only in this context that you
are actually using "source".  So basically, there seems to be little
incentive not to keep source in reversed form in the first place.

The second point of interest is seeing what you are using source for.

One thing "source" is used for is keeping score of "once".  We need that
in order to clear all "\once\override" commands at the end of a time
step.  And we need it in order to check whether a "[\once]\revert"
applies to some property or not.  But if you make this list sparse (as
in storing only the elements with once being #t), it should work just
fine.  How to find out you are processing a given list element of the
alist?  Well, we are consing the top level alist entries ourselves, so
their identity is established by eq if we don't change the entries.  You
need to check, however, whether keeping the eq-identity of an entry is
feasible when it partly consists of copied sibling properties from
somewhere else, and those need to be adapted because of new
override/reverts.

The other thing "source" keeps track of is the depth of nesting of each
override.  Making this sparse might not help all that much with regard
to efficiency: when we need to consult it, we already are in the process
of consing up a new spine, so we are already O(n).

The question is how to keep a balance between making the code reasonably
efficient as well as understandable, and thus, maintainable.  While
probably not all too many people are comfortable with that code area in
the current state, dealing with nested properties is going to make the
situation worse, and that should be kept in check as well as possible.

Perhaps you'd want some more opinions.

-- 
David Kastrup


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Texi2HTML: don't wrap around the contents of table cells. (issue 4891044)

2011-08-14 Thread n . puttock

LGTM.


http://codereview.appspot.com/4891044/diff/1/Documentation/lilypond-texi2html.init
File Documentation/lilypond-texi2html.init (right):

http://codereview.appspot.com/4891044/diff/1/Documentation/lilypond-texi2html.init#newcode2076
Documentation/lilypond-texi2html.init:2076: if (defined
($command_stack_at_begin->[0]) and $command_stack_at_begin->[0] eq
'multitable')
whitespace

http://codereview.appspot.com/4891044/diff/1/Documentation/lilypond-texi2html.init#newcode2080
Documentation/lilypond-texi2html.init:2080:
whitespace

http://codereview.appspot.com/4891044/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: chaotic stems when querying direction property

2011-08-14 Thread Neil Puttock
On 14 August 2011 01:03, Ricardo Wurmus  wrote:

> So ly:glob-property has side effects because of the stem callback?
> How can I make sure to get the final stem direction after all
> dependent properties were calculated?
>
> I want to replace a note head with a triangle, but there is a gap
> between note head a stem when the stem points upward. To correct this, I
> modify the stem-attachment property of the note head. This correction
> offset must be different when the stem points down.

I'd override the default callback for stem-attachment.  It should be
safe to get the stem direction at this point since it's already been
calculated and cached.

Cheers,
Neil

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Adds a glyph for tied lyrics. (issue 4808074)

2011-08-14 Thread bordage . bertrand

Pushed as 8d148ea05fa4b34f8cc3407e112363d715b27ad8

Bertrand

http://codereview.appspot.com/4808074/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Lilydev remix iso - where

2011-08-14 Thread Trevor Daniels


Hi Jonathan,
you wrote Sunday, August 14, 2011 1:50 AM


On Sat, Aug 13, 2011 at 5:53 PM, Trevor Daniels 
 wrote:
The lilynet website still seems to be under construction. In 
particular the
lilydev remix iso is not available from the link in the CG. (I 
guess this
should be a critical bug under the proposed new classification 
scheme.)


I'd actually like to obtain it, as I need to reinstall my ubuntu 
system and

want to upgrade to it. Is it available anywhere else?


I have it but it's 827MB. Do you have a server where I could 
upload it for you?


Thanks.  I have access to a server which should do the job.
I'll email the access codes privately.

Trevor



-
No virus found in this message.
Checked by AVG - www.avg.com
Version: 10.0.1392 / Virus Database: 1520/3833 - Release Date: 08/14/11


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Comand token too long?

2011-08-14 Thread Karl Hammar
Reinhold Kainhofer:
> Am Sunday, 14. August 2011, 03:36:05 schrieb Karl Hammar:
> > Works here:
> Doesn't work here on a German Kubuntu system:
...
> > $ echo $LANG
> > C
> $ echo $LANG
> de_AT.UTF-8

$ LANG=de_AT.UTF-8
$ echo 'z:/' | egrep '^(/|[A-z]:/)'
egrep: Das Ende des angegebenen Intervalls ist nicht gültig
$ echo 'z:/' | egrep '^(/|[A-Za-z]:/)'
z:/
$ export LC_ALL=C
$ echo 'z:/' | egrep '^(/|[A-z]:/)'
z:/
$

So that means that this bug is due to collation order, and as
you wrote yesterday the interval should be changed to A-Za-z.

The egrep thing is there to detect if a filename is absolute,
i.e. starting with "/" as in "/usr/bin/true" (unix style), or
"C:/" (or another device letter) as in
"C:/WINDOWS/SYSTEM32/FILE.DLL" (Dos/Windows style).

As written in "man grep":

 To obtain the traditional interpretation of bracket
 expressions, you can use the C locale by setting the
 LC_ALL environment variable to the value C.

we can go around this bug by setting LC_ALL to C.

This bug is fixed in [1]:

-  echo "$command_line_filename" | $EGREP '^(/|[A-z]:/)' >&6 \
+  echo "$command_line_filename" | LC_ALL=C $EGREP '^(/|[A-Za-z]:/)' >&6 \

We might go around the bug with the attaced patch (texi2dvi is called 
from texi2pdf), but I have not had time to test it.

Regards,
/Karl Hammar

[1] http://ftp.gnu.org/gnu/texinfo/texi2dvi

---
Aspö Data
Lilla Aspö 148
S-742 94 Östhammar
Sweden
+46 173 140 57

diff --git a/make/doc-i18n-root-rules.make b/make/doc-i18n-root-rules.make
index f510ded..83f2ee6 100644
--- a/make/doc-i18n-root-rules.make
+++ b/make/doc-i18n-root-rules.make
@@ -18,7 +18,7 @@ $(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).html: $(outdir)/%.texi $(X
 
 $(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf: $(outdir)/%.texi
 	cd $(outdir) && \
-	texi2pdf $(TEXI2PDF_FLAGS) $(TEXINFO_PAPERSIZE_OPTION) $*.texi && \
+	LC_ALL=C texi2pdf $(TEXI2PDF_FLAGS) $(TEXINFO_PAPERSIZE_OPTION) $*.texi && \
 	mkdir -p $(dir $@) && mv $*.pdf $@
 
 $(outdir)/version.%: $(top-src-dir)/VERSION___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Adds a glyph for tied lyrics. (issue 4808074)

2011-08-14 Thread bordage . bertrand

use separate binding for (/ word-space 2)


Done.

http://codereview.appspot.com/4808074/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Add scripts/auxiliar/guileindent.scm (issue 4896043)

2011-08-14 Thread tdanielsmusic

L pretty GTM.
It would look even better with a little manual adjustment first.


http://codereview.appspot.com/4896043/diff/1/scm/music-functions.scm
File scm/music-functions.scm (right):

http://codereview.appspot.com/4896043/diff/1/scm/music-functions.scm#newcode673
scm/music-functions.scm:673: (make-music 'RestEvent 'duration
(ly:music-property mus 'duration))
remove the double space, I think

http://codereview.appspot.com/4896043/diff/1/scm/music-functions.scm#newcode973
scm/music-functions.scm:973: )))
Is it out of the question to move orphaned brackets to the previous
line?

http://codereview.appspot.com/4896043/diff/1/scm/music-functions.scm#newcode1470
scm/music-functions.scm:1470: (lambda (m) (eq? 'NoteEvent
(ly:music-property m 'name)))
Same question for bare (if and (list
I'd be happy with 1 space in this case and 2 spaces when the function is
not bare [as indent seems to do for all bare (function calls].  Don't
know what emacs does though.

http://codereview.appspot.com/4896043/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel