---- On Mon, 05 Feb 2024 15:00:18 +0100 Ihor Radchenko wrote --- > Yes. The right fix would be extracting the filter from > `org-babel-comint-with-output' and re-using it.
This message documents my progress so that I may switch focus to Bruno's patches in "Asynchronous blocks for everything" attention (https://list.orgmode.org/65cfa0d8.050a0220.cb569.c...@mx.google.com/T/#u). Attached is a failed attempt at extracting the filter in =org-babel-comint-with-output=. It tries to extract the filter more-or-less directly: 1. take the filter code from =org-babel-comint-with-output= and put it into a separate function, =org-babel-comint-process-output-filter= 2. call =org-babel-comint-process-output-filter= from =org-babel-comint-with-output= and =org-babel-comint-async-filter= The unmodified =org-babel-comint-with-output= has a comment that says, "Filter out prompts". This is misleading. The filter code does two things: removes prompts *and* removes echoed input. The problem is the filter which removes echoes uses the body of the source block. It's unclear how to give =org-babel-comint-async-filter= the block body. =org-babel-comint-async-filter= is a =comint-output-filter-function= which receives a single input, "a string containing the text as originally inserted" in the comint buffer. Thoughts: - Split prompt filtering and input echoing into two filters + this seems to imply a =-hook= or =-functions= type implementation + where could input echo filter go? Where has access to the block body? - creating a generic prompt filter duplicates =ob-shell-async-chunk-callback= or, more fundamentally, =org-babel-comint-async-chunk-callback= - What would it take to consolidate output filtering? In addition to prompt filtering and input echo filtering, ob-shell filters the =org-babel-sh-eoe-indicator=. I'm sure there's other filtering that happens on block output. Wouldn't it be nice if that were in a single place, like right before results are inserted? Please feel free to provide feedback and suggestions. -- Matt Trzcinski Emacs Org contributor (ob-shell) Learn more about Org mode at https://orgmode.org Support Org development at https://liberapay.com/org-mode
v01-refactor-filter.diff
Description: Binary data