Subject: bug#70966: 30.0.50; eshell/diff produces track-changes errors

From: Stefan Monnier <[email-masked]>
Date: Thu, 16 May 2024 11:58:31 -0400

The patch below seems to fix this problem.

John, do you remember why you had those let-bindings (which originally
were let-binding `after-change-functions` to nil)?

        Stefan
diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index 78a448a41a5..8e993d47183 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -623,7 +623,8 @@ eshell-send-input
   ;; Note that the input string does not include its terminal newline.
   (let* ((proc-running-p (eshell-head-process))
          (send-to-process-p (and proc-running-p (not queue-p)))
-         (inhibit-modification-hooks t))
+         ;; (inhibit-modification-hooks t)
+         )
     (unless (and send-to-process-p
 		 (not (eq (process-status
 			   (eshell-head-process))
@@ -710,7 +711,8 @@ eshell-interactive-filter
   (unless buffer
     (setq buffer (current-buffer)))
   (when (and string (buffer-live-p buffer))
-    (let ((inhibit-modification-hooks t))
+    (let (;; (inhibit-modification-hooks t)
+          )
       (with-current-buffer buffer
         (let ((functions eshell-preoutput-filter-functions))
           (while (and functions string)