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

我看了vscode-java的实现, -data目录他是指定的vscoe workspace的目录。例如: /home/archer/.config/Code - OSS/User/workspaceStorage/${workpsaceid}/jdt_ws

我用他们提供的 jdtls wrapper 跑不起来, 目前是这样配置的:

{
    "name": "jdtls",
    "languageId": "java",
    "command": ["java",
                "-Declipse.application=org.eclipse.jdt.ls.core.id1",
                "-Dosgi.bundles.defaultStartLevel=4",
                "-Dlog.level=ALL",
                "-javaagent:/Users/pi/.m2/repository/org/projectlombok/lombok/1.18.16/lombok-1.18.16.jar",
                "-noverify",
                "-Xmx1G",
                "-jar",
                "/Users/pi/.emacs.d/.cache/lsp/eclipse.jdt.ls/plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar",
                "-configuration",
                "/Users/pi/.emacs.d/.cache/lsp/eclipse.jdt.ls/config_mac",
                "-data",
                "/Users/pi/.emacs.d/workspace/"
               ],
"libraryDirectories": ["~/java-workspace"]
}

jdtls wrapper 是可以跑起来的.

  1. 首先删除(如果有的话)因为jdtls wrapper没指定 -data参数在项目下生成的workspace目录,猜测是因为生成workspace里面的java文件找不到定义才报错的。

  2. 使用jdtls wrapper 也需要指定 -data参数才行。

image

问题在于默认的jdtls配置无法根据项目来指定-data :rofl:

你和 @vritser 交流吧,他专业

服务器返回 Snippet 自动展开的功能已经被 @vritser 大佬完成了。

1 个赞

大佬,如果按照目前的设计,我提供一个可以快速生成jdtls配置的函数咋样?

类似这种:

我们直接按项目名创建子目录如何:

- doc_file = os.path.join(self.file_action.lsp_server.library_directories[0], doc_name)
+ project_name = self.file_action.project_path[self.file_action.project_path.rindex('/') + 1:]
+ doc_file = os.path.join(self.file_action.lsp_server.library_directories[0], project_name, doc_name)

这个哪里语法错误?

这一行 之上增加一个 print(type(response), response) 看看输出啥?

测试了下 Python 3.8 及以下,比如访问 dict[0] 就会报这个错,Python 3.9 就不会。

应该是更新了 Union[dict, list[dict]] 这个类型标注导致的,我在 Python 3.7 下测试一下补个 fix

我的3.7的,应该就是这个问题

python版本3.7的,版本低就会出错

@manateelazycat 提交了 Pull Request ,在 Python 3.7 下测试过了。

合并了, @smr1113 试一下

pass~~~

增加了中文文档,哪位大佬英文好的帮我改改英文README的内容。:sob:

感觉是可以的,这样不同项目生成的文件就分开了。

可以考虑在 Wiki 添加 NixOS 页面,介绍一下安装 Python 依赖的简单指导。

如果使用 home-manager

home.packages = with pkgs; [
  (python3.withPackages (p: with p; [ epc ]))
];

如果使用 configuration.nix

environment.systemPackages = with pkgs; [
  (python3.withPackages (p: with p; [ epc ]))
];

EAF 这一块的 Python 依赖有点多,NixOS 下的配置我还没整理出来。

EAF 可以看看这个文件 emacs-application-framework/dependencies.json at master · emacs-eaf/emacs-application-framework · GitHub

你来加吧, 我才把 lsp-bridge 的编辑权限设置为任何人都可以编辑了。