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>