]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/engraver-init.ly
Fix quadratic memory consumption for accidentals.
[lilypond.git] / ly / engraver-init.ly
index 8414cbc7efdaf0b4e9f4e6dbb8065d2b4be20040..701ca5209257859f52effd6538893fffa0ee588c 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 1996--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%%%% Copyright (C) 1996--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %%%%                          Jan Nieuwenhuizen <janneke@gnu.org>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
 %%%% 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.12.0"
+\version "2.13.10"
 
 \context {
   \name "Global"
@@ -34,9 +34,7 @@
   \description "A context for displaying fret diagrams."
 
   \consists "Fretboard_engraver"
-  \consists "Rest_swallow_translator"
   \consists "Output_property_engraver"
-  \consists "Skip_event_swallow_translator"
   \consists "Hara_kiri_engraver"
   \consists "Separating_line_group_engraver"
   \consists "Font_size_engraver"
@@ -73,7 +71,6 @@
   \consists "Piano_pedal_engraver"
   \consists "Piano_pedal_align_engraver"
   \consists "Instrument_name_engraver"
-  \consists "String_number_engraver"
   \consists "Axis_group_engraver"
   \consists "Figured_bass_engraver"
   \consists "Figured_bass_position_engraver"
@@ -81,7 +78,7 @@
 
   localKeySignature = #'()
   createSpacing = ##t
-  ignoreFiguredBassRest = ##t
+  ignoreFiguredBassRest = ##f
 
   %% explicitly set instrument, so we don't get
   %% weird effects when doing instrument names for
   \remove "Ottava_spanner_engraver"
   \remove "Key_engraver"
   \remove "Piano_pedal_engraver"
-  \remove "String_number_engraver"
 
   \description "Handles typesetting for percussion."
 
@@ -256,7 +252,6 @@ multiple voices on the same staff."
   \consists "Tuplet_engraver"
   \consists "Grace_engraver"
   \consists "Instrument_switch_engraver"
-  \consists "Skip_event_swallow_translator"
 }
 
 \context{
@@ -289,8 +284,6 @@ multiple voices on the same staff."
   \remove "Fingering_engraver"
 
   \remove "Cluster_spanner_engraver"
-
-  \consists "Skip_event_swallow_translator"
 }
 
 \context{
@@ -376,7 +369,6 @@ a collection of staves, with a bracket in front and spanning bar lines."
   \consists "Dynamic_align_engraver"
   \consists "Text_engraver"
   \consists "Text_spanner_engraver"
-  \consists "Skip_event_swallow_translator"
   \consists "Axis_group_engraver"
 
   pedalSustainStrings = #'("Ped." "*Ped." "*")
@@ -384,6 +376,7 @@ a collection of staves, with a bracket in front and spanning bar lines."
   \override VerticalAxisGroup #'staff-affinity = #CENTER
   \override VerticalAxisGroup #'inter-staff-spacing = #'((space . 5) (padding . 0.5))
   \override TextScript #'font-shape = #'italic
+  \override DynamicLineSpanner #'Y-offset = #0
 
   \description "Holds a single line of dynamics, which will be
 centered between the staves surrounding this context."
@@ -405,7 +398,6 @@ printing of a single line of lyrics."
   \consists "Hyphen_engraver"
   \consists "Stanza_number_engraver"
   \consists "Instrument_name_engraver"
-  \consists "Skip_event_swallow_translator"
   \consists "Font_size_engraver"
   \consists "Hara_kiri_engraver"
 
@@ -413,9 +405,11 @@ printing of a single line of lyrics."
   \override VerticalAxisGroup #'remove-empty = ##t
   \override VerticalAxisGroup #'staff-affinity = #UP
   \override VerticalAxisGroup #'inter-staff-spacing = #'((space . 5.5) (stretchability . 1) (padding . 0.5))
-  \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 0) (stretchability . 0) (padding . 0.2))
+  \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 0)
+                                                             (stretchability . 0)
+                                                             (padding . 0.2)
+                                                             (minimum-distance . 2.8))
   \override VerticalAxisGroup #'non-affinity-spacing #'padding = #1.0
-  \override SeparationItem #'padding = #0.2
   \override InstrumentName #'self-alignment-Y = ##f
 
   %% sync with define-grobs.scm ;
@@ -436,9 +430,6 @@ printing of a single line of lyrics."
   % FIXME: not sure what the default should be here.
   \override VerticalAxisGroup #'staff-affinity = #DOWN
 
-
-  \consists "Rest_swallow_translator"
-  \consists "Skip_event_swallow_translator"
   \consists "Tie_engraver"
   \consists "Note_name_engraver"
   \consists "Separating_line_group_engraver"
@@ -449,11 +440,9 @@ printing of a single line of lyrics."
   \name ChordNames
   \description "Typesets chord names."
 
-  \consists "Rest_swallow_translator"
   \consists "Output_property_engraver"
   \consists "Separating_line_group_engraver"
   \consists "Chord_name_engraver"
-  \consists "Skip_event_swallow_translator"
   \consists "Hara_kiri_engraver"
 %  \consists "Note_spacing_engraver"
   \override VerticalAxisGroup #'remove-first = ##t
@@ -464,22 +453,14 @@ printing of a single line of lyrics."
 }
 
 
-RemoveEmptyStaffContext= \context {
-  \Staff
+RemoveEmptyStaves = \with {
   \remove "Axis_group_engraver"
+  \remove "Hara_kiri_engraver"
   \consists "Hara_kiri_engraver"
   \override Beam #'auto-knee-gap = #'()
   \override VerticalAxisGroup #'remove-empty = ##t
 }
 
-AncientRemoveEmptyStaffContext = \context {
-%% why not add by default?
-
-  \RemoveEmptyStaffContext
-  \accepts "VaticanaVoice"
-  \accepts "GregorianTranscriptionVoice"
-  \accepts "MensuralVoice"
-}
 
 \context {
   \type "Score_engraver"
@@ -540,6 +521,7 @@ automatically when an output definition (a @code{\score} or
 
 
   noteToFretFunction = #determine-frets
+  predefinedDiagramTable = ##f
   soloText = #"Solo"
   soloIIText = #"Solo II"
   aDueText = #"a2"
@@ -613,6 +595,7 @@ automatically when an output definition (a @code{\score} or
 %% chord names:
   chordNameFunction = #ignatzek-chord-names
   majorSevenSymbol = #whiteTriangleMarkup
+  chordNameLowercaseMinor = ##f
   chordNameSeparator = #(make-simple-markup  "/")
   chordNameExceptions = #ignatzekExceptions
   chordNoteNamer = #'()
@@ -630,10 +613,11 @@ automatically when an output definition (a @code{\score} or
   stringOneTopmost = ##t
   highStringOne = ##t
 
-%% One may change the strings tuning as following :
-%% The lenght of the list must be equal to the number of string
+%% One may change the string tunings as follows :
+%% The length of the list must be equal to the number of strings
   stringTunings = #guitar-tuning
   tablatureFormat = #fret-number-tablature-format
+  tabStaffLineLayoutFunction = #tablature-position-on-lines
 
 %%
   figuredBassFormatter = #format-bass-figure
@@ -668,7 +652,9 @@ automatically when an output definition (a @code{\score} or
     ;; need this, as stanza numbers are items, and appear only once.
     stanza-number-interface
   )
-  quotedEventTypes = #'(
+  % \quoteDuring is supposed to quote everything, cueDuring only the essentials
+  quotedEventTypes = #'(StreamEvent)
+  quotedCueEventTypes = #'(
     note-event
     rest-event
     tie-event
@@ -691,8 +677,6 @@ automatically when an output definition (a @code{\score} or
   \description "A context for printing a figured bass line."
 
   \consists "Figured_bass_engraver"
-  \consists "Note_swallow_translator"
-  \consists "Skip_event_swallow_translator"
   \consists "Separating_line_group_engraver"
   \consists "Hara_kiri_engraver"
 
@@ -710,7 +694,6 @@ automatically when an output definition (a @code{\score} or
 %% don't want to route anything out of here:
   \alias "Staff"
   \alias "Voice"
-  \consists "Swallow_engraver"
   \description "Silently discards all musical information given to this
 context."
 }
@@ -808,7 +791,6 @@ contexts and handles the line spacing, the tablature clef etc. properly."
   \remove "Accidental_engraver"
   \remove "Key_engraver"
 
-  \remove "String_number_engraver"
   \remove "Ottava_spanner_engraver"
   %% the clef handler
   \override Clef #'stencil = #clef::print-modern-tab-if-set
@@ -838,6 +820,8 @@ of Editio Vaticana."
   \remove "Stem_engraver"
   \remove "Ligature_bracket_engraver"
   \consists "Vaticana_ligature_engraver"
+  \remove "Text_spanner_engraver"
+  \consists "Episema_engraver"
 
   %% Set default head for notes outside of \[ \].
   \override NoteHead #'style = #'vaticana.punctum
@@ -848,15 +832,6 @@ of Editio Vaticana."
 
   %% There are no beams in Gregorian Chant notation.
   autoBeaming = ##f
-
-  %% Prepare TextSpanner for \episem{Initium|Finis} use.
-  %%
-  %% FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is
-  %% required to force the articulation signs being placed vertically
-  %% tightly to the correpsonding note heads.
-  %%
-  \override TextSpanner #'style = #'line
-  \override TextSpanner #'padding = #-0.1
 }
 
 \context {
@@ -905,6 +880,7 @@ of Editio Vaticana."
   \Voice
   \name "GregorianTranscriptionVoice"
   \alias "Voice"
+  \consists "Episema_engraver"
 
   %% Removing ligature bracket engraver without replacing it by some
   %% other ligature engraver would cause a "Junking event: `LigatureEvent'"
@@ -919,18 +895,6 @@ of Editio Vaticana."
   %% There are no beams in Gregorian Chant notation.
   autoBeaming = ##f
 
-  %% Prepare TextSpanner for \episem{Initium|Finis} use.
-  %%
-  %% N.B.: dash-fraction MUST be unset; otherwise, TextSpanner will
-  %% always produce dashed lines, regardless of the style property.
-  %%
-  %% FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is
-  %% required to force the articulation signs being placed vertically
-  %% tightly to the correpsonding note heads.
-  %%
-  \override TextSpanner #'dash-fraction = #'()
-  \override TextSpanner #'style = #'line
-  \override TextSpanner #'padding = #-0.1
 }
 
 \context {
@@ -1012,9 +976,34 @@ accommodated for typesetting a piece in mensural style."
 }
 
 
-RemoveEmptyRhythmicStaffContext= \context {
+%% Keep the old definitions in here for compatibility (they erase previous
+%% settings to the corresponding context!).
+%% For new scores, one should simply insert the \RemoveEmptyStaves settings
+%% into the desired context. That's just as easy, requires only one line more
+%% (the \*Staff), but preserves previous context mods.
+%% TODO: DEPRECATED_2.13.17, remove at some point in the future
+RemoveEmptyStaffContext = \context {
+  \Staff
+  \RemoveEmptyStaves
+}
+
+AncientRemoveEmptyStaffContext = \context {
+  \VaticanaStaff
+  \RemoveEmptyStaves
+}
+
+RemoveEmptyDrumStaffContext = \context {
+  \DrumStaff
+  \RemoveEmptyStaves
+}
+
+RemoveEmptyRhythmicStaffContext = \context {
   \RhythmicStaff
-  \remove "Axis_group_engraver"
-  \override VerticalAxisGroup #'remove-empty = ##t
-  \consists "Hara_kiri_engraver"
+  \RemoveEmptyStaves
 }
+
+RemoveEmptyTabStaffContext = \context {
+  \TabStaff
+  \RemoveEmptyStaves
+}
+