From 227cbb53592e853133ada4a429b8cceedc837f89 Mon Sep 17 00:00:00 2001 From: Matthew Trzcinski Date: Sun, 17 Mar 2024 16:54:33 +0100 Subject: [PATCH] lisp/ob-comint.el: Create comint prompt filter * lisp/ob-comint.el (org-babel-comint--prompt-filter): Extract prompt filtering logic from `org-babel-comint-with-output' into a new function. --- lisp/ob-comint.el | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lisp/ob-comint.el b/lisp/ob-comint.el index 1ec84e865..882e19289 100644 --- a/lisp/ob-comint.el +++ b/lisp/ob-comint.el @@ -74,6 +74,19 @@ This is useful when prompt unexpectedly changes." (setq comint-prompt-regexp org-babel-comint-prompt-regexp-old org-babel-comint-prompt-regexp-old tmp)))) +(defun org-babel-comint--prompt-filter (string &optional prompt-regexp) + "Remove PROMPT-REGEXP from STRING. + +PROMPT-REGEXP defaults to `comint-prompt-regexp'." + (let* ((prompt-regexp (or prompt-regexp comint-prompt-regexp)) + (separator "org-babel-comint--prompt-filter-separator\n")) + (while (string-match-p prompt-regexp string) + (setq string + (replace-regexp-in-string + (format "\\(?:%s\\)?\\(?:%s\\)[ \t]*" separator prompt-regexp) + separator string))) + (delete "" (split-string string separator)))) + (defmacro org-babel-comint-with-output (meta &rest body) "Evaluate BODY in BUFFER and return process output. Will wait until EOE-INDICATOR appears in the output, then return