]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/lilypond into
authorJohn Gourlay <john@weathervanefarm.net>
Thu, 26 May 2016 22:16:10 +0000 (18:16 -0400)
committerJohn Gourlay <john@weathervanefarm.net>
Thu, 26 May 2016 22:16:10 +0000 (18:16 -0400)
dev/johngourlay/issue-4751 to bring the development branch up to date.

15 files changed:
Documentation/cs/learning/common-notation.itely
Documentation/de/notation/rhythms.itely
Documentation/fr/learning/common-notation.itely
Documentation/fr/notation/cheatsheet.itely
Documentation/fr/notation/input.itely
Documentation/fr/notation/rhythms.itely
Documentation/misc/announce-v2.0.html
Documentation/music-glossary.tely
lily/include/scheme-engraver.hh
lily/include/translator-group.hh
lily/scheme-engraver.cc
lily/translator-group.cc
ly/articulate.ly
mf/feta-flags.mf
vim/lilypond-ftplugin.vim

index 188dae02d4b8a02c119f93f68dc0ba586fcac756..f9f4f68ae7266435c22eb821f408bf7f75200f26 100644 (file)
@@ -558,7 +558,7 @@ Slovníček: @rglos{grace notes}, @rglos{acciaccatura},
 
 Melodické ozdoby se zadávají příkazem @code{\grace}, ačkoli se také dají
 vytvářet uvozením hudebního výrazu příkazem @code{\appoggiatura} (dlouhý
-příraz, prodleva) a @code{\acciaccatura} (příraz, krátká appogiatura).
+příraz, prodleva) a @code{\acciaccatura} (příraz, krátká appoggiatura).
 
 @lilypond[verbatim,quote]
 \relative {
index a87acd3a5d04ab6e2c6e0e205f8b8ccad092ba4b..8e5c266ae09b2c310060b9e9d91b14f17434bab4 100644 (file)
@@ -3349,7 +3349,7 @@ Referenz der Interna:
 @funindex \grace
 @funindex \slashedGrace
 @funindex \acciaccatura
-@funindex \appoggiature
+@funindex \appoggiatura
 
 @cindex Verzierungen
 @cindex Ziernoten
@@ -3370,7 +3370,7 @@ keine logische Zeit im Takt ein.
 
 Es gibt drei Arten von Verzierungen:
 den Vorschlag (engl. acciaccatura), eine angebundene Verzierungsnote
-mit einem Schrägstrich durch den Hals, und den Vorhalt (engl. appogiatura),
+mit einem Schrägstrich durch den Hals, und den Vorhalt (engl. appoggiatura),
 welcher den Wert der Hauptnote um seinen eigenen Wert verkürzt und
 ohne Schrägstrich notiert wird.  Man kann einen Vorschlag auch mit
 Schrägstrich durch den Hals, aber ohne Legatobogen notieren.  Diese
index 43b221956b17bcb1deeadd4bcdd6b7a8eaf949ff..909ec9b7abc373b9ad715d420065a10e7f540239 100644 (file)
@@ -715,7 +715,7 @@ que deux ; un @notation{triolet} portera donc une fraction de 3/2.
 Glossaire musicologique :
 @rglosnamed{grace notes,ornements},
 @rglosnamed{acciaccatura,acciaccature},
-@rglosnamed{appoggiatura,appogiature}.
+@rglosnamed{appoggiatura,appoggiature}.
 
 Des @notation{notes d'ornement} s'obtiennent en appliquant la commande
 @code{\grace}, @code{\appoggiatura} ou @code{\acciaccatura} à une
index 37bd09c7650038d6c2b442cef6bb8e58790db50a..b147dcd852458c978c5c408b9458b07d6bbbe623 100644 (file)
@@ -240,7 +240,7 @@ f8 c2 d e
 
 
 @item @code{\grace}
-@tab appogiatures
+@tab appoggiatures
 @tab
 @lilypond[relative=2]
 \set Staff.initialTimeSignatureVisibility = #all-invisible
index f0665906f40b22962bf3024ea510025b01f65c43..040e7eb79b5df8ddb2f5568c934329b70e876625 100644 (file)
@@ -3036,7 +3036,7 @@ En combinaison avec le script @file{articulate}, d'autres éléments
 seront aussi reportés en MIDI :
 
 @itemize
-@item les appogiatures -- celles-ci prendront la moitié de la valeur,
+@item les appoggiatures -- celles-ci prendront la moitié de la valeur,
 dépourvue de point, de la note qui les suit --  par exemple,
 
 @example
index c23e2bfc865242fa53dc76f43b1e8294b522446d..197f40b1fde977d9dfdec77ca2d788b08216f9bb 100644 (file)
@@ -3635,8 +3635,8 @@ désactivés dans cette même expression.
 @seealso
 Glossaire musicologique :
 @rglosnamed{grace notes,ornements},
-@rglosnamed{acciaccatura,acciacature},
-@rglosnamed{appoggiatura,appogiature}.
+@rglosnamed{acciaccatura,acciaccature},
+@rglosnamed{appoggiatura,appoggiature}.
 
 Manuel de notation :
 @ref{Barres de ligature manuelles},
index 8b72cf4a26dbbf978a3bf8742c21dc4c67b6e58b..6551a677bbbb7c8cef948632894087d0513f57c6 100644 (file)
@@ -153,7 +153,7 @@ and <code>\appoggiatura</code>,
             \acciaccatura g8 f4
           </pre>
 
-     <p>Both reflect the traditional meanings of acciaccatura and appogiatura,
+     <p>Both reflect the traditional meanings of acciaccatura and appoggiatura,
 and both insert insert a slur from the first grace note to the main
 note.
 
index 300c9c18a834715a1d38ff7efcbb8f366e338f7e..0b03549d88afda126a825907d7f216c221ad33ab 100644 (file)
@@ -3030,7 +3030,7 @@ D: doppelter Vorschlag,
 NL: dubbele voorslag,
 DK: dobbelt forslag,
 S: dubbelslag,
-FI: kaksoisappogiatura, kaksoisetuhele.
+FI: kaksoisappoggiatura, kaksoisetuhele.
 
 @seealso
 @ref{appoggiatura}.
index 7fb829e3c4d2a2f7fc95eb39b02ae177ff413779..7ec28c4c9a6972249c703e4e3a23ad8ebf1c8b9a 100644 (file)
@@ -50,7 +50,7 @@ private:
     return generic_get_acknowledger (sym, interface_end_acknowledger_hash_);
   }
 
-  void init_acknowledgers (SCM alist, SCM *hash);
+  SCM init_acknowledgers (SCM alist);
   // For now no description.  In future, something derived from the
   // definition might make sense.
   SCM translator_description () const { return SCM_EOL; }
index 6eec2333a6a9b0cf0f2c6789dc6a8baa7ed26d82..4ba2fe6523d493e8b43b77cde05abfa6afb5bfe1 100644 (file)
@@ -36,9 +36,6 @@ private:
   vector<Method_instance>
   precomputed_method_bindings_[TRANSLATOR_METHOD_PRECOMPUTE_COUNT];
 
-  SCM
-  precomputed_self_method_bindings_[TRANSLATOR_METHOD_PRECOMPUTE_COUNT];
-
   SCM protected_events_;
 
   void create_child_translator (SCM);
@@ -57,12 +54,9 @@ public:
   void stop_translation_timestep ();
   void start_translation_timestep ();
 
-  virtual void fetch_precomputable_methods (SCM []);
-
   Translator_group ();
 
   void precomputed_translator_foreach (Translator_precompute_index);
-  void call_precomputed_self_method (Translator_precompute_index);
 
   Context *context () const { return context_; }
 protected:
index f8a3afc57a1c99bee0ad628bc4ed6e39841c1966..fc51d439c0e90eed08dbaf4b89c06d1c2f04ca16 100644 (file)
@@ -82,15 +82,14 @@ Scheme_engraver::init_from_scheme (SCM definition)
   initialize_function_ = callable (ly_symbol2scm ("initialize"), definition);
   finalize_function_ = callable (ly_symbol2scm ("finalize"), definition);
 
-  SCM listeners = ly_assoc_get (ly_symbol2scm ("listeners"), definition, SCM_EOL);
-
-  per_instance_listeners_ = SCM_EOL;
+  SCM p = ly_assoc_get (ly_symbol2scm ("listeners"), definition, SCM_EOL);
+  SCM listeners = SCM_EOL;
 
   must_be_last_ = to_boolean (ly_assoc_get (ly_symbol2scm ("must-be-last"),
                                             definition,
                                             SCM_BOOL_F));
 
-  for (SCM p = listeners; scm_is_pair (p); p = scm_cdr (p))
+  for (; scm_is_pair (p); p = scm_cdr (p))
     {
       SCM event_class = scm_caar (p);
       SCM proc = scm_cdar (p);
@@ -101,26 +100,36 @@ Scheme_engraver::init_from_scheme (SCM definition)
       // We should check the arity of the function?
 
       // Record for later lookup.
-      per_instance_listeners_ = scm_acons (event_class, proc, per_instance_listeners_);
+      listeners = scm_acons (event_class, proc, listeners);
     }
 
-  init_acknowledgers (ly_assoc_get (ly_symbol2scm ("acknowledgers"),
-                                    definition, SCM_EOL),
-                      &interface_acknowledger_hash_);
+  SCM hash1 =
+    init_acknowledgers (ly_assoc_get (ly_symbol2scm ("acknowledgers"),
+                                      definition, SCM_EOL));
+  SCM hash2 =
+    init_acknowledgers (ly_assoc_get (ly_symbol2scm ("end-acknowledgers"),
+                                      definition, SCM_EOL));
+
+  per_instance_listeners_ = listeners;
+  interface_acknowledger_hash_ = hash1;
+  interface_end_acknowledger_hash_ = hash2;
 
-  init_acknowledgers (ly_assoc_get (ly_symbol2scm ("end-acknowledgers"),
-                                    definition, SCM_EOL),
-                      &interface_end_acknowledger_hash_);
+  // It's not defined whether Scheme_engraver::derived_mark is already
+  // active while the construction is underway, so we make sure we
+  // keep a version of everything on the stack that is not still
+  // covered by `definition'.
+
+  scm_remember_upto_here_2 (definition, listeners);
+  scm_remember_upto_here_2 (hash1, hash2);
 
   // TODO: hook up description, props read/written, grobs created
   // etc. to provide automatic documentation.
 }
 
-void
-Scheme_engraver::init_acknowledgers (SCM alist,
-                                     SCM *hash)
+SCM
+Scheme_engraver::init_acknowledgers (SCM alist)
 {
-  *hash = Scheme_hash_table::make_smob ();
+  SCM hash = Scheme_hash_table::make_smob ();
   for (SCM p = alist; scm_is_pair (p); p = scm_cdr (p))
     {
       SCM iface = scm_caar (p);
@@ -129,8 +138,9 @@ Scheme_engraver::init_acknowledgers (SCM alist,
       if (!(ly_is_procedure (proc) && ly_is_symbol (iface)))
         continue;
 
-      unsmob<Scheme_hash_table>(*hash)->set (iface, proc);
+      unsmob<Scheme_hash_table>(hash)->set (iface, proc);
     }
+  return hash;
 }
 
 SCM
index 6e47a85ad9a863d965ab87a47915cc1d40aace5e..972a487bf4861428734b8d483ab13a835bfae472 100644 (file)
@@ -241,7 +241,6 @@ precomputed_recurse_over_translators (Context *c, Translator_precompute_index id
   if (tg && dir == DOWN)
     {
       tg->precomputed_translator_foreach (idx);
-      tg->call_precomputed_self_method (idx);
     }
 
   for (SCM s = c->children_contexts (); scm_is_pair (s);
@@ -251,7 +250,6 @@ precomputed_recurse_over_translators (Context *c, Translator_precompute_index id
   if (tg && dir == UP)
     {
       tg->precomputed_translator_foreach (idx);
-      tg->call_precomputed_self_method (idx);
     }
 }
 
@@ -311,7 +309,6 @@ Translator_group::precompute_method_bindings ()
         }
     }
 
-  fetch_precomputable_methods (precomputed_self_method_bindings_);
 }
 
 void
@@ -322,20 +319,6 @@ Translator_group::precomputed_translator_foreach (Translator_precompute_index id
     bindings[i]();
 }
 
-void
-Translator_group::fetch_precomputable_methods (SCM ptrs[])
-{
-  for (int i = 0; i < TRANSLATOR_METHOD_PRECOMPUTE_COUNT; i++)
-    ptrs[i] = SCM_UNDEFINED;
-}
-
-void
-Translator_group::call_precomputed_self_method (Translator_precompute_index idx)
-{
-  if (!SCM_UNBNDP (precomputed_self_method_bindings_[idx]))
-    scm_call_1 (precomputed_self_method_bindings_[idx], self_scm ());
-}
-
 Translator_group::~Translator_group ()
 {
 }
index 78acdbfe1f76da6ed22f49cc1a14ffc2cab3393a..0414bd926b89418e9a5d966de31fe81e2ef24b54 100644 (file)
@@ -54,7 +54,7 @@
 %     portato        ac:portatoFactor (default 3/4)
 %     tenuto         ac:tenutoFactor (default 1/1 - by default, notes marked
 %                                     tenuto are not shortened)
-% * Appogiaturas are made to take half the value of the note following,
+% * Appoggiaturas are made to take half the value of the note following,
 %   without taking dots into account (so in \appoggiatura c8 d2. the c
 %   will take the time of a crotchet).
 % * Trills and turns are expanded. The algorithm tries to choose notes
index 1be31ef4ee0d7618347dd37fea0d21b648b104f4..b7fe2f0951c1f4817907d92dc8d11096755516b8 100644 (file)
@@ -554,7 +554,7 @@ fet_endchar;
 
 %%%%%%%%
 %
-% Single Stroke for Short Appogiatura
+% Single Stroke for Short Appoggiatura
 %
 
 fet_beginchar ("grace dash (up)", "ugrace");
index c822c43f016863c1292acbe3e08b09c3b022a5bf..0c3a8dc7e2582547a5a56261d4c9d1f5b633e1b3 100644 (file)
@@ -18,10 +18,10 @@ setlocal shiftwidth=2
 " some handy key mappings
 "
 " <F4>  save & make and play midi with timidity
-map <buffer> <F4> :w<Return>:se makeprg=lilypond\ \"%<\"<Return>:make<Return>:!timidity "%<.midi"<Return>
+map <buffer> <F4> :w<Return>:setl makeprg=lilypond\ \"%<\"<Return>:make<Return>:!timidity "%<.midi"<Return>
 "
 " <F5>  save & make
-map <buffer> <F5> :w<Return>:se makeprg=lilypond\ \"%<\"<Return>:make<Return>
+map <buffer> <F5> :w<Return>:setl makeprg=lilypond\ \"%<\"<Return>:make<Return>
 "
 " <F6>  view pdf with ghostview
 map <buffer> <F6> :!gv --watch "%<.pdf" &<Return>
@@ -33,7 +33,7 @@ map <buffer> <F7> :cp<Return>
 map <buffer> <F8> :cn<Return>
 "
 " <F9>  make
-map <buffer> <F9> :w<Return>:se makeprg=make\ -k<Return>:make<Return>
+map <buffer> <F9> :w<Return>:setl makeprg=make\ -k<Return>:make<Return>
 "
 " <F10> menu
 source $VIMRUNTIME/menu.vim