summaryrefslogtreecommitdiff
path: root/lisp/net/tramp-integration.el
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2021-03-16 18:39:51 +0100
committerMichael Albinus <michael.albinus@gmx.de>2021-03-16 18:39:51 +0100
commit6c60ecd2d632ad41851e91cc53036a679c391194 (patch)
tree6324b2ac055db84b60e35ea5f283f2ce3316b1ea /lisp/net/tramp-integration.el
parent9b8a6b917b43ff00adca5de0607f92dfeafb6502 (diff)
downloademacs-6c60ecd2d632ad41851e91cc53036a679c391194.tar.gz
Fix problem in Tramp running two async processes in parallel
* lisp/net/tramp-integration.el (tramp-compile-disable-ssh-controlmaster-options): New defun. Add it to `compilation-mode-hook'. (Bug#45518) * lisp/progmodes/compile.el (compilation-get-file-structure): Revert commit 4ce5646d59, it isn't needed.
Diffstat (limited to 'lisp/net/tramp-integration.el')
-rw-r--r--lisp/net/tramp-integration.el21
1 files changed, 19 insertions, 2 deletions
diff --git a/lisp/net/tramp-integration.el b/lisp/net/tramp-integration.el
index 5adc4ce354a..9d4dd7d42a5 100644
--- a/lisp/net/tramp-integration.el
+++ b/lisp/net/tramp-integration.el
@@ -261,6 +261,23 @@ NAME must be equal to `tramp-current-connection'."
(delete (info-lookup->mode-cache 'symbol ',mode)
(info-lookup->topic-cache 'symbol))))))))
+;;; Integration of compile.el:
+
+;; Compilation processes use `accept-process-output' such a way that
+;; Tramp's parallel `accept-process-output' blocks. See last part of
+;; Bug#45518. So we don't use ssh ControlMaster options.
+(defun tramp-compile-disable-ssh-controlmaster-options ()
+ "Don't allow ssh ControlMaster while compiling."
+ (setq-local tramp-use-ssh-controlmaster-options nil))
+
+(with-eval-after-load 'compile
+ (add-hook 'compilation-mode-hook
+ #'tramp-compile-disable-ssh-controlmaster-options)
+ (add-hook 'tramp-integration-unload-hook
+ (lambda ()
+ (remove-hook 'compilation-start-hook
+ #'tramp-compile-disable-ssh-controlmaster-options))))
+
;;; Default connection-local variables for Tramp:
;; `connection-local-set-profile-variables' and
;; `connection-local-set-profiles' exists since Emacs 26.1.
@@ -277,7 +294,7 @@ NAME must be equal to `tramp-current-connection'."
(tramp-compat-funcall
'connection-local-set-profiles
- `(:application tramp)
+ '(:application tramp)
'tramp-connection-local-default-system-profile)
(defconst tramp-connection-local-default-shell-variables
@@ -293,7 +310,7 @@ NAME must be equal to `tramp-current-connection'."
(with-eval-after-load 'shell
(tramp-compat-funcall
'connection-local-set-profiles
- `(:application tramp)
+ '(:application tramp)
'tramp-connection-local-default-shell-profile))
(add-hook 'tramp-unload-hook