Subject: bug#62194: 30.0.50; Two Eglot-over-Tramp tests are failing on master, passing on emacs-29

From: João Távora <[email-masked]>
Date: Wed, 15 Mar 2023 20:24:41 +0000

merge 62194 61350
thanks

Michael Albinus <[email-masked]> writes:

> So I reommend the following:
>
> - At least in 'eglot--call-with-tramp-test', better in your Eglot
>   package, suppress vc related checks, by binding
>
>   (let ((vc-ignore-dir-regexp
>          (format "\\(%s\\)\\|\\(%s\\)"
>                  vc-ignore-dir-regexp
>                  tramp-file-name-regexp)))
>      ...)
>
> - If this works sufficiently, this bug shall be either closed, or merged
>   with bug#60534, which tracks this error.

I don't think I should be doing something this in eglot-tests.el,
because the tests pass on emacs-29 and this failure was introduced
very recently.

I've just confirmed inequivocally that these failures are direct fallout
from the fix to bug#61350, so I'm merging the two bugs: 62194 and 61350.

As I wrote in bug#61350, if I revert that commit and apply the simpler
patch that we discussed, everything's good, and I can remove the
ControlMaster supression workaround in Eglot, too.

João

diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 47173b95bea..885b29f9471 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -5800,6 +5800,11 @@ tramp-accept-process-output
 This is needed in order to hide `last-coding-system-used', which is set
 for process communication also.
 If the user quits via `C-g', it is propagated up to `tramp-file-name-handler'."
+  (when-let (((process-get proc 'shared-socket))
+	     (v (process-get proc 'vector)))
+    (dolist (p (delq proc (process-list)))
+      (when (tramp-file-name-equal-p v (process-get p 'vector))
+	(while (accept-process-output p 0 nil t)))))
   (with-current-buffer (process-buffer proc)
     (let ((inhibit-read-only t)
 	  last-coding-system-used