From 4b7ac2efa0f027f532644522a9166e8c9c85645a Mon Sep 17 00:00:00 2001 From: lemyx Date: Tue, 21 Jan 2025 06:56:15 +0800 Subject: [PATCH] Add Python virtual environment for lsp-bridge --- lisp/init-lsp.el | 45 ++++++++++++++++++++++++++++++++++++-- lisp/init-window.el | 4 ++++ site-lisp/lsp-bridge | 2 +- site-lisp/vertico-posframe | 2 +- 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/lisp/init-lsp.el b/lisp/init-lsp.el index cbd9d44..2b9958b 100644 --- a/lisp/init-lsp.el +++ b/lisp/init-lsp.el @@ -3,6 +3,8 @@ ;;; Code: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lsp-bridge (use-package markdown-mode :mode ("README\\.md\\'" . gfm-mode) :init (setq markdown-command "multimarkdown") @@ -22,9 +24,13 @@ (setq lsp-bridge-enable-completion-in-string t) (setq lsp-bridge-enable-completion-in-minibuffer t) (setq lsp-bridge-enable-with-tramp t) -(setq lsp-bridge-python-lsp-server "pyright") +(setq lsp-bridge-python-lsp-server "basedpyright") (setq lsp-bridge-tex-lsp-server "texlab") -(setq lsp-bridge-python-command "/usr/bin/python3") +(setq lsp-bridge-python-command + (cond + ((eq system-type 'gnu/linux) "/usr/bin/python3") + ((eq system-type 'darwin) "/opt/homebrew/bin/python3") + )) (one-key-create-menu "LSP" @@ -35,6 +41,41 @@ (("s" . "lsp-bridge-toggle-sdcv-helper") . lsp-bridge-toggle-sdcv-helper)) t) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; virtual environment +(use-package pyvenv + :ensure t + :config + (setenv "WORKON_HOME" (expand-file-name + (cond ((eq system-type 'gnu/linux) "~/miniconda3/envs") + ((eq system-type 'darwin) "/opt/homebrew/Caskroom/miniconda/base/envs")))) + (pyvenv-mode t) + (add-hook 'python-mode-hook + (lambda () (pyvenv-workon "dev"))) +) + +(defun local/lsp-bridge-get-single-lang-server-by-project (project-path filepath) + (let* ((json-object-type 'plist) + (custom-dir (expand-file-name ".cache/lsp-bridge/pyright" user-emacs-directory)) + (custom-config (expand-file-name "pyright.json" custom-dir)) + (default-config (json-read-file (expand-file-name "lsp-bridge/langserver/pyright.json" user-emacs-directory))) + (settings (plist-get default-config :settings)) + ) + (plist-put settings :pythonPath (executable-find "python")) + (make-directory (file-name-directory custom-config) t) + (with-temp-file custom-config (insert (json-encode default-config))) + custom-config)) + +(add-hook 'python-mode-hook + (lambda () + (setq-local lsp-bridge-get-single-lang-server-by-project + 'local/lsp-bridge-get-single-lang-server-by-project))) + +(add-hook 'pyvenv-post-activate-hooks + (lambda () + (lsp-bridge-restart-process))) + + (provide 'init-lsp) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; init-lsp.el ends here diff --git a/lisp/init-window.el b/lisp/init-window.el index a4e0607..da6dda6 100644 --- a/lisp/init-window.el +++ b/lisp/init-window.el @@ -70,6 +70,10 @@ (setq popper-display-control nil) ) +(use-package ace-window + :ensure t + :bind (("C-x o" . 'ace-window))) + (provide 'init-window) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; init-window.el ends here diff --git a/site-lisp/lsp-bridge b/site-lisp/lsp-bridge index 402e65f..7e382e1 160000 --- a/site-lisp/lsp-bridge +++ b/site-lisp/lsp-bridge @@ -1 +1 @@ -Subproject commit 402e65f372bb4268c0cd0514a12f0b0e9649c4af +Subproject commit 7e382e1bd3ab32e0f4bff981b2355efa59ee4366 diff --git a/site-lisp/vertico-posframe b/site-lisp/vertico-posframe index 781ee08..cfce055 160000 --- a/site-lisp/vertico-posframe +++ b/site-lisp/vertico-posframe @@ -1 +1 @@ -Subproject commit 781ee08f8d92f640dff8a0d8838b67a13a391846 +Subproject commit cfce055fadf1e96e729d90f86d921bdb6092eba5