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 > > > >