%%%% You should have received a copy of the GNU General Public License
%%%% along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
-\version "2.16.0"
+\version "2.17.6"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'break-permission 'allow))))
alterBroken =
-#(define-music-function (parser location name property arg)
- (symbol-list? symbol? list?)
- (_i "Override @var{property} for pieces of broken spanner @var{name} with
-values @var{arg}.")
- ;; only apply override if grob is a spanner
- (let ((description
- (assoc-get (last name) all-grob-descriptions)))
- (if (and description
- (member 'spanner-interface
- (assoc-get 'interfaces
- (assoc-get 'meta description))))
- #{
- \override $name $property =
- #(value-for-spanner-piece arg)
- #}
- (begin
- (ly:input-warning location (_ "not a spanner name, `~a'") name)
- (make-music 'SequentialMusic 'void #t)))))
+#(define-music-function (parser location property arg item)
+ (symbol-list-or-symbol? list? symbol-list-or-music?)
+ (_i "Override @var{property} for pieces of broken spanner @var{item}
+with values @var{arg}. @var{item} may either be music in the form of
+a starting spanner event, or a symbol list in the form
+@samp{Context.Grob} or just @samp{Grob}. Iff @var{item} is in the
+form of a spanner event, @var{property} may also have the form
+@samp{Grob.property} for specifying a directed tweak.")
+ (if (ly:music? item)
+ (if (eq? (ly:music-property item 'span-direction) START)
+ #{ \tweak #property #(value-for-spanner-piece arg) #item #}
+ (begin
+ (ly:music-warning item (_ "not a spanner"))
+ item))
+ (let* ((p (check-grob-path item parser location
+ #:default 'Bottom
+ #:min 2
+ #:max 2))
+ (name (and p (second p)))
+ (description
+ (and name (assoc-get name all-grob-descriptions))))
+ (if (and description
+ (member 'spanner-interface
+ (assoc-get 'interfaces
+ (assoc-get 'meta description))))
+ #{
+ \override #item . #property =
+ #(value-for-spanner-piece arg)
+ #}
+ (begin
+ (ly:input-warning location (_ "not a spanner name, `~a'") name)
+ (make-music 'Music))))))
appendToTag =
#(define-music-function (parser location tag more music)
#(define-music-function (parser location notes) (ly:music?)
(_i "Create cross-staff stems")
#{
- \override Stem #'cross-staff = #cross-staff-connect
- \override Flag #'style = #'no-flag
+ \temporary \override Stem #'cross-staff = #cross-staff-connect
+ \temporary \override Flag #'style = #'no-flag
$notes
\revert Stem #'cross-staff
\revert Flag #'style
harmonics played on a fretted instrument by touching the strings at @var{fret}.")
#{
\set harmonicDots = ##t
- \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label (number->string fret))
- \override NoteHead #'Y-extent = #(ly:make-unpure-pure-container ly:grob::stencil-height
+ \temporary \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label (number->string fret))
+ \temporary \override NoteHead #'Y-extent = #(ly:make-unpure-pure-container ly:grob::stencil-height
(lambda (grob start end)
(ly:grob::stencil-height grob)))
- \override NoteHead #'stencil = #(lambda (grob) (ly:grob-set-property! grob 'style 'harmonic-mixed)
+ \temporary \override NoteHead #'stencil = #(lambda (grob) (ly:grob-set-property! grob 'style 'harmonic-mixed)
(ly:note-head::print grob))
$(make-harmonic
(calc-harmonic-pitch (fret->pitch (number->string fret)) music))
given through @var{ratio}.")
#{
\set harmonicDots = ##t
- \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label (ratio->fret ratio))
- \override NoteHead #'Y-extent = #(ly:make-unpure-pure-container ly:grob::stencil-height
+ \temporary \override TabNoteHead #'stencil = #(tab-note-head::print-custom-fret-label (ratio->fret ratio))
+ \temporary \override NoteHead #'Y-extent = #(ly:make-unpure-pure-container ly:grob::stencil-height
(lambda (grob start end)
(ly:grob::stencil-height grob)))
- \override NoteHead #'stencil = #(lambda (grob) (ly:grob-set-property! grob 'style 'harmonic-mixed)
+ \temporary \override NoteHead #'stencil = #(lambda (grob) (ly:grob-set-property! grob 'style 'harmonic-mixed)
(ly:note-head::print grob))
$(make-harmonic
(calc-harmonic-pitch (ratio->pitch ratio) music))
keepWithTag =
-#(define-music-function (parser location tag music) (symbol? ly:music?)
- (_i "Include only elements of @var{music} that are tagged with @var{tag}.")
+#(define-music-function (parser location tag music)
+ (symbol-list-or-symbol? ly:music?)
+ (_i "Include only elements of @var{music} that are either untagged
+or tagged with one of the tags in @var{tag}. @var{tag} may be either
+a single symbol or a list of symbols.")
(music-filter
- (lambda (m)
- (let* ((tags (ly:music-property m 'tags))
- (res (memq tag tags)))
- (or
- (eq? tags '())
- res)))
+ (if (symbol? tag)
+ (lambda (m)
+ (let ((music-tags (ly:music-property m 'tags)))
+ (or (null? music-tags)
+ (memq tag music-tags))))
+ (lambda (m)
+ (let ((music-tags (ly:music-property m 'tags)))
+ (or (null? music-tags)
+ (any (lambda (t) (memq t music-tags)) tag)))))
music))
key =
'element music))
removeWithTag =
-#(define-music-function (parser location tag music) (symbol? ly:music?)
- (_i "Remove elements of @var{music} that are tagged with @var{tag}.")
+#(define-music-function (parser location tag music)
+ (symbol-list-or-symbol? ly:music?)
+ (_i "Remove elements of @var{music} that are tagged with one of the
+tags in @var{tag}. @var{tag} may be either a single symbol or a list
+of symbols.")
(music-filter
- (lambda (m)
- (let* ((tags (ly:music-property m 'tags))
- (res (memq tag tags)))
- (not res)))
+ (if (symbol? tag)
+ (lambda (m)
+ (not (memq tag (ly:music-property m 'tags))))
+ (lambda (m)
+ (let ((music-tags (ly:music-property m 'tags)))
+ (or (null? music-tags)
+ (not (any (lambda (t) (memq t music-tags)) tag))))))
music))
resetRelativeOctave =
(_i "Set the system stretch, by reading the 'system-stretch property of
the `parameters' assoc list.")
#{
- \overrideProperty #"Score.NonMusicalPaperColumn"
+ \overrideProperty Score.NonMusicalPaperColumn
#'line-break-system-details
#(list (cons 'alignment-extra-space (cdr (assoc 'system-stretch parameters)))
(cons 'system-Y-extent (cdr (assoc 'system-Y-extent parameters))))