82 lines
2.9 KiB
EmacsLisp
82 lines
2.9 KiB
EmacsLisp
;;; init-lsp.el --- LSP settings -*- lexical-binding: t -*-
|
|
;;; Commentary:
|
|
|
|
;;; Code:
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; lsp-bridge
|
|
(use-package markdown-mode
|
|
:mode ("README\\.md\\'" . gfm-mode)
|
|
:init (setq markdown-command "multimarkdown")
|
|
:bind (:map markdown-mode-map
|
|
("C-c C-e" . markdown-do)))
|
|
|
|
(use-package yasnippet
|
|
:init
|
|
(yas-global-mode 1))
|
|
|
|
(add-to-list 'load-path "~/.emacs.d/site-lisp/lsp-bridge")
|
|
(require 'lsp-bridge)
|
|
(global-lsp-bridge-mode)
|
|
(setq acm-enable-doc t)
|
|
(setq acm-enable-copilot nil)
|
|
(setq lsp-bridge-enable-hover-diagnostic t)
|
|
(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 "basedpyright")
|
|
(setq lsp-bridge-tex-lsp-server "texlab")
|
|
(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"
|
|
'((("a" . "lsp-bridge-code-action") . lsp-bridge-code-action)
|
|
(("f" . "lsp-bridge-find-def") . lsp-bridge-find-def)
|
|
(("b" . "lsp-bridge-find-def-return") . lsp-bridge-find-def-return)
|
|
(("h" . "lsp-bridge-popup-documentation") . lsp-bridge-popup-documentation)
|
|
(("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
|