diff options
author | Michael Albinus <michael.albinus@gmx.de> | 2021-03-16 18:39:51 +0100 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2021-03-16 18:39:51 +0100 |
commit | 6c60ecd2d632ad41851e91cc53036a679c391194 (patch) | |
tree | 6324b2ac055db84b60e35ea5f283f2ce3316b1ea /lisp/net/tramp-integration.el | |
parent | 9b8a6b917b43ff00adca5de0607f92dfeafb6502 (diff) | |
download | emacs-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.el | 21 |
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 |