[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: utf-8-strings

From: Thomas Morley
Subject: Re: utf-8-strings
Date: Sun, 8 Jul 2012 18:46:28 +0200

2012/7/8 David Kastrup <address@hidden>:
> Thomas Morley <address@hidden> writes:
>> Seems I have to extend my scheme-vocabulary.
>> I didn't know/remember `append-map' and `string-concatenate'.
> Picked them from the Guile manuals.

I know.
I tend to define my own helpers if I don't find sth useful in the
guile-manual in a short amount of time.
Should invest more time in looking through the manual.
Defining my own helpers is a nice exercise, but ...

>> I really have to learn more of the predefined guile-procedures.
>>>>          (new-args (list-join args-rev " "))
>>> list-join?
>> I wanted to insert " " between every element of new-args. Otherwise
>> there will be no space between the words of  p.e. \markup \char-space
>> #1 { This little text }
>> list-join seems to be a nice function to do so. Anything problematic
>> with it?
> I did not find it in the Guile documentation and did not think of
> looking in scm/lily-library.scm instead.  Looks suboptimal: an
> unnecessary test inside of the loop.
> Better is likely
> (define-public (list-join lst intermediate)
>   (if (null? lst) lst
>       (cons (car lst)
>             (append-map!
>                (lambda (elem) (list intermediate elem))
>                (cdr lst)))))
> Or even
> (define-public (list-join lst intermediate)
>   (if (null? lst) lst
>       (cons (car lst)
>             (concatenate!
>               (zip (circular-list intermediate) (cdr lst))))))
> The last version is probably fastest since it avoids any user-defined
> function in the loop.

Could be integrated in the intended patch.

>>>>  (ly:stencil-combine-at-edge
>>>>    (ly:stencil-combine-at-edge
>>>>       (ly:make-stencil ""
>>>>              (cons 0 (abs (* pos-nmbr 3 (if (number? word-space-left)
>>>>    word-space-left word-space))))
>>> word-space-left has been given a default in the function definition.  So
>>> if it is not a number, this is an error case I would not try to catch.
>> Do you mean writing
>>  (ly:stencil-combine-at-edge
>>    (ly:stencil-combine-at-edge
>>       (ly:make-stencil ""
>>              (cons 0 (abs (* pos-nmbr 3 (if word-space-left
>> word-space-left word-space))))
>> instead?
> No.
> (ly:stencil-combine-at-edge
>   (ly:stencil-combine-at-edge
>      (ly:make-stencil ""
>             (cons 0 (abs (* pos-nmbr 3 word-space-left))))))
> word-space-left has no business being anything but a number.

Well, then I don't understand what you want me to do.

Intended is the behaviour that the space to the left and to the right of
\char-space #<nmbr> {<args> } is increased if nmbr is positive.

Additional I want to offer the possibility to add more space in three
different ways (if the user wants):
only to the left
only to the right
on both sides
using \override #'(word-space-left . 2) etc.

I don't see how this could be achieved with your proposal.


reply via email to

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