Dan Eble <d...@faithful.be> writes: > Does anyone have an idea of input I could provide to reach the block with the > TODO below? I've tried > > #(make-music 'PropertySet 'symbol 'fingeringOrientations) > > (note that no value is defined), but it wasn't enough. TIA. > > void > Context::set_property_from_event (SCM sev) > { > Stream_event *ev = unsmob<Stream_event> (sev); > > SCM sym = ev->get_property ("symbol"); > if (scm_is_symbol (sym)) > { > SCM val = ev->get_property ("value"); > > if (SCM_UNBNDP (val)) { > // TODO: It looks like this ignores \once. > // Should this be unset_property_from event (sev)? > unset_property (sym); > return; > } > ... > — > Dan
The TODO was added by yourself. I think that unset_property here was called when \once \set ... was used on a previously unset property and the implementation used a finalization-hook for unsetting at the point the event got generated instead of passing the 'once property in the Stream_event . This mechanism was incompatible with the stream event recorder and was ultimately replaced by me with commit 314743a9769d8094d23cd45eb307b1485b41cb44 Author: David Kastrup <d...@gnu.org> Date: Tue Sep 15 20:50:13 2015 +0200 Issue 4609/4: Move \once action from iterators to listeners This ends the dependency of the events generated for \once\unset and \once\set on the current context (bad for recording and replaying events like with the part combiner and quoted music). It also implements \once\revert and makes every \once\override and \once\revert impervious to any other overrides and reverts that may happen at the same time. It's conceivable that the code was dead afterwards. I am not sure. -- David Kastrup