From: Nicolas Sceaux Date: Mon, 22 Jan 2007 21:14:35 +0000 (+0100) Subject: Load the (scm display-lily) module into (lily), instead of from toplevel ly module. X-Git-Tag: release/2.11.14-1~58^2~1^2~2 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=420a38ca5204a99e3b16c2b425c76da189f4a023;p=lilypond.git Load the (scm display-lily) module into (lily), instead of from toplevel ly module. --- diff --git a/input/regression/display-lily-tests.ly b/input/regression/display-lily-tests.ly index 516fbb4acb..5b2b4f198c 100644 --- a/input/regression/display-lily-tests.ly +++ b/input/regression/display-lily-tests.ly @@ -5,7 +5,8 @@ %%% %%% Testing utilities %%% - +#(use-modules (scm display-lily)) +#(memoize-clef-names supported-clefs) #(define (parse-lily-and-compute-lily-string chr port) (let ((lily-string (call-with-output-string (lambda (out) @@ -39,11 +40,7 @@ (if result-info result-info "BUG") input output)) - - - (make-music 'SequentialMusic 'void #t) - - )))) + (make-music 'SequentialMusic 'void #t))))) test = #(define-music-function (parser location result-info strings) (string? pair?) @@ -57,7 +54,6 @@ test = stderr of this run." } - %% Sequential music \test "" ##[ { { a b } { c d } } #] % SequentialMusic \test "" ##[ << { a b } { c d } >> #] % SimultaneousMusic diff --git a/ly/music-functions-init.ly b/ly/music-functions-init.ly index 2f4876b044..431012eaee 100644 --- a/ly/music-functions-init.ly +++ b/ly/music-functions-init.ly @@ -175,9 +175,6 @@ cueDuring = 'quoted-voice-direction dir 'origin location)) -%% The following causes an error with guile 1.6.8 (guile 1.6.7 and 1.8.x are fine) -#(use-modules (scm display-lily)) - displayLilyMusic = #(define-music-function (parser location music) (ly:music?) (newline) diff --git a/scm/define-music-display-methods.scm b/scm/define-music-display-methods.scm index ea72b11476..91be3e28b3 100644 --- a/scm/define-music-display-methods.scm +++ b/scm/define-music-display-methods.scm @@ -900,10 +900,15 @@ Otherwise, return #f." ?unit-count))) ;;; \clef -(define clef-name-alist (map (lambda (name+vals) - (cons (cdr name+vals) - (car name+vals))) - supported-clefs)) +(define clef-name-alist #f) +(define-public (memoize-clef-names clefs) + "Initialize `clef-name-alist', if not already set." + (if (not clef-name-alist) + (set! clef-name-alist + (map (lambda (name+vals) + (cons (cdr name+vals) + (car name+vals))) + clefs)))) (define-extra-display-method ContextSpeccedMusic (expr parser) "If `expr' is a clef change, return \"\\clef ...\" diff --git a/scm/display-lily.scm b/scm/display-lily.scm index df0d04df7d..b7e253566a 100644 --- a/scm/display-lily.scm +++ b/scm/display-lily.scm @@ -11,9 +11,10 @@ ;;; Display methods are stored in the `display-methods' property of each music ;;; type. ;;; -;;; - `display-lily-music' can be called to display a music expression using -;;; LilyPond notation. `music->lily-string' return a string describing a music -;;; expression using LilyPond notation. +;;; - `music->lily-string' return a string describing a music expression using +;;; LilyPond notation. The special variables *indent*, *previous-duration*, +;;; and *force-duration* influence the indentation level and the display of +;;; music durations. ;;; ;;; - `with-music-match' can be used to destructure a music expression, extracting ;;; some interesting music properties. @@ -98,13 +99,6 @@ display method will be called." music-type))) (format #f "%{ expecting a music expression: ~a %}" expr))) -(define*-public (display-lily-music expr parser #:key force-duration) - (parameterize ((*indent* 0) - (*previous-duration* (ly:make-duration 2)) - (*force-duration* force-duration)) - (display (music->lily-string expr parser)) - (newline))) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; Music pattern matching @@ -267,13 +261,13 @@ inside body." ;;; ;;; indentation -(define *indent* (make-parameter 0)) +(define-public *indent* (make-parameter 0)) ;;; set to #t to force duration printing -(define *force-duration* (make-parameter #f)) +(define-public *force-duration* (make-parameter #f)) ;;; last duration found -(define *previous-duration* (make-parameter (ly:make-duration 2))) +(define-public *previous-duration* (make-parameter (ly:make-duration 2))) ;;; Set to #t to force a line break with some kinds of expressions (eg sequential music) (define *force-line-break* (make-parameter #t)) diff --git a/scm/music-functions.scm b/scm/music-functions.scm index 76b8cf2edc..ed93b33fbd 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -186,6 +186,21 @@ Returns `obj'. (newline) obj) +;;; +;;; Scheme music expression --> Lily-syntax-using string translator +;;; +(use-modules (srfi srfi-39) + (scm display-lily)) + +(define*-public (display-lily-music expr parser #:key force-duration) + "Display the music expression using LilyPond syntax" + (memoize-clef-names supported-clefs) + (parameterize ((*indent* 0) + (*previous-duration* (ly:make-duration 2)) + (*force-duration* force-duration)) + (display (music->lily-string expr parser)) + (newline))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-public (shift-one-duration-log music shift dot)