display-lily-init call.
* ly/music-functions-init.ly (displayLilyMusic): move
display-lily-init call at top level, so that the user should not
have to call it.
* scm/define-music-display-methods.scm (note-name->lily-string):
retrieve note names directly from pitchnames using new function `rassoc'.
(display-lily-init): note names list construction removed.
+2005-08-16 Nicolas Sceaux <nicolas.sceaux@free.fr>
+
+ * input/no-notation/display-lily-tests.ly: delete
+ display-lily-init call.
+
+ * ly/music-functions-init.ly (displayLilyMusic): move
+ display-lily-init call at top level, so that the user should not
+ have to call it.
+
+ * scm/define-music-display-methods.scm (note-name->lily-string):
+ retrieve note names directly from pitchnames using new function `rassoc'.
+ (display-lily-init): note names list construction removed.
+
2005-08-16 Han-Wen Nienhuys <hanwen@xs4all.nl>
* Documentation/topdocs/NEWS.tely (Top): add entry for percent
-\version "2.7.2"
+\version "2.7.6"
#(use-modules (srfi srfi-13)
(ice-9 format))
#(define (lily-string->markup str)
(make-column-markup (string-split str #\NewLine)))
-initTest = #(def-music-function (parser location) ()
- ;; Before using display-lily-music, it must be
- ;; inited using display-lily-init
- (display-lily-init parser)
- (set! test-number 0)
- (make-music 'SequentialMusic))
-
test = #(def-music-function (parser location result-info strings) (string? pair?)
(display-lily-init parser)
(let ((input (car strings))
}
}
{
- \initTest
%% Sequential music
\test #"" ##[ { { a b } { c d } } #] % SequentialMusic
\test #"" ##[ << { a b } { c d } >> #] % SimultaneousMusic
%#(use-modules (scm display-lily))invalid module name for use-syntax ((srfi srfi-39))
#(use-modules (scm display-lily))
+#(display-lily-init parser)
displayLilyMusic =
#(def-music-function (parser location music) (ly:music?)
- (display-lily-init parser)
(display-lily-music music)
music)
(define-module (scm display-lily))
-
;;; `display-lily-init' must be called before using `display-lily-music'. It
;;; takes a parser object as an argument.
(define-public (display-lily-init parser)
(*parser* parser)
- (set-note-names! (ly:parser-lookup (*parser*) 'pitchnames))
#t)
;;;
;;;
;;; pitch names
;;;
-(define note-names '())
-(define (set-note-names! pitchnames)
- (set! note-names (map-in-order (lambda (name+lypitch)
- (cons (cdr name+lypitch) (car name+lypitch)))
- pitchnames)))
+;; It is a pity that there is no rassoc in Scheme.
+(define* (rassoc item alist #:optional (test equal?))
+ (do ((alist alist (cdr alist))
+ (result #f result))
+ ((or result (null? alist)) result)
+ (if (and (car alist) (test item (cdar alist)))
+ (set! result (car alist)))))
(define (note-name->lily-string ly-pitch)
;; here we define a custom pitch= function, since we do not want to
(define (pitch= pitch1 pitch2)
(and (= (ly:pitch-notename pitch1) (ly:pitch-notename pitch2))
(= (ly:pitch-alteration pitch1) (ly:pitch-alteration pitch2))))
- (let ((result (assoc ly-pitch note-names pitch=))) ;; assoc from srfi-1
+ (let ((result (rassoc ly-pitch (ly:parser-lookup (*parser*) 'pitchnames) pitch=)))
(if result
- (cdr result)
+ (car result)
#f)))
(define (octave->lily-string pitch)