On 2017-06-12 20:42, Mark Waddingham via use-livecode wrote:
I'm not sure how long it might be before it becomes a fully supported,
end-user feature (there's a great publish/subscribe model lurking
there somewhere - at least tuned to an IDE-like applications needs -
see further down) but we could evaluate moving the existing mechanism
from IDE engine to all engines. The way it is implemented means that
it has minimal performance impact if not used I believe (although I'd
want to verify that).

Just answering myself...

I actually moved the revAvailableHandlers feature from IDE engine to all engines this morning - there was no reason to have it only in the IDE engine, although the same 'it might change' rules apply to it as always did. In this case, it made it easier to write unit tests for it - after I added introspection on chained behaviors to it - Ali's recently excellent work on getting the message box's 'intelligence' to work more robustly relies on this to work out if something is a command or function in the message path... The lack of behavior handlers in it made the message box slightly wonky in a prerelease build of 8.1.5-rc-1.

So, that will be available in standalones for anyone who might need such a thing - although don't get irked if its format or usage changes in some future engine versions :)

For those who haven't ever poked around in the IDE internals (which is probably most people!) the 'revAvailableHandlers' is a property of all objects which returns the list of handlers (with type) in a string present in the script of that specific object. Then the 'the effective revAvailableHandlers' returns a similar list, but for all handlers which are accessible from it in the message path (e.g. including frontscripts, backscripts, library stacks, and behaviors at all points).

If you want to see what it tells you then try in the message box:

  put the effective revAvailableHandlers of me

(Note it only works for scripts which compile - it doesn't attempt to do anything with scripts with compile errors as it uses the internal abstract syntax tree (AST) the engine constructs to get the information, and if a script doesn't compile, there is no AST to look at).

Warmest Regards,

Mark.

--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to