使用 lsp-pyright ,提示 too many open files, 大家有没有遇到过这种情况?

使用lsp-mode 和 lsp-pyright,启动lsp的时候读取了非常非常多的文件,然后显示如图,我尝试修改了系统文件数量限制,不好使而且我认为他打开这么多文件还没有关闭,本身应该是有问题的,想了解下大家有没有经验,是不是我的使用方式不对,还是有什么设置?

启动lsp时的 message

lsp-log

Emacs bug,很烦。最大打开文件好像是 macos 写死 1024 个,也不是写死,是编译 Emacs 的时候读的一个环境变量。

Linux 下应该是不用重新编译 Emacs 也可以调整的。

如果是你项目中有一些不需要加进去的(比如依赖文件 编译文件 等)被加进去了,那么可以设置 ignore 把这些文件忽略跟踪。

他打开这么多文件是为了跟踪文件变化,所以我想应该可以动态增加跟踪列表。不知道有啥更好解决方案没。

能定位到哪个文件吗, 经常遇到这个问题,很烦人。macos。

个人理解,为了跟踪变化,打开文件读取后,理论上应该关闭文件io吧,这看起来应该是一直在占用。还是有什么原因? 这个看起来就像是读取文件然后bug忘记了关掉io,然后累加造成的==!(盲猜,没有验证)

不是 bug 啊,监控变化是会占用文件描述符的,不是只有 IO 才会占用。

你搜搜那句报错,reddit 上有讨论。

嗯,可能是我不太懂,暂时先用回 python-lsp 了,他可能不是bug,但这么大的占用我总感觉不对==!

我是用lsp-pyright 有小半年了,印象中没有遇到这个问题。