]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' of git+ssh://git.sv.gnu.org/srv/git/lilypond
authorValentin Villenave <valentin@villenave.net>
Sat, 23 Oct 2010 23:32:12 +0000 (01:32 +0200)
committerValentin Villenave <valentin@villenave.net>
Sat, 23 Oct 2010 23:32:12 +0000 (01:32 +0200)
Documentation/changes.tely
Documentation/notation/pitches.itely
ly/music-functions-init.ly

index 6ea50df006e096cb0457816a286aac317ff433f2..9002f977b4f03133098acf6a5741a86f4122f715 100644 (file)
@@ -66,6 +66,14 @@ which scares away people.
 
 @end ignore
 
+
+@item
+A new @code{\language} command makes it easier to select
+note names languages: instead of the usual
+@code{\include "italiano.ly"} syntax (which is still
+supported and recommended), it is possible to just type
+@code{\language "italiano"}.
+
 @item
 auotbeaming is now disabled by @code{\cadenzaOn} and enabled by
 @code{\cadenzaOff}.  Beaming in cadenzas should be indicated manually.
index 0451385176735a3e839eeef30c2054e15e4726c1..7be51190499249fae86a30368185ae580ed9b3ba 100644 (file)
@@ -439,14 +439,32 @@ any standard.
 @cindex language, pitch names in other
 
 There are predefined sets of note and accidental names for various
-other languages.  To use them, include the language-specific init
-file listed below.  For example, to use English note names, add
-@code{@w{\include "english.ly"}} to the input file.
+other languages.  These may be selected using the following
+shortcut syntax:
+
+@example
+\language "italiano"
+@end example
+
+@noindent
+for Italian note names, or any other supported language listed below.
+Alternatively, the relevant language-specific file may be directly
+included in the input file; the previous example could equally be
+written as follows:
+
+@example
+\include "italiano.ly"
+@end example
+
+@noindent
+The latter syntax is actually more reliable, in that it allows for more
+complex files to be included: for instance the @file{arabic.ly} file is
+not supported by the @code{@bs{}language} shortcut, and can only be
+processed through the @code{@bs{}include} command.
 
 @warning{Because some other include files (such as @code{@w{predefined-fretboards.ly}})
-use default (Nederlands) note names, the @code{@bs{}include}
-command for the language file should be placed after all other
-LilyPond distribution files.}
+use default (Nederlands) note names, it is recommended to select the note name language
+@emph{after} having included all other LilyPond distribution files.}
 
 The available language files and the note names they define are:
 
index 8ac1deda0113e19ca9676a17cbcf573d5e0eeb09..6419b642e6e91b4d217f0142bb328b4938c86076 100644 (file)
 %% this file is alphabetically sorted.
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-%% need SRFI-1 for filter; optargs for lambda*
+%% need SRFI-1 for filter;
+%% optargs for lambda*;
+%% regex for string-match
 #(use-modules (srfi srfi-1)
-             (ice-9 optargs))
+             (ice-9 optargs)
+             (ice-9 regex))
 
 %% TODO: using define-music-function in a .scm causes crash.
 
@@ -360,6 +363,34 @@ label =
                                           'page-label label))))
 
 
+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
+        (begin
+          (if (ly:get-option 'verbose)
+              (ly:message (_ "Using ~a note names...") str))
+          (ly:parser-set-note-names parser (eval-string extract-alist)))
+        (ly:error (_ "Cannot process ~a as a language file.
+Use \\include \"~a\" instead.") file-name file-name))
+     make-void-music))
+
 
 makeClusters =
 #(define-music-function (parser location arg) (ly:music?)