那个 lsp server 需要传递参数?
等我处理一下啊。
而且它这个 serverPath 还不适合直接写死,每个人的路径不是一样的,不是一个系统统一的路径,像vscode中,它是默认先获取项目本地的依赖,如果没有就获取全局安装的依赖,我看这个 issue More flexable configuration? 也提到了类似的问题。目前可以先用 .dir-locals 试试,看看后面有没有好的方案
可以了,直接在 json 文件中添加 capabilities 和 initializationOptions 这两个字段就好了。
项目切换,目前已经给用户提供自定义 json 路径的方案, 但是大家还是反馈希望通过项目来自动切换 json 文件的需求。
还没有想好方案,再想想。
自定义方案的前提是,改的单位是 json , 不要像 lsp-mode 和 eglot 那样提供各种参数去动态修改 json 里面的 key, key 无穷无止,写了一大堆代码和宏,把新加入的开发者都吓晕了。
If encoding or errors are specified, or text (also known as universal_newlines ) is true, the file objects stdin , stdout and stderr will be opened in text mode using the encoding and errors specified in the call or the defaults for
io.TextIOWrapper
.
For stdin , line ending characters
'\n'
in the input will be converted to the default line separatoros.linesep
. For stdout and stderr , all line endings in the output will be converted to'\n'
. For more information see the documentation of theio.TextIOWrapper
class when the newline argument to its constructor isNone
.
Windows下pipe的stdin有这个神奇的\n的转换问题。jsonrpc的消息如果不用\r\n而是\n,Windows会自己转换为\r\n;看谁有经验,能否用io.TextIOWrapper给包装以下?或者Windows下改为用\n(写法就比较丑)
盲猜用 byte stream 就好了?
byte stream就不会有这种自动转换了,不过就得自己input encode,output decode了。 要是能用TextIOWrapper来包装以下子进程的stdin就好了?这个我不熟,简单试了下语法上都没通过。
p = subprocess.Popen(command, bufsize=30000, stdin=subprocess.PIPE, stdout=outfile, stderr=errfile, env=env)
p.stdin = io.TextIOWrapper(p.stdin, newline='', encoding="utf-8")
# p.stdout = io.TextIOWrapper(p.stdout, newline='', encoding="utf-8")
# p.stderr = io.TextIOWrapper(p.stderr, newline='', encoding="utf-8")
这样就可以了,pyright-langserver和rust-analyzer和ts-ls都可以了。
Popen 函数里面加一个 universal_newlines=True 的参数试一下?
代码引用实现了,直接绑定按键到命令lsp-bridge-find-references就可以了,代码引用跳转代码 fork 自 color-rg.el , 非常成熟稳定。
引用后,还可以快速进行替换,批量文本操作后写回文件等高级功能。
universal_newlines是text的别名
没有Windows,帮不了你,只能看你自己折腾了。
这里是我的配置,没有开什么高级功能吧
(corfu-echo-documentation 0.5)
(corfu-max-width 120)
(corfu-preselect-first nil) ;; Disable candidate preselection
今晚回去提一下 issue
这玩意真是坑王呀
你这样改了可以了?我试了还是收不到回复啊。
可以的。pyright/rust-analyzer的补全挺正常的,js的话,lsp消息都有,但是补全菜单不出来,可能时我例子的问题。
pull 了一下最新的,可以了!大佬威武!