diff --git a/modules/emacs/tramp/config.el b/modules/emacs/tramp/config.el index 2c2ead50b..89dc813bf 100644 --- a/modules/emacs/tramp/config.el +++ b/modules/emacs/tramp/config.el @@ -32,6 +32,26 @@ 'remote-direct-async-process)) +;;;###package lsp-mode +;; HACK: lsp-mode over TRAMP doesn't work with direct async, so force it off for +;; LSP stdio connections. +(defadvice! +tramp--disable-direct-async-for-lsp-stdio-a (plist) + :filter-return #'lsp-stdio-connection + (let ((connect-fn (plist-get plist :connect))) + (plist-put plist :connect + (lambda (&rest args) + (letf! ((#'tramp-direct-async-process-p #'ignore)) + (apply connect-fn args)))))) + + +;;;###package eglot +;; HACK: Same deal with eglot. +(defadvice! +tramp--disable-direct-async-for-eglot-a (fn &rest args) + :around #'eglot--connect + (letf! ((#'tramp-direct-async-process-p #'ignore)) + (apply fn args))) + + ;; See magit/magit#5220 (after! magit (setq magit-tramp-pipe-stty-settings 'pty))