安装 pyright
以管理员运行 cmd
我这里使用 pip 安装的 pyright 貌似有BUG, 使用npm 安装的则正常
配置Doom Emacs
init.el
1
2
3
4
5
|
:lang
(python +lsp
+pyright
;; +mspyls
) ; beautiful is better than ugly
|
config.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
(use-package! lsp-pyright
:init (when (executable-find "python3")
(setq lsp-pyright-python-executable-cmd "python3"))
:hook (python-mode . (lambda ()
(require 'lsp-pyright)
(lsp)))) ; or lsp-deferred
(use-package! lsp-mode
;; :hook ((verilog-mode vhdl-mode) . lsp)
:config
(setq lsp-log-io nil
lsp-auto-configure t
lsp-auto-guess-root t
lsp-enable-completion-at-point t
lsp-enable-xref t
lsp-enable-indentation t
lsp-response-timeout 10
lsp-restart 'auto-restart
lsp-keep-workspace-alive nil
lsp-eldoc-render-all t
lsp-enable-snippet t
lsp-enable-folding t
lsp-enable-file-watchers t
lsp-file-watch-threshold 15000) ;; 超过15000 个文件才报警
(advice-add 'lsp :before (lambda (&rest _args) (eval '(setf (lsp-session-server-id->folders (lsp-session)) (ht))))) ;; 避免pyright 第一次启server 时把 lsp workspace 全分析一遍
)
|
doom sync
重启emacs
包含的文目录过多 (pyright:31912 initialized successfully in folders)
1
2
3
4
5
6
|
LSP :: pyright:31912 initialized successfully in folders: (fold1 fold2 ... foldx)
Cannot determine Magit’s version (error "e:/Users/wcq/AppData/Roaming/SPB_Data/.emacs.d/.local/straight/build-28.1/magit/magit.el" repo static elpa dirname hash)
Watching all the files in e:/work/tools would require adding watches to 15700 directories, so watching the repo may slow Emacs down.
Do you want to watch all files in e:/work/tools? (y or n) n
LSP :: You can configure this warning with the `lsp-enable-file-watchers' and `lsp-file-watch-threshold' variables
Error processing message (file-missing "Opening directory" "No such file or directory" "c:/Program Files (x86)/sigrok/PulseView/share/libsigrokdecode/decoders/uart").
|
需要 lsp-pyright-multi-root 的情况下
这个问题可以通过调大 lsp-enable-file-watchers 和 lsp-file-watch-threshold 来消除警告, 但是这不是个好办法,
正常的LSP 工程不应该包含15700 个文件夹, 从消息可以看出 work/tools 这个目录包含了太多文件夹, 我们应该把这个目录从 lsp-session 中移除
方法有两个
1. 直接找到lsp-session 删除里面不需要的目录
C-h v
然后 输入 lsp-session-file
找到lsp-session-file 把不需要的目录删除
2. pyright 通过lsp 的内置命令(lsp-workspace-folders-remove)删除多余的 lsp-session
M-x: lsp-workspace-folders-remove
不需要 lsp-pyright-multi-root 的情况下
参考 config.el
中lsp-mode 里的advice-add
😵 值得注意的是, 按网上找的资料看只要在load lsp-mode 之前把 lsp-pyright-multi-root
设成 nil 应该也能禁止多目录的情况
但是我这里不管怎么试都没有效果…
默认以 projectile 识别的目录为root dir
最简单的就是在工程的根目录中使用 git init
新建一个git 仓库即可
如果碰到 flake8 相关的错误
则重装即可
1
2
|
pip3 uninstall flake8
pip3 install flake8
|