Am Mittwoch, 6. Dezember 2023, 23:10:11 CET schrieb Jean Abou Samra:
> \version "2.24.2"
>
> #(define-markup-command (foo layout props loc-provider) (ly:music?)
> (display (ly:input-file-line-char-column (ly:music-property loc-provider
> 'origin))) empty-stencil)
>
> \markup \foo {{}}
Maybe a bit less esoteric:
\version "2.24.2"
locationOf =
#(define-scheme-function (which) (ly:music?)
(apply format #f "~a:~a:~a:~a" (ly:input-file-line-char-column
(ly:music-property which
'origin))))
\markup { \locationOf {} }
> OK, thanks. But what about accessing the `input-file-name` variable?
> Shouldn't this work within `delay-stencil-evaluation`?
That should not work. A markup function is evaluated at a delayed point, at
which `input-
file-name` might have changed. Try this:
B.ly:
{
\override NoteHead.stencil = #(grob-transformer 'stencil (lambda (grob orig)
(display
input-file-name) orig))
c
}
A.ly:
\include B.ly
This will display A.ly (as `input-file-name` is only "B.ly" while that part is
parsed.
Cheers,
Valentin
signature.asc
Description: This is a digitally signed message part.
