From b7ef41aa703b4ff7cb90aadde89db66b2f3e5071 Mon Sep 17 00:00:00 2001 From: Thomas Don Date: Sat, 9 Nov 2024 12:21:09 +0800 Subject: [PATCH] fix lsp-server in pyvenv environment not found --- lsp-bridge.el | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/lsp-bridge.el b/lsp-bridge.el index 105f59e223..5480a0cb52 100644 --- a/lsp-bridge.el +++ b/lsp-bridge.el @@ -1225,6 +1225,23 @@ So we build this macro to restore postion after code format." (interactive) (lsp-bridge-call-async "profile_dump")) +(defun lsp-bridge--build-process-environment () + "Create lsp-bridge subprocess process environments" + (let ((path (getenv "PATH")) + (pyvenv-bin-path (file-name-directory lsp-bridge-python-command)) + (environments (seq-filter (lambda (env) (not (string-match-p "^PATH=" env))) + process-environment))) + ;; Add python venv path + (add-to-list 'environments + (concat "PATH=" + (if (not pyvenv-bin-path) + path + (if (string-match-p pyvenv-bin-path path) + path + (string-join (list pyvenv-bin-path path) path-separator)))) + t) + environments)) + (defun lsp-bridge-start-process () "Start LSP-Bridge process if it isn't started." (if (lsp-bridge-process-live-p) @@ -1249,7 +1266,8 @@ So we build this macro to restore postion after code format." (setq lsp-bridge-internal-process-args lsp-bridge-args)) ;; Start python process. - (let ((process-connection-type (not (lsp-bridge--called-from-wsl-on-windows-p)))) + (let ((process-connection-type (not (lsp-bridge--called-from-wsl-on-windows-p))) + (process-environment (lsp-bridge--build-process-environment))) (setq lsp-bridge-internal-process (apply 'start-process lsp-bridge-name lsp-bridge-name