项目根路径 ~/Downloads/test_ts
,但 rust-analyzer
却从 ~/Downloads
开始扫描,狂吃 CPU 几十分钟,然后 (error "Lisp nesting exceeds ‘max-lisp-eval-depth’")
。
重现步骤
$ mkdir ~/Downloads/test_rs && ~/Downloads/test_rs
$ cargo init
$ git init && git add . && git commit -m 'Init commit'
$ emacsq.sh -P rust-mode --eval "(add-hook 'rust-mode-hook #'eglot-ensure)" src/main.rs
期望
只扫描 ~/Downloads/test_rs
实际
扫描整个 ~/Downloads
环境
- macOS 10.13.6
- rust-analyzer 0.3.1266-standalone (ba28e19b7 2022-10-29)
- emacs 29.0 2022-11-04
- Packages
- eglot built-in
- rustic 20220715.1010
1 个赞
这种情况是不是 在 ~/Downloads/test_rs 执行git init一下可以规避一下呀。
虽然没有本质上解决问题
用 lsp-workspace-folders-add
和 lsp-workspace-folders-remove
设置一下看看。
eglot 用的是 project-root
,看下这个是什么吧,是不是 downloads 目录内有个 .git
目录。
(project-current) ;; => (vc Git "~/Downloads/test_rs/")
(eglot--current-project) ;; => (vc Git "~/Downloads/test_rs/")
竟然是乌龙。
1楼截图高亮的那两行信息其实是 lsp-mode 输出的。所以是 lsp-mode 在扫描 ~/Downloads/。
因为我直接用 ~/.emacs.d/elpa 已经下载的包,里边有 ristic, 是 rustic 启动了 lsp-mode。
应该创建一个空的 user-emacs-directory
进行测试:
$ emacsq.sh -ud '<tmp>' -P rust-mode --eval "(add-hook 'rust-mode-hook #'eglot-ensure)" -nw
关键是上面的 emacsq.sh
也让别人摸不着头脑呀。
另外,rustic 为啥要操心 lsp 的事,有些多管闲事了。。。