Hi, Ihor, I believe the two could be unified if we expand the functionality of the async filter to look for 'exception' tags. Then each language implementation must only put the org-babel src block in a try-except type construction and put the error message into the except block. The async filter will then find the error information and report it back to the org-buffer. We could then emulate the synchronous session functionality by adding a filter to the async-filter which blocks until an 'end' or 'exception' tag is detected. This way, all four combinations of session/session-less and synchronous/asynchronous header arguments could be handled by the asynchronous code alone. Best, Guacho
Sent with Proton Mail secure email. ------- Original Message ------- On Saturday, June 25th, 2022 at 10:28 PM, Ihor Radchenko <yanta...@gmail.com> wrote: > Ivar Fredholm freddyho...@protonmail.com writes: > > > A session-less block can be executed by starting a session with a special > > name (say "*none") which always gets killed after block execution is > > completed. For interpreter-less languages, we could use the shell as an > > interpreter (for instance, if we wanted to execute C, we could just start a > > shell, and send it the gcc command to compile and execute). Would this not > > cut down the amount of code that needs to be maintained and uniformize the > > existing code? > > > Feel free to compare ob-eval.el and ob-comint.el. Their functionality is > not equivalent. In particular ob-eval.el has a better handling of > errors. > > If you find a way to unify the two without loosing the functionality, it > will be welcome. > > Best, > Ihor