Jack Kamm <jackk...@gmail.com> writes:

> ...
> Therefore, I've attached an updated patch that provides such a mechanism
> for ob-R and ob-python, reverting them to the Org 9.6 behavior. This is
> done through a variable `org-babel-comint-async-remove-prompts-p', which
> is set by an optional argument in `org-babel-comint-async-register'.

Looks reasonable in general.

> More generally, I think it is best to avoid doing the prompt removal
> when possible, since it is difficult (impossible?) to do it perfectly,
> and it can cause many problems. This is why ob-python avoids using
> `org-babel-comint-with-output' -- it sources a tmp file rather than
> inputting code directly to comint, so that prompts do not leak. I think
> non-async R evaluation would benefit from a similar approach, and plan
> to propose a patch to make ob-R non-async eval more similar to
> ob-python.

Agree. The prompt removal code is there simply because comint has no
reliable facilities to distinguish between prompts, input, and output.
If we can avoid it, we should.

I recall the annoying issues with ob-ruby, where the REPL spits prompts
asynchronously, making prompt filtering very hard (impossible?).
https://list.orgmode.org/orgmode/875y4vv8ie.fsf@localhost/

I have one small nipick comment on the patch:

>    (org-babel-comint-async-register
>     session (current-buffer)
>     "ob_comint_async_python_\\(start\\|end\\|file\\)_\\(.+\\)"
> -   'org-babel-chomp 'org-babel-python-async-value-callback)
> +   'org-babel-chomp 'org-babel-python-async-value-callback
> +   t)

Rather than `t', I'd use something more descriptive like 
'disable-prompt-filtering.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

Reply via email to