summaryrefslogtreecommitdiff
path: root/ly
diff options
context:
space:
mode:
Diffstat (limited to 'ly')
-rw-r--r--ly/music-functions-init.ly42
-rw-r--r--ly/paper-defaults.ly11
2 files changed, 50 insertions, 3 deletions
diff --git a/ly/music-functions-init.ly b/ly/music-functions-init.ly
index 02519f5361..b910223f68 100644
--- a/ly/music-functions-init.ly
+++ b/ly/music-functions-init.ly
@@ -370,6 +370,9 @@ parenthesize =
(set! (ly:music-property arg 'parenthesize) #t)
arg)
+%% for lambda*
+#(use-modules (ice-9 optargs))
+
parallelMusic =
#(define-music-function (parser location voice-ids music) (list? ly:music?)
"Define parallel music sequences, separated by '|' (bar check signs),
@@ -439,7 +442,7 @@ Example:
voices)
;;
;; check sequence length
- (apply for-each (lambda (. seqs)
+ (apply for-each (lambda* (#:rest seqs)
(let ((moment-reference (ly:music-length (car seqs))))
(for-each (lambda (seq moment)
(if (not (equal? moment moment-reference))
@@ -500,12 +503,45 @@ shiftDurations =
(lambda (x)
(shift-one-duration-log x dur dots)) arg))
-
-%% this is a stub. Write your own to suit the spacing tweak output.
spacingTweaks =
#(define-music-function (parser location parameters) (list?)
+ "Set the system stretch, by reading the 'system-stretch property of
+ the `parameters' assoc list."
+ #{
+ \overrideProperty #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details
+ #$(list (cons 'alignment-extra-space (cdr (assoc 'system-stretch parameters))))
+ #})
+
+%% Parser used to read page-layout file, and then retreive score tweaks.
+#(define page-layout-parser #f)
+
+includePageLayoutFile =
+#(define-music-function (parser location) ()
+ "If page breaks and tweak dump is not asked, and the file
+ <basename>-page-layout.ly exists, include it."
+ (if (not (ly:get-option 'dump-tweaks))
+ (let ((tweak-filename (format #f "~a-page-layout.ly"
+ (ly:parser-output-name parser))))
+ (if (access? tweak-filename R_OK)
+ (begin
+ (ly:message "Including tweak file ~a" tweak-filename)
+ (set! page-layout-parser (ly:clone-parser parser))
+ (ly:parser-parse-string page-layout-parser
+ (format #f "\\include \"~a\""
+ tweak-filename))))))
(make-music 'SequentialMusic 'void #t))
+scoreTweak =
+#(define-music-function (parser location name) (string?)
+ "Include the score tweak, if exists."
+ (if (and page-layout-parser (not (ly:get-option 'dump-tweaks)))
+ (let ((tweak-music (ly:parser-lookup page-layout-parser
+ (string->symbol name))))
+ (if (ly:music? tweak-music)
+ tweak-music
+ (make-music 'SequentialMusic)))
+ (make-music 'SequentialMusic)))
transposedCueDuring =
#(define-music-function
diff --git a/ly/paper-defaults.ly b/ly/paper-defaults.ly
index 2e265c7ab1..44ec0b961e 100644
--- a/ly/paper-defaults.ly
+++ b/ly/paper-defaults.ly
@@ -97,6 +97,17 @@
(word-space . 0.6)))
#(define page-breaking ly:optimal-breaking)
+ #(define page-breaking-wrapper page-breaking-wrapper)
+ #(define page-post-process post-process-pages)
+
+ #(define write-page-layout (ly:get-option 'dump-tweaks))
+ #(define system-maximum-stretch-procedure
+ (lambda (line)
+ (if (stretchable-line? line)
+ (let ((height (line-height line)))
+ (/ (* height height) 80.0))
+ 0.0)))
+
% #(define page-music-height default-page-music-height )
% #(define page-make-stencil default-page-make-stencil )