lsp-bridge -- 速度最快的语法补全插件

初始化的时候, initializationOptions 都是空的吗? 有必传的参数怎么传?

那个 lsp server 需要传递参数?

volar 就需要传 typescript.serverPath ,不然就会报错:

等我处理一下啊。

而且它这个 serverPath 还不适合直接写死,每个人的路径不是一样的,不是一个系统统一的路径,像vscode中,它是默认先获取项目本地的依赖,如果没有就获取全局安装的依赖,我看这个 issue More flexable configuration? 也提到了类似的问题。目前可以先用 .dir-locals 试试,看看后面有没有好的方案

可以了,直接在 json 文件中添加 capabilities 和 initializationOptions 这两个字段就好了。

1 个赞

项目切换,目前已经给用户提供自定义 json 路径的方案, 但是大家还是反馈希望通过项目来自动切换 json 文件的需求。

还没有想好方案,再想想。

自定义方案的前提是,改的单位是 json , 不要像 lsp-mode 和 eglot 那样提供各种参数去动态修改 json 里面的 key, key 无穷无止,写了一大堆代码和宏,把新加入的开发者都吓晕了。

1 个赞

Java语言已经支持了,感谢 @EdmondFrank 大佬!

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 separator os.linesep . For stdout and stderr , all line endings in the output will be converted to '\n' . For more information see the documentation of the io.TextIOWrapper class when the newline argument to its constructor is None .

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 , 非常成熟稳定。

引用后,还可以快速进行替换,批量文本操作后写回文件等高级功能。

2 个赞

universal_newlines是text的别名

没有Windows,帮不了你,只能看你自己折腾了。

这里是我的配置,没有开什么高级功能吧 :joy:

  (corfu-echo-documentation 0.5)
  (corfu-max-width 120)
  (corfu-preselect-first nil)    ;; Disable candidate preselection

今晚回去提一下 issue

这玩意真是坑王呀

你这样改了可以了?我试了还是收不到回复啊。

可以的。pyright/rust-analyzer的补全挺正常的,js的话,lsp消息都有,但是补全菜单不出来,可能时我例子的问题。

pull 了一下最新的,可以了!大佬威武!