problem
rt,最近在写 CS61B 的作业,在这个项目里面只有最顶上是包含了 .git 的文件,但是里面单个的子文件才是一次的作业,每次 eglot 都把最顶上的文件夹当成 workspace,导致 lsp 功能无法正常使用。
more information
CS61B-Assignments-spring-2021 on master [!]
❯ tree -L 1
.
├── disc01
├── lab1
├── lab2
├── lab2setup
├── lab3
├── lab4
├── lab5
├── lab6
├── lab7
├── lab8
├── library-sp21
├── proj0
├── proj1
├── proj1ec
├── proj2
├── proj3
└── README.org
17 directories, 1 file
已有的尝试
问了 AI,eglot 会找 ‘.project’,但事实并非如此。
我尝试了在子文件夹里面新建 .git, 但是仍然 reconnect 最顶上的文件夹
看你是用的java, 用maven 嘛,把子文件夹做成maven子 模块,lsp 服务器会认
我已尝试不知道为什么还是无效,
父文件夹
<packaging>pom</packaging>
<modules>
<module>lab3</module>
</modules>
子文件夹下
//....
<parent>
<groupId>CS61B</groupId>
<artifactId>61BMasterPom</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- <relativePath>../library-sp21/javalib/masterpom.xml</relativePath> -->
<relativePath>../pom.xml</relativePath>
</parent>
<repositories>
<repository>
<id>cs61b-repo</id>
<url>file://${project.basedir}/../library-sp21/javalib</url>
</repository>
</repositories>
<groupId>CS61B</groupId>
<artifactId>lab3</artifactId>
<version>1.0-SNAPSHOT</version>
//....
详情可以查看 here
你先在父目录运行一下,mvn install, 看一看每个子目录下是否正常编译,确保你的Maven多模块配置没有问题。配置好了是肯定可以工作的
(use-package eglot
:config
(defun rc/find-root-for-eglot-for-clj
(dir)
(when (bound-and-true-p eglot-lsp-context)
(let ((root (locate-dominating-file dir ".eglot-root")))
(when root (cons 'transient root)))))
(add-hook 'project-find-functions #'rc/find-root-for-eglot-for-clj))
这是我自己用的配置,用法就是在子目录里创建一个 .eglot-root 文件,然后eglot就会把这个子目录当project-root
1 个赞
我发现如果使用 mvn install 会出现大量的报错,而我现在还不太会解决hhh。
fdaf
8
感觉设置这个变量就可以了:project-vc-extra-root-markers
spring 真别折磨自己了,idea 社区版很香。。。。jdtls本身就卡,还有各种问题,体验差太多了
设置这个变量,会导致 consult-ripgrep 这类grep cmd搜索的时候固定在这个extra-root下吧。
比如是个大repo,希望eglot处理各自子project,但是grep的时候还是搜索整个大repo