Re: A few questions regarding markup

2009-11-15 Thread David Kastrup
Carl Sorensen  writes:

> On 11/14/09 1:29 AM, "David Kastrup"  wrote:
>
>> 
>> 
>> Ok, I am digging through harp-pedals.scm and looking at
>> define-builtin-markup-command.
>> 
>> Now from the definition of define-builtin-markup-command it looks to me
>> like you can specify default properties and those are let to the
>> specified default values (#f if unspecified) or the respective
>> properties from the list.
>> 
>> Now the harp-pedal command defines the property signature
>> 
>>   ((size 1.0)
>>(harp-pedal-details)
>>(thickness 0.5))
>
> The property signature is a documentation-only convention.  It has no
> functionality except for producing documentation.

Thanks, but wrong.  Please look in the definition of
define-builtin-markup-command.  The property signature symbols are
let-bound to the respective property values (or the default if none are
there) within the body of define-builtin-markup-command.

Here is the respective part from the macro that does it:

  `(define-public (,command-name ,@args)
 ,documentation
 (let ,(filter identity
   (map (lambda (prop-spec)
  (if (pair? prop-spec)
  (let ((prop (car prop-spec))
(default-value (if (null? (cdr 
prop-spec))
   #f
   (cadr 
prop-spec)))
(props (cadr args)))
`(,prop (chain-assoc-get ',prop 
,props ,default-value)))
  #f))
properties))
   ,@real-body)))


If indeed no active Lilypond developer _realises_ that this is the case,
then the respective code should just be thrown out instead of wasting
performance with property lookups that are ignored.

I find it unfortunate that the arguments of
define-builtin-markup-command and define-markup-command diverge in this
manner, since converting a markup routine to an internal one _in style_
should just entail adding the documentation, not restructuring the code.

The idea to have properties automatically defaulted and looked up at the
top is nice, however.  But if the lookup results are needed in a
different scope (as is the case with harp pedals) or only conditionally
in some code paths, the scheme gets less workable.

And if nobody realises what the functionality actually does, this does
not help.

-- 
David Kastrup



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


Re: A few questions regarding markup

2009-11-15 Thread Carl Sorensen



On 11/14/09 1:29 AM, "David Kastrup"  wrote:

> 
> 
> Ok, I am digging through harp-pedals.scm and looking at
> define-builtin-markup-command.
> 
> Now from the definition of define-builtin-markup-command it looks to me
> like you can specify default properties and those are let to the
> specified default values (#f if unspecified) or the respective
> properties from the list.
> 
> Now the harp-pedal command defines the property signature
> 
>   ((size 1.0)
>(harp-pedal-details)
>(thickness 0.5))

The property signature is a documentation-only convention.  It has no
functionality except for producing documentation.  To the extent that
it is inconsistent with the defaults in chain-assoc-get, it is in error.

> 
> So far, so fine.  It
> then calls make-harp-pedal without passing it those let-bound
> variables.  As far as I understand Scheme and its closures, this means
> that the defaults specified in this manner are ignored.

Yes -- the defaults aren't really specified with the property signature;
they're simply documented.
> 
> make-harp-pedal then starts off with
> 
>   (let* ((size (chain-assoc-get 'size props 1.2))
> (details (chain-assoc-get 'harp-pedal-details props '()))
> 
> Which looks rather like defaulting to a size of 1.2 if none is
> specified, conflicting with the documented default value which is
> ignored.

Yes, that is correct.

> 
> That does not really make much sense.
> 
> Is my understanding of the code correct so far?
> 
> Now there are several possible remedies I can see.
> 
> a) don't use chain-assoc-get in this manner, consistently.  Instead pass
> everything from the defined markup function into the helper function
> explicitly, as extra arguments.  This would involve fixing the current
> definition of harp-pedal and its helpers.  The ultimate solution would
> be to never even pass props on, but rather only the defaults picked from
> it.  Advantage would be that the documentation would be consistent with
> declaring which values are possibly used with which defaults, no white
> lies permitted.  Disadvantage is maintenance of the passed argument list
> with possibly many values, from all defined markup commands.

But all the default values can be overridden by properties that are set
elsewhere in the code.  And we don't want to add defaults to the call, in
case there are values added to props.

chain-assoc-get is, in my opinion, a  very nice mechanism for handling
default values and keeping the code from breaking/segfaulting if the props
list gets messed up.  I would not be in favor of modifying the
chain-assoc-get calls.

> 
> b) fixup props also by let-binding, binding the default values to the
> end of the property chain.  This requires a copy of the property chain.
> Consing overhead.  Disadvantage is that access to the fixed property
> chain can access values not declared in the documentation.

I guess this is possible, but I don't really like the overhead.

> 
> c) fixup props by let-binding, binding any undefined default values to
> the start of the property chain.  No copying overhead, but lookup
> overhead.  But could probably be combined with the lookup that happens
> anyway for let-binding the default values.

I'd have to see a sample of this to see what it might look like.

> 
> d) make the duplicate default values consistent but don't touch the
> code.

This is my recommended step right now.
> 
> e) redesign everything
> 
> Option d) appears simplest but most error-prone.
> 
> Other than that, I think one should go for a).  Likely cleanest.
> Disadvantage is that that makes the code diverge from what one would use
> for define-markup-command rather than define-builtin-markup-command.
> 

I strongly disagree with going for a).   In my opinion there are two
possible fixes.

The simple is option d).

The complex is to modify the documentation generator so that instead of
reading values from the documented properties, it scans through the actual
markup function code looking for chain-assoc-get calls on props and reading
the key and the default value from the code.  I think this is correct
because it modifies the documentation code to be consistent with the
functional code, rather than modifying the functional code to be consistent
with the documentation code.

The current documentation code is a bit of a hack, as you correctly observe,
but it works.


> So one should probably add this default-let behavior to the
> define-markup-command macro as well.

We already have a fine way of defining defaults for properties, so I don't
think we need to add the documentation overhead to define-markup-command.

I appreciate your look at this system with new eyes.  I think there's
something that could be done here.

Thanks,

Carl



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


Re: [PATCH] Allow nested properties to be set with \tweak

2009-11-15 Thread Neil Puttock
2009/11/14 Han-Wen Nienhuys :

> Shouldnt this be something recursive? I thought properties could nest
> beyond one level.

I don't see how it can be, unless you mean building the property alist
given the list of symbols and a value to set.

The problem with the current behaviour is that it's only possible to
use \tweak on something like 'bound-details if you pass the whole
alist, e.g.,

c-\tweak #'bound-details #'(...all subproperties...) \glissando

Since the current value of 'bound-details isn't accessible at this
stage it's not possible just to override one subproperty: it clears
out all the default values.

Regards,
Neil


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


Re: Language and \inlcude

2009-11-15 Thread Valentin Villenave
On Sun, Nov 15, 2009 at 11:24 AM, Ichiro Watanabe
 wrote:
> Would it be possible to promote
>    \include "english.ly"
> to a first-class command that is allowed in safe mode? Something like
>    \language "english"

Thanks, this is a very good idea and we've been discussing such a
change, but I had never added it to the tracker -- which I have now.
http://code.google.com/p/lilypond/issues/detail?id=903

Cheers,
Valentin


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


Re: My "make doc" is broken

2009-11-15 Thread Frédéric Bron
> For info I had the needed packages provided by a "sudo apt-get
> build-dep lilypond" command with the only difference that
> I used texi2html-1.82 (compiled from sources) instead of 1.78 (in
> Ubuntu's repository), as recommended when running ./autogen.sh.

did not know that (not in CG): I did the sudo apt-get build-dep
lilypond. I have already tex2thml 1.82 (installed manually).
redone git pull, make clean, make all, make doc.
After a few hours, I get the same error (see below). It is true that
the required file (examples/tab-example-small*) does not exists but
why?

Frédéric

cd ./out-www; texi2pdf -I ./out-www -I
/home/bronf/lilypond/Documentation/out -I
/home/bronf/lilypond/Documentation -I
/home/bronf/lilypond/Documentation --batch  general.texi
This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
...
(./general.texi (/home/bronf/lilypond/tex/texinfo.tex
Loading texinfo [version 2009-08-14.15]: pdf, fonts, markup, glyphs,
page headings, tables, conditionals, indexing, sectioning, toc, environments,
defuns, macros, cross references, insertions,
(/usr/share/texmf-texlive/tex/generic/epsf/epsf.tex
This is `epsf.tex' v2.7.3 <23 July 2005>
) localization, formatting, and turning on texinfo input format.)
(./general.aux) (/home/bronf/lilypond/tex/txi-en.tex)
(/home/bronf/lilypond/Documentation/macros.itexi (./version.itexi)
(/home/bronf/lilypond/Documentation/common-macros.itexi)) [1{/var/lib/texmf/fon
ts/map/pdftex/updmap/pdftex.map}] <./pictures/double-lily-modified3.png>
(/home/bronf/lilypond/Documentation/general/news-front.itexi)
l.111: Undefined cross reference `old news-snt'.
l.111: Undefined cross reference `old news-snt'.
...
(./general.toc) (./general.toc)
(/home/bronf/lilypond/Documentation/general/introduction.itexi (Introduction) <
./pictures/flat-design.png (PNG copy)>
l.41: Undefined cross reference `freedom-snt'.
l.41: Undefined cross reference `freedom-snt'.
...
/home/bronf/lilypond/Documentation/general/introduction.itexi:0: Could not find
 image file examples/tab-example-small for pdf.
@dopdfimage ...uld not find image file #1 for pdf}
  @else @gdef @pdfimgext {PD...

@imagexxx ...ndent @ifpdf @dopdfimage {#1}{#2}{#3}
  @else @setbox 0 = @hbox 
{...@...

@image ...true @fi @else @imagexxx #1,@finish
  @fi
l.12 ...le}-small,,,@xeatspaces {tab-example},png}

@scanmacro ...ceisspace @scantokens {...@endinput }
  @endgroup
@macnamexxx ...xeatspaces {#1},png}...@end ifinfo}
  @egroup
l.283 @exampleImage{tab-example}


!pdfTeX error: pdfetex (file examples/tab-example-small.): cannot find image fi
le
 ==> Fatal error occurred, no output PDF file produced!
/usr/bin/texi2dvi: pdfetex exited with bad status, quitting.
make[2]: *** [out-www/general.pdf] Error 1
...


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


Re: [PATCH] functional-or returned #f for (functional-or #f #t #f). Fixed.

2009-11-15 Thread Patrick McCarty
On 2009-11-15, David Kastrup wrote:
> 
> ---
>  scm/lily-library.scm |2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/scm/lily-library.scm b/scm/lily-library.scm
> index 4a7973a..5853744 100644
> --- a/scm/lily-library.scm
> +++ b/scm/lily-library.scm
> @@ -273,7 +273,7 @@
>  (define (functional-or . rest)
>(if (pair? rest)
>(or (car rest)
> -(apply functional-and (cdr rest)))
> +(apply functional-or (cdr rest)))
>#f))
>  
>  (define (functional-and . rest)

Thanks, pushed.

-Patrick


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


Re: [PATCH] harp-pedal: make documented default 'size match implemented value

2009-11-15 Thread Patrick McCarty
On 2009-11-15, David Kastrup wrote:
> 
> ---
>  scm/harp-pedals.scm |4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/scm/harp-pedals.scm b/scm/harp-pedals.scm
> index 876e392..f476783 100644
> --- a/scm/harp-pedals.scm
> +++ b/scm/harp-pedals.scm
> @@ -8,7 +8,7 @@
>  
>  (define-builtin-markup-command (harp-pedal layout props definition-string) 
> (string?)
>instrument-specific-markup ; markup type for the documentation!
> -  ((size 1.0)
> +  ((size 1.2)
> (harp-pedal-details)
> (thickness 0.5))
>"Make a harp pedal diagram.
> @@ -66,7 +66,7 @@ divider) and @code{space-after-divider} (box spacing after 
> the divider).
>  ;;
>  ;; (define-builtin-markup-command (harp-pedal-verbose layout props 
> pedal-list) (list?)
>  ;;   instrument-specific-markup ; markup type
> -;;   ((size 1.0)
> +;;   ((size 1.2)
>  ;;(harp-pedal-details)
>  ;;(thickness 0.5))
>  ;;   "Make a harp pedal diagram containing the directions indicated in 
> @var{pedal-list}."

Thanks, pushed.

-Patrick


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


Re: A few questions regarding markup

2009-11-15 Thread David Kastrup
Reinhold Kainhofer  writes:

> Am Sonntag, 15. November 2009 20:16:51 schrieb Nicolas Sceaux:
>> Le 14 nov. 2009 à 09:29, David Kastrup a écrit :
>> > Now the harp-pedal command defines the property signature
>> >
>> >  ((size 1.0)
>> >   (harp-pedal-details)
>> >   (thickness 0.5))
>> >
>> > So far, so fine.  It
>> > then calls make-harp-pedal without passing it those let-bound
>> > variables.  As far as I understand Scheme and its closures, this means
>> > that the defaults specified in this manner are ignored.
>
> I wrote that code, and I have to admit that I don't understand this part at 
> all. I simply copied code from somewhere else and tweaked it so that it 
> worked
>
>> > make-harp-pedal then starts off with
>> >
>> >  (let* ((size (chain-assoc-get 'size props 1.2))
>> >(details (chain-assoc-get 'harp-pedal-details props '()))
>> 
>> Just remove the useless binding of `size' in the let form,
>> and give the appropriate default in the property argument.
>
> Ah, interesting... So, in the make-harp-pedal function, the properties
> defined in the harp-pedal markup function are available?

Not if make-harp-pedal is not defined in the scope of the harp-pedal
markup function.  If I understand Scheme correctly.  size is
automatically let-bound to the correct value (default if not specified
in properties) within the markup function defined with
define-builtin-markup-command.

> That's cool!

Yes and no: the coolness does not inherit into called functions.  My
personal preference with the harp pedals would be to throw out
make-harp-pedal altogether (it is just used as a shared helper function
for an outcommented different definition which should likely just get
removed altogether).

But I think I covered most issues in my first post anyway.

-- 
David Kastrup



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


Re: A few questions regarding markup

2009-11-15 Thread Reinhold Kainhofer
Am Sonntag, 15. November 2009 20:16:51 schrieb Nicolas Sceaux:
> Le 14 nov. 2009 à 09:29, David Kastrup a écrit :
> > Now the harp-pedal command defines the property signature
> >
> >  ((size 1.0)
> >   (harp-pedal-details)
> >   (thickness 0.5))
> >
> > So far, so fine.  It
> > then calls make-harp-pedal without passing it those let-bound
> > variables.  As far as I understand Scheme and its closures, this means
> > that the defaults specified in this manner are ignored.

I wrote that code, and I have to admit that I don't understand this part at 
all. I simply copied code from somewhere else and tweaked it so that it 
worked

> > make-harp-pedal then starts off with
> >
> >  (let* ((size (chain-assoc-get 'size props 1.2))
> >(details (chain-assoc-get 'harp-pedal-details props '()))
> 
> Just remove the useless binding of `size' in the let form,
> and give the appropriate default in the property argument.

Ah, interesting... So, in the make-harp-pedal function, the properties defined 
in the harp-pedal markup function are available? That's cool!

Cheers,
Reinhold

-- 
--
Reinhold Kainhofer, reinh...@kainhofer.com, http://reinhold.kainhofer.com/
 * Financial & Actuarial Math., Vienna Univ. of Technology, Austria
 * http://www.fam.tuwien.ac.at/, DVR: 0005886
 * LilyPond, Music typesetting, http://www.lilypond.org


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


Re: A few questions regarding markup

2009-11-15 Thread Nicolas Sceaux
Le 14 nov. 2009 à 09:29, David Kastrup a écrit :

> Now the harp-pedal command defines the property signature
> 
>  ((size 1.0)
>   (harp-pedal-details)
>   (thickness 0.5))
> 
> So far, so fine.  It
> then calls make-harp-pedal without passing it those let-bound
> variables.  As far as I understand Scheme and its closures, this means
> that the defaults specified in this manner are ignored.
> 
> make-harp-pedal then starts off with
> 
>  (let* ((size (chain-assoc-get 'size props 1.2))
>(details (chain-assoc-get 'harp-pedal-details props '()))
> 

Just remove the useless binding of `size' in the let form, 
and give the appropriate default in the property argument.

Nicolas



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


Re: Code formatter

2009-11-15 Thread David Kastrup
Graham Percival  writes:

> On Fri, Nov 13, 2009 at 11:23:55AM -0700, Carl Sorensen wrote:
>> Jan believes that code formatting standards should be no more restrictive
>> than the GNU standards.
>
> By the way, if somebody has a compelling argument why we should
> differ from the GNU standards, I'm willing to go up against Jan.
> But before I do that, I need to be *convinced* that the
> alternative is right.
>
>> This same issue is relevant in the discussion about going to Lua.
>> Lua is not GNU software.  It does use the MIT license, which is GPL
>> compatible, according to the FSF.
>
> That's not an issue.  The issue is that rewriting lilypond would take
> thousands of hours of work, and nobody wants to do that work.

Yes.

> Besides, I really thought that the Lua-talk was a joke.

It was a quite serious hypothetical.  "If xxx were to be started from
scratch" is rarely an option.  If you want to, take it as "if only
Lilypond had been written using Lua".  Because there are quite a number
of compelling advantages, not least of all performance.

> Some people at my university want to rewrite lilypond in Haskell --
> again, they weren't serious about it.  The notion was just a "hey,
> wouldn't it be cool if...?" thing.

This hypothetical was not "wouldn't it be cool", but rather "wouldn't it
be nice".  The Haskell rewrite sounds like potentially squeezing the
source code size by a factor of 2, squeezing the developer pond by a
factor of 20.  The Lua rewrite would likely squeeze the source code by a
similar size and double the developer pool.

Because one simple language that can be efficiently used for
_everything_ sure beats two complex languages that can only be used in
tandem for doing everything, in particular when we are talking about
efficiency.  And that's before we even take a look _which_ languages we
are talking about.

> The core developers have a better estimate of the enormous amount of
> work it would take to rewrite lilypond in lua, java, or whatever was
> being proposed.  Also possibly rewriting it to avoid using various
> libraries... so maybe re-implementing fontforge, pango, etc etc etc.

Reimplementation libraries is not an option, I think.  Lua is pretty
good for integrating libraries, and quite a number of external bindings
exist.

But the bottom line of course remains: any porting requires developers.
Another option would be to pull in Lua as an _additional_ extension
language, then move existing code in pieces to Lua.  That's the approach
that the Context/LuaTeX development team has taken.  The process has a
large "evolutionary rather than planned" taste to it.  But it shows
intermediate results that keep the motivation going.

Again: I am not proposing to actually do this.  It was just a "wouldn't
it be nice".  Not cool, nice.  Because diving into the current system is
to a large degree fighting with the implementation rather than the
implemented system.

For anybody who thinks that I am fantasizing because of some arbitrary
language preferences, I recommend reading through the "Programming in
Lua" manual for which slightly older versions are completely online.

Very worthwhile, for programmers used to _any_ language.

> If anybody has a CONCRETE proposal on how to make things easier
> for non-Linux developers... along with the manpower required to
> IMPLEMENT those proposals... I'm more than willing to listen.  If
> their proposal includes a relatively minor amount of work from the
> core developers, I'm willing to do it.  If the proposal boils down
> to "hey, how about you guys rewrite it in visual basic, while I
> continue to complain about bugs and the lack of a wiki"... then
> they won't get anywhere.

Sure.

-- 
David Kastrup



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


Re: My "make doc" is broken

2009-11-15 Thread Xavier Scheuer
Le Sat, 14 Nov 2009 19:57:05 +0100,
Frédéric Bron  a écrit :

> Since I upgraded ubuntu to 9.10, make doc does not work anymore but
> why? Is it because of the ubuntu upgrade or because of git pull?

Hi Frédéric.
I have Ubuntu 9.10 too and I tried to compile (after the first
commit, the first compiling)...
And to my great surprise it succeeds!


> !pdfTeX error: pdfetex (file examples/tab-example-small.): cannot
> find image fi le
>  ==> Fatal error occurred, no output PDF file produced!
> /usr/bin/texi2dvi: pdfetex exited with bad status, quitting.
> make[2]: *** [out-www/general.pdf] Error 1
> make[2]: Leaving directory `/home/bronf/lilypond/Documentation'
> make[1]: *** [WWW-1] Error 2
> make[1]: Leaving directory `/home/bronf/lilypond'
> make: *** [doc-stage-1] Erreur 2

For info I had the needed packages provided by a "sudo apt-get
build-dep lilypond" command with the only difference that
I used texi2html-1.82 (compiled from sources) instead of 1.78 (in
Ubuntu's repository), as recommended when running ./autogen.sh.

Since your error seems related to pdfetex it may be relevant to add
that I also have texlive-full that is installed on my computer.

Sincerely,
Xavier


-- 
Xavier Scheuer 


signature.asc
Description: PGP signature
___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Issue #768 - chord repetition shortcut: patch for review

2009-11-15 Thread David Kastrup
Kieren MacMillan  writes:

> Hi David,
>
>> OTOH, something like
>> { 8-. -^ }*2
>> is not doable with the q approach.
>
> Of course it is:
>   \repeat unfold 2 { 8-. q-^ }

Well, not exactly a shortcut for saving typing.

-- 
David Kastrup


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


[PATCH] functional-or returned #f for (functional-or #f #t #f). Fixed.

2009-11-15 Thread David Kastrup

---
 scm/lily-library.scm |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/scm/lily-library.scm b/scm/lily-library.scm
index 4a7973a..5853744 100644
--- a/scm/lily-library.scm
+++ b/scm/lily-library.scm
@@ -273,7 +273,7 @@
 (define (functional-or . rest)
   (if (pair? rest)
   (or (car rest)
-  (apply functional-and (cdr rest)))
+  (apply functional-or (cdr rest)))
   #f))
 
 (define (functional-and . rest)
-- 
1.6.5.1.36.g54298



-- 
David Kastrup


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


A few questions regarding markup

2009-11-15 Thread David Kastrup

Ok, I am digging through harp-pedals.scm and looking at
define-builtin-markup-command.

Now from the definition of define-builtin-markup-command it looks to me
like you can specify default properties and those are let to the
specified default values (#f if unspecified) or the respective
properties from the list.

Now the harp-pedal command defines the property signature

  ((size 1.0)
   (harp-pedal-details)
   (thickness 0.5))

So far, so fine.  It
then calls make-harp-pedal without passing it those let-bound
variables.  As far as I understand Scheme and its closures, this means
that the defaults specified in this manner are ignored.

make-harp-pedal then starts off with

  (let* ((size (chain-assoc-get 'size props 1.2))
(details (chain-assoc-get 'harp-pedal-details props '()))

Which looks rather like defaulting to a size of 1.2 if none is
specified, conflicting with the documented default value which is
ignored.

That does not really make much sense.

Is my understanding of the code correct so far?

Now there are several possible remedies I can see.

a) don't use chain-assoc-get in this manner, consistently.  Instead pass
everything from the defined markup function into the helper function
explicitly, as extra arguments.  This would involve fixing the current
definition of harp-pedal and its helpers.  The ultimate solution would
be to never even pass props on, but rather only the defaults picked from
it.  Advantage would be that the documentation would be consistent with
declaring which values are possibly used with which defaults, no white
lies permitted.  Disadvantage is maintenance of the passed argument list
with possibly many values, from all defined markup commands.

b) fixup props also by let-binding, binding the default values to the
end of the property chain.  This requires a copy of the property chain.
Consing overhead.  Disadvantage is that access to the fixed property
chain can access values not declared in the documentation.

c) fixup props by let-binding, binding any undefined default values to
the start of the property chain.  No copying overhead, but lookup
overhead.  But could probably be combined with the lookup that happens
anyway for let-binding the default values.

d) make the duplicate default values consistent but don't touch the
code.

e) redesign everything

Option d) appears simplest but most error-prone.

Other than that, I think one should go for a).  Likely cleanest.
Disadvantage is that that makes the code diverge from what one would use
for define-markup-command rather than define-builtin-markup-command.

So one should probably add this default-let behavior to the
define-markup-command macro as well.

Do I overlook something important?

-- 
David Kastrup


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


[PATCH] harp-pedal: make documented default 'size match implemented value

2009-11-15 Thread David Kastrup

---
 scm/harp-pedals.scm |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/scm/harp-pedals.scm b/scm/harp-pedals.scm
index 876e392..f476783 100644
--- a/scm/harp-pedals.scm
+++ b/scm/harp-pedals.scm
@@ -8,7 +8,7 @@
 
 (define-builtin-markup-command (harp-pedal layout props definition-string) 
(string?)
   instrument-specific-markup ; markup type for the documentation!
-  ((size 1.0)
+  ((size 1.2)
(harp-pedal-details)
(thickness 0.5))
   "Make a harp pedal diagram.
@@ -66,7 +66,7 @@ divider) and @code{space-after-divider} (box spacing after 
the divider).
 ;;
 ;; (define-builtin-markup-command (harp-pedal-verbose layout props pedal-list) 
(list?)
 ;;   instrument-specific-markup ; markup type
-;;   ((size 1.0)
+;;   ((size 1.2)
 ;;(harp-pedal-details)
 ;;(thickness 0.5))
 ;;   "Make a harp pedal diagram containing the directions indicated in 
@var{pedal-list}."
-- 
1.6.5.1.36.g54298

-- 
David Kastrup


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


Re: Vertical spacing of lyrics

2009-11-15 Thread Alexander Kobel

Christian Hitz wrote:

Hi,

the new vertical spacing is evaluating the skyline of the lyrics lines for
spacing. This leads to situations with a very uneven look, as the example
below shows. IMHO the tallest glyph in the used font should be used to 
derive the height of the lyrics line.


This very much depends on what you engrave. If you're making larger 
scores with many staves per system, vertical space is pretty much more 
important than everything else, and it's common practice to fit the 
lyrics as tight to the staves and as close together as possible.


If you want to have a more equal spacing, try modifying the LyricText 
#'minimum-Y-extent or (not sure if this works out) the new 
Lyrics.VerticalAxisGroup #'inter-loose-line-spacing [1]. E.g., in your 
example, adding

  \layout {
\context {
  \Lyrics
  \override LyricText #'minimum-Y-extent = #'(-1.5 . 1.5)
}
  }
to the score seems to solve the problem for me.

There are simple "workarounds" to simulate the 
one-box-to-rule-all-glyphs-approach, but if you decide to drop the 
skyline algorithm, it's nearly impossible to automatically achieve the 
tighter setting.



Cheers,
Alexander

[1] http://lists.gnu.org/archive/html/lilypond-user/2009-10/msg00215.html


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


Vertical spacing of lyrics

2009-11-15 Thread Christian Hitz
Hi,

the new vertical spacing is evaluating the skyline of the lyrics lines for
spacing. This leads to situations with a very uneven look, as the example
below shows. IMHO the tallest glyph in the used font should be used to 
derive the height of the lyrics line.

Regards,
Christian

\version "2.13.7"

\score { 
<<
\context Voice = "I" \relative c' {
c4 d e f
}
\new Lyrics \lyricsto "I" \lyricmode { g a a a }
\new Lyrics \lyricsto "I" \lyricmode { t a a a }
\new Lyrics \lyricsto "I" \lyricmode { a a a a }
>>
}


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


Language and \inlcude

2009-11-15 Thread Ichiro Watanabe
Hi there,

The --safe flag disallows \include directives. I'm sure there are very
good reasons for it.
However, this seems to unnecessarily prevent users who need to compile
their source in safe mode from choosing one of the supported languages
for notes and accidentals.
Would it be possible to promote

\include "english.ly"

to a first-class command that is allowed in safe mode? Something like

\language "english"

If it's not too hard I'm happy to look into it and offer a patch.

Thank you and regards


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