+ x-y-named-glyphs))))
+
+(define (grob-cause offset grob)
+ (let* ((cause (ly:grob-property grob 'cause))
+ (music-origin (if (ly:music? cause)
+ (ly:music-property cause 'origin))))
+ (if (not (ly:input-location? music-origin))
+ ""
+ (let* ((location (ly:input-file-line-column music-origin))
+ (raw-file (car location))
+ (file (if (and (> (string-length raw-file) 0)
+ (eq? (string-ref raw-file 0) #\/))
+ raw-file
+ (string-append (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 "~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))
+ "")))))