lsp+pyls怎么编辑单文件


#1

py文件目录需要有 setup.py 才能用 lsp-mode。

如果我只想编辑单文件的话会提示 LSP :: test.py not in project

我应该怎么做?


#2

随便起个什么项目就行了。比如可以git init

如果用了projectils,最环保的方式是touch .projectile


#3

感谢,这样确实有用。只是python作为脚本语言为什么要采取这种方式呢。


#4

只要有文件夹,就可以设置项目根目录。

不必为 foo.py 创建 foo 目录。

但 foo.py 总归是放在某个目录下,比如 “/path/to/misc”。这时就可以手动设置 misc 为项目根目录。


出现这个问题,是因为你之前某一次操作,手太快,把这个目录放到 lsp 黑名单了。

我在这里有提到:如何让 lsp-mode 根据文件后缀或其它策略选取服务

楼下 yyoncho 也说了打算改进,不知现在是否已经实现。


#5

This is implemented, you could have activation function and start the server based on whatever criteria you want.

@zhscn I guess you have set lsp-auto-guess-root to t? If you set it to nil which is the recommended setting you will be asked to select a root if lsp-mode cannot detect the current root.


#6

It works after setting lsp-auto-guess-root to nil. Thanks :smile:


#7

是 lsp-auto-guess-root的原因,已经解决了


#8

你确定是lsp-auto-guess-root设置为nil吗?


#9

是的,之前设置为t,打开文件时不会有关于project的提示。


#10

I set lsp-auto-guess-root to nil, however, I still get LSP :: No LSP server for python-mode.

好像是这样,有什么办法解决么 PS 重装 lsp 解决了


#11

Make sure that lsp-mode is able to find pyls - (executable-find "pyls") should return the path to “pyls”. You may alter emacs path by (add-to-list 'exec-path "/some-path") or you could change lsp-clients-python-command.


#12

session 信息保存在 ~/.emacs.d/.lsp-session-v1 文件里,lsp 启动之后就读到内存了,所以你修改必须连内存里的 session 也一起修改,才有效。然后再回写文件保证下一次有效。

或者删掉 .lsp-session-v1 然后重启 Emacs。