From 90744ff0be581b69cedea1194b7e78265bdb67a4 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Miha=20Rihtar=C5=A1i=C4=8D?= <miha@kamnitnik.top>
Date: Fri, 30 Sep 2022 20:07:03 +0200
Subject: [PATCH] comint-fl: Prevent fontification of output as input

* lisp/comint.el (comint-output-filter): Inhibit jit-lock
fontification of inserted process output before marking it with the
'output' filed property (bug#58169).
---
 lisp/comint.el | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/lisp/comint.el b/lisp/comint.el
index e7d2136c841..15c9388ea4f 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -2150,24 +2150,26 @@ Make backspaces delete the previous character."
 	    ;; insert-before-markers is a bad thing. XXX
 	    ;; Luckily we don't have to use it any more, we use
 	    ;; window-point-insertion-type instead.
-	    (insert string)
+	    (make-local-variable 'jit-lock-mode)
+	    (let ((jit-lock-mode nil))
+	      (insert string)
 
-	    ;; Advance process-mark
-	    (set-marker (process-mark process) (point))
+	      ;; Advance process-mark
+	      (set-marker (process-mark process) (point))
 
-	    (unless comint-inhibit-carriage-motion
+	      (unless comint-inhibit-carriage-motion
 	      ;; Interpret any carriage motion characters (newline, backspace)
 	      (comint-carriage-motion comint-last-output-start (point)))
 
-	    ;; Run these hooks with point where the user had it.
-	    (goto-char saved-point)
-	    (run-hook-with-args 'comint-output-filter-functions string)
-	    (set-marker saved-point (point))
+	      ;; Run these hooks with point where the user had it.
+	      (goto-char saved-point)
+	      (run-hook-with-args 'comint-output-filter-functions string)
+	      (set-marker saved-point (point))
 
-	    (goto-char (process-mark process)) ; In case a filter moved it.
+	      (goto-char (process-mark process)) ; In case a filter moved it.
 
-	    (unless comint-use-prompt-regexp
-              (comint--mark-as-output comint-last-output-start (point)))
+	      (unless comint-use-prompt-regexp
+                (comint--mark-as-output comint-last-output-start (point))))
 
 	    ;; Highlight the prompt, where we define `prompt' to mean
 	    ;; the most recent output that doesn't end with a newline.
-- 
2.39.5