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