]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/parser.yy (context_def_mod): remove \consistsend
authorhanwen <hanwen>
Tue, 27 Jul 2004 21:48:58 +0000 (21:48 +0000)
committerhanwen <hanwen>
Tue, 27 Jul 2004 21:48:58 +0000 (21:48 +0000)
* lily/context-def.cc (instantiate): use Translator::must_be_last
to determine engraver order.

* lily/translator.cc (must_be_last): new function

* scripts/convert-ly.py (conv): rule.

ChangeLog
lily/axis-group-engraver.cc
lily/context-def.cc
lily/include/translator.hh
lily/my-lily-lexer.cc
lily/parser.yy
lily/translator.cc
ly/engraver-init.ly
scripts/convert-ly.py

index ee43b22df734092f9a38b87c55ae94242a5e6b0e..51ef054ab02c84bcdeb9ff3c0a8a75c4158dcb4f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2004-07-27  Han-Wen Nienhuys   <hanwen@xs4all.nl>
+
+       * lily/parser.yy (context_def_mod): remove \consistsend
+
+       * lily/context-def.cc (instantiate): use Translator::must_be_last
+       to determine engraver order.
+
+       * lily/translator.cc (must_be_last): new function
+
+       * scripts/convert-ly.py (conv): rule.
+
+       * lily/bar-line.cc (print): return '() for height == 0.0 too.
+
 2004-07-27  Heikki Junes  <hjunes@cc.hut.fi>
 
        * input/regression/{stanza-number,volta-multi-staff}.ly: fix docs.
index ffd0dd3a0ed170f5e5f67fad235fef8d1723dc94..c28584909f16745e782a86819e1a623b6971ccdd 100644 (file)
@@ -35,6 +35,7 @@ public:
 
 Axis_group_engraver::Axis_group_engraver ()
 {
+  must_be_last_ = true;
   staffline_ = 0;
 }
 
index e9c7f4da3c8785b4794a7ad4b7535443f7b12876..ba9f5fec1756f34c3ff018b3e113e9915232311b 100644 (file)
@@ -205,7 +205,6 @@ SCM
 Context_def::get_translator_names (SCM user_mod) const
 {
   SCM l1 = SCM_EOL;
-  SCM l2 = SCM_EOL;
 
   SCM mods = scm_reverse_x (scm_list_copy (translator_mods_), user_mod);
   
@@ -219,15 +218,13 @@ Context_def::get_translator_names (SCM user_mod) const
       
       if (ly_symbol2scm ("consists") == tag)
        l1 = scm_cons (arg, l1);
-      else if (ly_symbol2scm ("consists-end") == tag)
-       l2 = scm_cons (arg, l2);
       else if (ly_symbol2scm ("remove") == tag)
        {
          l1 = scm_delete_x (arg, l1);
-         l2 = scm_delete_x (arg, l2);
        }
     }
-  return scm_append_x (scm_list_2 (l1, l2));
+
+  return l1;
 }
 
 SCM
@@ -278,9 +275,9 @@ Context_def::instantiate (SCM ops)
 
   Translator *g = get_translator (translator_group_type_);
   g = g->clone ();
-  
-  g->simple_trans_list_ = SCM_EOL;
 
+  SCM trans_list = SCM_EOL;
+  
   for (SCM s = trans_names; ly_c_pair_p (s) ; s = ly_cdr (s))
     {
       Translator *t = get_translator (ly_car (s));
@@ -290,12 +287,26 @@ Context_def::instantiate (SCM ops)
        {
          Translator *tr = t->clone ();
          SCM str = tr->self_scm ();
-         g->simple_trans_list_ = scm_cons (str, g->simple_trans_list_);
+
+         if (tr->must_be_last ())
+           {
+             SCM cons = scm_cons (str, SCM_EOL);
+             trans_list = ly_c_pair_p (trans_list)
+               ? scm_set_cdr_x (scm_last_pair (trans_list), cons)
+               : cons;
+           }
+         else
+           {
+             trans_list = scm_cons (str, trans_list);
+           }
+
          tr->daddy_context_ = tg;
          scm_gc_unprotect_object (str);
        }
     }
   
+  g->simple_trans_list_ =  trans_list;
+
   tg->implementation_ = g->self_scm ();
   if (dynamic_cast<Engraver*> (g))
     g->simple_trans_list_ = filter_performers (g->simple_trans_list_);
index 1050cac31af4aacb15fdaaa0e9254e46ad6e1713..9d6996d6d80cb2ea0f7fac37a5e393ccafa67359 100644 (file)
@@ -35,8 +35,13 @@ public:                                                      \
 class Translator
 {
   void init ();
-  
+
+protected:
+  bool must_be_last_;
+
 public:
+  bool must_be_last () const;
+  
   Context * context () const { return daddy_context_; }
   
   Translator (Translator const &);
@@ -56,6 +61,7 @@ public:
   
   Score_context * get_score_context () const;
   Global_context * get_global_context () const;
+
   
   TRANSLATOR_DECLARATIONS(Translator);
   DECLARE_SMOBS (Translator, dummy);
index 374a078390db5bc698d06101c26f08db1299c4df..d878327015158441f5686425683d5ab1610c4f57 100644 (file)
@@ -36,7 +36,6 @@ static Keyword_ent the_key_tab[] = {
   {"chords", CHORDS},
   {"clef", CLEF},
   {"consists", CONSISTS},
-  {"consistsend", CONSISTSEND},
   {"context", CONTEXT},
   {"default", DEFAULT},
   {"denies", DENIES},
index cfd64db5256cc785e49550897ec03b6037f8443b..1aff96646764f3bf57949bd4e2c1b04e42262215 100644 (file)
@@ -257,7 +257,6 @@ or
 %token CLEF
 %token COMMANDSPANREQUEST
 %token CONSISTS
-%token CONSISTSEND
 %token CONTEXT
 %token DEFAULT
 %token DENIES
@@ -1276,8 +1275,7 @@ property_operation:
        ;
 
 context_def_mod:
-       CONSISTSEND { $$ = ly_symbol2scm ("consists-end"); }
-       | CONSISTS { $$ = ly_symbol2scm ("consists"); }
+       CONSISTS { $$ = ly_symbol2scm ("consists"); }
        | REMOVE { $$ = ly_symbol2scm ("remove"); }
 
        | ACCEPTS { $$ = ly_symbol2scm ("accepts"); }
index 485e22b29af528baf46dbb4b216f69deddfda2b9..17c9ab38c250e6a30476b577b6e69c4e10905beb 100644 (file)
@@ -24,6 +24,7 @@ Translator::~Translator ()
 void
 Translator::init ()
 {
+  must_be_last_ = false;
   self_scm_ = SCM_EOL;
   simple_trans_list_ = SCM_BOOL_F;
   daddy_context_ =0;
@@ -46,9 +47,10 @@ Translator::Translator ()
   init ();
 }
 
-Translator::Translator (Translator const &)
+Translator::Translator (Translator const &src)
 {
   init ();
+  must_be_last_ = src.must_be_last_;
 }
 
 bool
@@ -157,3 +159,10 @@ Translator::static_translator_description ()const
 IMPLEMENT_SMOBS (Translator);
 IMPLEMENT_DEFAULT_EQUAL_P (Translator);
 IMPLEMENT_TYPE_P (Translator,"ly:translator?");
+
+bool
+Translator::must_be_last () const
+{
+  return must_be_last_;
+}
+
index a28944421b348f8bd9ea6975802c698a2f6a5d14..d86a92ee18262755fa5d1e2aa110f8518fd64849 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.3.2"
+\version "2.3.8"
 
 \context {
     \name Global
@@ -38,7 +38,7 @@
        \consists "Piano_pedal_engraver"
        \consists "Instrument_name_engraver"
        \consists "String_number_engraver"
-       \consistsend "Axis_group_engraver"
+       \consists "Axis_group_engraver"
 
        minimumVerticalExtent = #'(-6 . 6)
        extraVerticalExtent = ##f
     \consists "Staff_symbol_engraver"
     \consists "Ledger_line_engraver" 
     \consists "Instrument_name_engraver"
-    \consistsend "Axis_group_engraver"
+    \consists "Axis_group_engraver"
     \accepts "Voice"
     \description  "
     A context like @code{Staff} but for printing rhythms.  Pitches are
@@ -313,7 +313,7 @@ connected vertically.  "
 
 \context{
     \type "Engraver_group_engraver"
-    \consistsend "Hara_kiri_engraver"
+    \consists "Hara_kiri_engraver"
     minimumVerticalExtent = #'(-1.2 . 2.4)
     extraVerticalExtent = ##f
     verticalExtent = ##f
@@ -336,7 +336,7 @@ printing of a single line of lyrics.  "
 \context {
     \type "Engraver_group_engraver"
     \name NoteNames
-    \consistsend "Axis_group_engraver"
+    \consists "Axis_group_engraver"
 
     minimumVerticalExtent = ##f
     extraVerticalExtent = ##f
@@ -362,7 +362,7 @@ printing of a single line of lyrics.  "
     \consists "Separating_line_group_engraver"
     \consists "Chord_name_engraver"
     \consists "Skip_event_swallow_translator"
-    \consistsend "Hara_kiri_engraver"
+    \consists "Hara_kiri_engraver"
     
     voltaOnThisStaff = ##f
     minimumVerticalExtent = #'(0 . 2.5)
@@ -375,7 +375,7 @@ printing of a single line of lyrics.  "
 RemoveEmptyStaffContext= \context {
     \Staff
     \remove "Axis_group_engraver"
-    \consistsend "Hara_kiri_engraver"
+    \consists "Hara_kiri_engraver"
     \override Beam #'auto-knee-gap = #'()
 }
 
@@ -576,7 +576,7 @@ EasyNotation = \context {   % TODO: why \context override?
        \consists "Skip_event_swallow_translator"
        \consists "Separating_line_group_engraver"
        
-       \consistsend "Hara_kiri_engraver"
+       \consists "Hara_kiri_engraver"
 }
 
 \context {
index 965d6d6978de39bbf9e8d75bbbab1ca4208132b2..9ea4fcd27ed329c21be2dc0a9dc4ddabbd8f73c6 100644 (file)
@@ -2115,6 +2115,16 @@ def conv (str):
 conversions.append (((2, 3, 4), conv,
                     '''remove \\notes'''))
 
+
+
+def conv (str):
+       str = re.sub (r'\\consistsend', '\\consists', str)
+       return str
+
+conversions.append (((2, 3, 8), conv,
+                    '''remove \\consistsend'''))
+
+
 ################################
 #      END OF CONVERSIONS      
 ################################