-language =
-#(define-music-function (parser location str) (string?)
- (_i "Select note-names language.")
- ;; This function is a hack around the old language
- ;; selection system, using separate .ly files for each
- ;; supported languages.
- ;; TODO: re-implement language selection in a cleaner way.
- (let* ((file-name (string-append (string-downcase! str) ".ly"))
-
- ; Ugh. ly:gulp-file's "file not found" error message
- ; won't be much informative in this specific case.
- (raw-string (ly:gulp-file file-name))
-
- ; extract the pitchnames alist.
- (delim-alist (string-match "`\\(.*\\)\\)\\s[ |\n]?\\)" raw-string ))
- (extract-alist (if delim-alist
- (match:substring delim-alist)
- #f)))
-
- (if extract-alist
- (let ((lang-alist (eval-string extract-alist)))
- (if (ly:get-option 'verbose)
- (ly:message (_ "Using ~a note names...") str))
- (set! pitchnames lang-alist)
- (ly:parser-set-note-names parser lang-alist))
- (ly:error (_ "Cannot process ~a as a language file.
-Use \\include \"~a\" instead.") file-name file-name))
- make-void-music))
-