- (ly:music-property cause 'origin)))
- (location (if (ly:input-location? music-origin)
- (ly:input-file-line-column music-origin)
- #f
- ))
- (file (if location (string-append (getcwd) "/" (car location))
- #f))
- (x-ext (ly:grob-extent grob grob X))
- (y-ext (ly:grob-extent grob grob Y))
- )
-
- (if (and location
- (< 0 (interval-length x-ext))
- (< 0 (interval-length y-ext)))
-
- (format "~a ~a ~a ~a (textedit://~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))
- file
- (cadr location)
- (caddr location))
- "")))
-
-;; WTF is this in every backend?
-(define (horizontal-line x1 x2 th)
- (draw-line th x1 0 x2 0))
+ (ly:music-property cause 'origin))))
+ (if (not (ly:input-location? music-origin))
+ ""
+ (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)))
+ (format "~$ ~$ ~$ ~$ (textedit://~a:~a:~a:~a) mark_URI\n"
+ (ly:number->string (+ (car offset) (car x-ext)))
+ (ly:number->string (+ (cdr offset) (car y-ext)))
+ (ly:number->string (+ (car offset) (cdr x-ext)))
+ (ly:number->string (+ (cdr offset) (cdr y-ext)))
+
+ ;; TODO
+ ;;full escaping.
+
+ ;; backslash is interpreted by GS.
+ (string-regexp-substitute "\\\\" "/"
+ (string-regexp-substitute " " "%20" file))
+ (cadr location)
+ (caddr location)
+ (cadddr location))
+ "")))))