allow embedder to control the execution and error handling of callbacks #345
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
For effecient use in neovim we would need a bit of control how luv executes callbacks.
Primarily we need to take control of handling of errors. Currently luv prints errors in callbacks directly to stderr which messes up the internal screen of nvim. But we would also like to set a flag around the execution of the callback, as some lua API functions in nvim need to behave differently inside a luv callback (to avoid nested event loop for instance).
My suggestion is to add a "hook" function that a C embedder can set in a similar way to setting the event loop. Then the embedder is responsible for executing the callback and dealing with errors, including potential formatting of tracebacks etc. neovim/neovim@aa78c74 is an example of usage.
Does this seem reasonable? if so I can clean up the patch, and add docs etc.