BTW,

for unknown reasons your mails always go to the spam folder. I don't
experience the same issue with other members of the ml, and I don't
understand if the issue is on my account or on yours...

On Monday, October 31, 2022, Paolo Prete <paolopr...@gmail.com> wrote:

>
> Thank you as always!
>
> In Spontini-Editor there are examples with generated SVG files that rely
> on point-and-click in order to be edited. Although included paths are dummy
> paths, I would like to clean them without post-processing the files. But I
> think I don't have alternatives, given that the functions you use are not
> part of the API (and I need to make this operation any supported LilyPond
> version). I preview I have to do some Python postprocess script with regex
>
>
> Cheers,
> Paolo
>
>
> On Monday, October 31, 2022, Jean Abou Samra <j...@abou-samra.fr> wrote:
>
>> Le 31/10/2022 à 17:56, Jean Abou Samra a écrit :
>>
>>> In general, no.
>>>
>>
>>
>> Well, I spoke too fast. You can do
>>
>> \version "2.23.80"
>>
>> #(set!
>>   (@@ (lily output-ps) stencil-dispatch-alist)
>>   (assq-set!
>>    (@@ (lily output-ps) stencil-dispatch-alist)
>>    'grob-cause
>>    (lambda (offset grob)
>>      (if (ly:get-option 'point-and-click)
>>          (let* ((cause (ly:grob-property grob 'cause))
>>                 (music-origin (if (ly:stream-event? cause)
>>                                   (ly:event-property cause 'origin)))
>>                 (point-and-click (ly:get-option 'point-and-click)))
>>            (if (and
>>                 (ly:input-location? music-origin)
>>                 (cond ((boolean? point-and-click) point-and-click)
>>                       ((symbol? point-and-click)
>>                        (ly:in-event-class? cause point-and-click))
>>                       (else (any (lambda (t)
>>                                    (ly:in-event-class? cause t))
>>                                  point-and-click))))
>>                (let* ((location (ly:input-file-line-char-column
>> music-origin))
>>                       (raw-file (car location))
>>                       (file (if (is-absolute? raw-file)
>>                                 raw-file
>>                                 (string-append (ly-getcwd) "/"
>> raw-file)))
>>                       (x-ext (ly:grob-extent grob grob X))
>>                       (y-ext (ly:grob-extent grob grob Y)))
>>
>>                  (if (and (< 0 (interval-length x-ext))
>>                           (< 0 (interval-length y-ext)))
>>                      (ly:format " ~4f ~4f ~4f ~4f
>> (textedit://~a:~a:~a:~a) mark_URI\n"
>>                                 (+ (car offset) (car x-ext))
>>                                 (+ (cdr offset) (car y-ext))
>>                                 (+ (car offset) (cdr x-ext))
>>                                 (+ (cdr offset) (cdr y-ext))
>>
>>                                 ;; Backslashes are not valid
>>                                 ;; file URI path separators.
>> ;;;;;;;;;;;;;;;;(ly:string-percent-encode
>>                                 ;;;;;;;;;;;;;;;; (ly:string-substitute
>> "\\" "/" file))
>>                                 "foo.ly"
>>
>>                                 (cadr location)
>>                                 (caddr location)
>>                                 (1+ (cadddr location)))
>>                      ""))
>>                ""))
>>          ""))))
>>
>> { c' }
>>
>>
>>
>>
>> Basically, tamper with the LilyPond function that outputs
>> these textedit:// links. In this example, I'm replacing
>> the file name with "foo.ly".
>>
>> However, this is using undocumented variables that are explicitly
>> not public, so you're at your own risk -- it can and almost
>> certainly will break with some future version of LilyPond,
>> and a replacement will not be guaranteed to exist. Also, it
>> would need different code to work in SVG output.
>>
>> If you can use a different method, that would be really preferable.
>>
>> Best,
>> Jean
>>
>>
>>
>>

Reply via email to