org-babel-comint-with-output: Handle agglomerated prompts better
* lisp/ob-comint.el (org-babel-comint-with-output): Consider that comint can sometimes agglomerate multiple prompts together even within a single output increment as passed to `comint-output-filter-functions'. Example in GHC comint buffer: GHCi, version 9.0.2: https://www.haskell.org/ghc/ :? for help ghci> ghci> :{ main :: IO () main = putStrLn "Hello World!" :} main "org-babel-haskell-eoe" ghci| ghci| ghci| ghci> ghci> Hello World! ghci> "org-babel-haskell-eoe" ghci>
This commit is contained in:
parent
6c9104f59c
commit
a8a516ba33
|
@ -91,7 +91,16 @@ or user `keyboard-quit' during execution of body."
|
|||
;; trailing newline. Use more reliable
|
||||
;; match to split the output later.
|
||||
(replace-regexp-in-string
|
||||
comint-prompt-regexp
|
||||
;; Sometimes, we get multiple agglomerated
|
||||
;; prompts together in a single output:
|
||||
;; "prompt prompt prompt output"
|
||||
;; Remove them progressively, so that
|
||||
;; possible "^" in the prompt regexp gets to
|
||||
;; work as we remove the heading prompt
|
||||
;; instance.
|
||||
(if (string-prefix-p "^" comint-prompt-regexp)
|
||||
(format "^\\(%s\\)+" (substring comint-prompt-regexp 1))
|
||||
comint-prompt-regexp)
|
||||
,org-babel-comint-prompt-separator
|
||||
text))))
|
||||
comint-output-filter-functions))
|
||||
|
|
Loading…
Reference in New Issue