[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: utf-8-strings
From: |
David Kastrup |
Subject: |
Re: utf-8-strings |
Date: |
Sun, 08 Jul 2012 20:34:40 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux) |
Thomas Morley <address@hidden> writes:
> 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.
[Checking]
Duh. I see you wrote
> #:properties ((word-space 0.6) (word-space-left #f) (word-space-right #f))
and I remembered seeing (word-space-left 0.6).
Sorry for the confusion. In this case I would use
(ly:stencil-combine-at-edge
(ly:stencil-combine-at-edge
(ly:make-stencil ""
(cons 0 (abs (* pos-nmbr 3 (or word-space-left word-space)))))))
--
David Kastrup
- Re: utf-8-strings, (continued)
- Re: utf-8-strings, David Kastrup, 2012/07/08
- Re: utf-8-strings, David Nalesnik, 2012/07/08
- Re: utf-8-strings, David Kastrup, 2012/07/08
- Re: utf-8-strings, Thomas Morley, 2012/07/10
- Re: utf-8-strings, David Nalesnik, 2012/07/10
- Re: utf-8-strings, David Kastrup, 2012/07/10
- Re: utf-8-strings, David Kastrup, 2012/07/08
- Re: utf-8-strings, Thomas Morley, 2012/07/08
- Re: utf-8-strings, David Kastrup, 2012/07/08
- Re: utf-8-strings, Thomas Morley, 2012/07/08
- Re: utf-8-strings,
David Kastrup <=