Am Sonntag, dem 11.07.2021 um 22:54 -0700 schrieb Aaron Hill: > On 2021-07-11 12:32 pm, ming tsang wrote: > > I am confused about this "file information" LSR. > > Yesterday, I did a ""file>save as" to a file name to > > untitled_LSR_file-info_v2182.ly. This morning I tried to run the > > untitled_LSR_file-info_v2182.ly, but I got run error: > > The code in LSR 197 is not able to properly handle non-ASCII characters > in a file path. Upon review, its use of object->string is mangling the > filename. Also, the entire premise of the snippet is predicated on the > false assertion that the command-line only consists of the filename in > question. In practice, there are likely to be many other arguments. At > best, you might be able to rely on the filename being the last argument: > > %%%% > \version "2.18.2" > > filename = #(last (command-line)) > \markup { "File Name =" \filename } > %%%% > > However, why mess about with reparsing the command-line arguments in the > first place? LilyPond has already done this for you, so just ask > LilyPond for the current filename: > > %%%% > \version "2.20.0" % or newer > > filename = #(define-scheme-function () () > (car (ly:input-file-line-char-column (*location*)))) > \markup { "File Name =" \filename } > %%%% > > You could adapt the above to work on 2.18.2, but calling the function > within markup requires some extra sugar: > > %%%% > \version "2.18.2" > > filename = #(define-scheme-function (parser location) () > (car (ly:input-file-line-char-column location))) > \markup { "File Name =" $#{ \filename #} } > %%%% > > All the more reason to leave 2.18.2 behind and just focus on the newer > versions of LilyPond.
Or you could use the (undocumented) \input-file-name, an internal variable of the lexer, which seems to be there since "forever".
signature.asc
Description: This is a digitally signed message part