Message reporter fix

Currently, Snap! has a reporter named message in control. It seems to report the last message. However, there is no thread-safe way to use it that I know of. In
if message a is broadcast, and then message c is broadcast from somewhere else, then the do stuff will not be run , even though it should be. The solution I see is to make a block replacing the current message receive block like
when I receive message with message as an upvar
that looks like a true hat block and not a predicate in a when boolean. This allows the upvar to be used, and so other messages cannot possibly affect it.

Yup. That's been on the list since forever. Same with "when any key pressed." (... which I've just noticed actually says "when any key key pressed.") The real underlying problem is that we should have an event queue so that a second event that should trigger a script that's already active would wait until the first event finished and then trigger the script again. Maybe someday.

Yes, this is interesting.
The proposal may be adding an arrow-head (as the new feature on "map" block) with the "message" upvar. And, as Brian commented, the same for keys.
Something like this:
and clicking that arrow...

And the same for keys

What do you think about this? If you agree I will add this to my list for future proposals.


Oh! I forgot the "back arrow" on the "blocks with inputs". But it must be there.

The general idea is good. I wouldn't use the text "with input" since this isn't a procedure and there isn't a procedure call to provide an input. I'd just have the variable. Otherwise, go for it!

Yes, this would be perfect!