From: hanwen Date: Mon, 16 Feb 2004 11:38:15 +0000 (+0000) Subject: (find_create_context): go to Score if it exists. X-Git-Tag: release/2.1.27~52 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=cf786ba0f6cc4f8292524539f958de11c6574287;p=lilypond.git (find_create_context): go to Score if it exists. --- diff --git a/ChangeLog b/ChangeLog index ce1b4a6bdc..0d24b11d59 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2004-02-16 Han-Wen Nienhuys + * lily/context.cc (find_create_context): go to Score if it exists. + * lily/context-scheme.cc: new file. * lily/score-translator.cc (get_output): new file. diff --git a/Documentation/user/cheatsheet.itely b/Documentation/user/cheatsheet.itely index b39f168d15..b47e200e30 100644 --- a/Documentation/user/cheatsheet.itely +++ b/Documentation/user/cheatsheet.itely @@ -230,10 +230,9 @@ a\> a a\! @tab printing lyrics @tab twinkle -@c cheating .. -@c@li lypond[fragment] -@c \lyrics \new Lyrics { twinkle } -@c @end lilypond +@lilypond[fragment] +\lyrics \new Lyrics { twinkle } +@end lilypond @item @code{twin -- kle} @tab lyric hyphen diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index 165fc001cc..03c1784645 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -3525,11 +3525,11 @@ The complete example is shown here: g2 e4 a2 f4 g2. } \lyrics << \lyricsto "duet" \new Lyrics { \set stanza = "B." - \set vocName = "Bert" + \set vocNam = "Bert" Hi, my name is bert. } \lyricsto "duet" \new Lyrics { \set stanza = "E." - \set vocName = "Ernie" + \set vocNam = "Ernie" Ooooo, ch\'e -- ri, je t'aime. } >> >> diff --git a/lily/context-def.cc b/lily/context-def.cc index 6fcee6e2de..c976fb6325 100644 --- a/lily/context-def.cc +++ b/lily/context-def.cc @@ -315,7 +315,9 @@ Context_def::to_alist () const l = gh_cons (gh_cons (ly_symbol2scm ("accepts"), get_accepted (SCM_EOL)), l); l = gh_cons (gh_cons (ly_symbol2scm ("property-ops"), property_ops_), l); l = gh_cons (gh_cons (ly_symbol2scm ("context-name"), context_name_), l); - l = gh_cons (gh_cons (ly_symbol2scm ("group-type"), translator_group_type_), l); + + if (gh_symbol_p (translator_group_type_)) + l = gh_cons (gh_cons (ly_symbol2scm ("group-type"), translator_group_type_), l); return l; } diff --git a/lily/context.cc b/lily/context.cc index df3766b82a..6dff7f838b 100644 --- a/lily/context.cc +++ b/lily/context.cc @@ -118,6 +118,14 @@ Context* Context::find_create_context (SCM n, String id, SCM operations) { + /* + Don't create multiple score contexts. + */ + if (dynamic_cast (this) + && dynamic_cast (this)->get_score_context ()) + return get_score_context ()->find_create_context (n, id, operations); + + Context * existing = find_existing_context (n,id); if (existing) return existing; @@ -377,17 +385,8 @@ Context::print_smob (SCM s, SCM port, scm_print_state *) scm_puts (" ", port); - scm_display (sc->implementation_, port); - -#if 0 - Translator * tr = unsmob_translator (sc->implementation_); - if (Translator_group *tg = dynamic_cast (tr)) - scm_display (tg->get_simple_trans_list (), port); -#endif - - /* - don't try to print properties, that is too much hassle. - */ + + scm_display (sc->context_list_, port); scm_puts (" >", port); return 1; diff --git a/lily/recording-group-engraver.cc b/lily/recording-group-engraver.cc index 2a0970b509..70b7f79f27 100644 --- a/lily/recording-group-engraver.cc +++ b/lily/recording-group-engraver.cc @@ -7,6 +7,7 @@ */ +#include "context.hh" #include "engraver-group-engraver.hh" #include "protected-scm.hh" @@ -57,7 +58,7 @@ Recording_group_engraver::finalize () SCM proc = get_property ("recordEventSequence"); if (gh_procedure_p (proc)) - scm_call_2 (proc, self_scm(), gh_cdr (accumulator_)); + scm_call_2 (proc, daddy_context_->self_scm(), gh_cdr (accumulator_)); accumulator_ = SCM_EOL; } diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index c6748a3452..55dd5ad32e 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -139,7 +139,7 @@ Score_engraver::one_time_step () { if (!to_boolean (get_property ("skipTypesetting"))) { - recurse_down_engravers (daddy_context_, &Engraver::process_music, false); + recurse_down_engravers (daddy_context_, &Engraver::process_music, true); recurse_down_engravers (daddy_context_, &Engraver::do_announces, true); } diff --git a/lily/translator-scheme.cc b/lily/translator-scheme.cc index 6df422ae5f..ab010a0679 100644 --- a/lily/translator-scheme.cc +++ b/lily/translator-scheme.cc @@ -34,7 +34,7 @@ LY_DEFINE(ly_translator_description, "Return an alist of properties of translator @var{me}.") { Translator *tr =unsmob_translator (me); - SCM_ASSERT_TYPE (tr, me, SCM_ARG1, __FUNCTION__, "Context"); + SCM_ASSERT_TYPE (tr, me, SCM_ARG1, __FUNCTION__, "Translator"); return tr->translator_description (); } diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 08e3ff8d67..2cc1c0b46b 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -3,8 +3,8 @@ \translator { \name Global - % nothing else needed -- tweaks are ignored anyway. \accepts Score +\description "Hard coded entry point for LilyPond. Cannot be tuned." } % diff --git a/ly/performer-init.ly b/ly/performer-init.ly index 5538b8324b..26b04348f6 100644 --- a/ly/performer-init.ly +++ b/ly/performer-init.ly @@ -15,6 +15,7 @@ \translator { \name Global \accepts Score +\description "Hard coded entry point for LilyPond. Cannot be tuned." } \translator { \StaffContext diff --git a/scm/document-translation.scm b/scm/document-translation.scm index b7bf4b09db..f1e509eeb8 100644 --- a/scm/document-translation.scm +++ b/scm/document-translation.scm @@ -82,9 +82,11 @@ (lambda (x) (let* ((context (cdr (assoc 'context-name x))) + (group (assq-ref x 'group-type)) (consists (append - (list - (cdr (assoc 'group-type x))) + (if group + (list group) + '()) (cdr (assoc 'consists x)) )) @@ -185,8 +187,11 @@ (cdr desc-handle) "(not documented)")) (accepts (cdr (assoc 'accepts context-desc))) + (group (assq-ref context-desc 'group-type)) + (consists (append - (list (cdr (assoc 'group-type context-desc))) + (if group (list group) + '()) (cdr (assoc 'consists context-desc)) )) (props (cdr (assoc 'property-ops context-desc))) @@ -225,19 +230,22 @@ (map document-engraver-by-name consists)) )))) -(define (engraver-grobs grav) +(define (engraver-grobs grav) (let* ((eg (if (symbol? grav) (find-engraver-by-name grav) grav))) - (if (eq? eg #f) '() (map symbol->string (cdr (assoc 'grobs-created (ly:translator-description eg))))) )) (define (context-grobs context-desc) - (let* ((consists (append - (list (cdr (assoc 'group-type context-desc))) + (let* ( + (group (assq-ref context-desc 'group-type)) + (consists (append + (if group + (list group) + '()) (cdr (assoc 'consists context-desc)) )) (grobs (apply append