[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [BUG] Prompt appears in async shell results
From: |
Matt |
Subject: |
Re: [BUG] Prompt appears in async shell results |
Date: |
Sun, 18 Feb 2024 13:09:34 +0100 |
User-agent: |
Zoho Mail |
---- 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
(65cfa0d8.050a0220.cb569.ce34@mx.google.com/T/#u">https://list.orgmode.org/65cfa0d8.050a0220.cb569.ce34@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