]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/hyphen-engraver.cc
Docs: adjust translations include path
[lilypond.git] / lily / hyphen-engraver.cc
index b4dbcefc8cdcbd557b3994438bd729cd1f0919d3..24b8665e80d111ffd9d401af5e474d083ddfceef 100644 (file)
@@ -1,11 +1,22 @@
 /*
-  hyphen-engraver.cc -- implement Hyphen_engraver
+  This file is part of LilyPond, the GNU music typesetter.
 
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1999--2008 Glen Prideaux <glenprideaux@iname.com>,
+  Copyright (C) 1999--2010 Glen Prideaux <glenprideaux@iname.com>,
   Han-Wen Nienhuys <hanwen@xs4all.nl>,
   Jan Nieuwenhuizen <janneke@gnu.org>
+
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "engraver.hh"
@@ -25,6 +36,7 @@ class Hyphen_engraver : public Engraver
 
   Spanner *hyphen_;
   Spanner *finished_hyphen_;
+  bool current_lyric_is_skip_;
 
 public:
   TRANSLATOR_DECLARATIONS (Hyphen_engraver);
@@ -42,6 +54,7 @@ protected:
 
 Hyphen_engraver::Hyphen_engraver ()
 {
+  current_lyric_is_skip_ = false;
   hyphen_ = 0;
   finished_hyphen_ = 0;
   finished_ev_ = 0;
@@ -52,14 +65,16 @@ void
 Hyphen_engraver::acknowledge_lyric_syllable (Grob_info i)
 {
   Item *item = i.item ();
+  SCM text = item->get_property ("text");
+  current_lyric_is_skip_ = ly_is_equal (text, scm_from_locale_string (" "));
   
-  if (!hyphen_)
+  if (!hyphen_ && !current_lyric_is_skip_)
     hyphen_ = make_spanner ("LyricSpace", item->self_scm ());
 
   if (hyphen_)
     hyphen_->set_bound (LEFT, item);
       
-  if (finished_hyphen_)
+  if (finished_hyphen_ && !current_lyric_is_skip_)
     finished_hyphen_->set_bound (RIGHT, item);
 }
 
@@ -127,7 +142,7 @@ Hyphen_engraver::stop_translation_timestep ()
       finished_ev_ = 0;
     }
   
-  if (finished_hyphen_ && hyphen_)
+  if (finished_hyphen_ && hyphen_ && !current_lyric_is_skip_)
     {
       programming_error ("hyphen not finished yet");
       finished_hyphen_ = 0;