I think it would be possible to support bazel with jdtls, just as salesforce/bazel-vscode-java provides jars via contributes.javaExtensions to redhat-developer/vscode-java which get injected into the jdtls initializationOptions.bundles
The salesforce/bazel-vscode-java extension downloads p2-repository.zip which it then extracts, does some renaming and puts them under ~/.vscode/extensions/sfdc.bazel-vscode-java-1.4.0/server. And since salesforce/bazel-vscode-java exports a list of those jars via contributes.javaExtensions in it's package.json those settings are available to other extensions.
Source: salesforce/bazel-vscode-java:gulpfile.js and salesforce/bazel-vscode-java:package.json
When redhat-developer/vscode-java starts the language server it pulls from contributes.javaExtensions and provides those as a bundles array under the initializationOptions when starting jdtls:
Source: redhat-developer/vscode-java:src/extension.ts
I think the Zed Java Extension could potentially add support for Bazel with the following settings:
{
"lsp": {
"jdtls": {
"initialization_options": {
"bundles": [
"somepath/org.eclipse.equinox.event.jar",
"somepath/com.github.ben-manes.caffeine.jar",
"somepath/org.jsr-305.jar",
"somepath/org.fusesource.jansi.jar",
"somepath/com.google.protobuf.jar",
"somepath/com.salesforce.bazel.importedsource.jar",
"somepath/com.salesforce.bazel.sdk.jar",
"somepath/com.salesforce.bazel.eclipse.core.jar",
"somepath/com.salesforce.bazel.eclipse.jdtls.jar"
]
}
}
}
}
Totally untested but I wanted to document my research somewhere.
Not sure whether the current Extension APIs are sufficient to support downloading arbitrary zip files, extracting a subset of them and then injecting the correct pathing for where those files are. But assuming this works, we could certainly provide instructions doing this manually.
I'm not a Java programmer.
I have no experience with Bazel.
Would love if someone can see if they can get this working.
See also:
I think it would be possible to support bazel with jdtls, just as salesforce/bazel-vscode-java provides jars via
contributes.javaExtensionsto redhat-developer/vscode-java which get injected into the jdtlsinitializationOptions.bundlesThe
salesforce/bazel-vscode-javaextension downloads p2-repository.zip which it then extracts, does some renaming and puts them under~/.vscode/extensions/sfdc.bazel-vscode-java-1.4.0/server. And sincesalesforce/bazel-vscode-javaexports a list of those jars viacontributes.javaExtensionsin it'spackage.jsonthose settings are available to other extensions.Source: salesforce/bazel-vscode-java:gulpfile.js and salesforce/bazel-vscode-java:package.json
When
redhat-developer/vscode-javastarts the language server it pulls fromcontributes.javaExtensionsand provides those as abundlesarray under theinitializationOptionswhen startingjdtls:Source: redhat-developer/vscode-java:src/extension.ts
I think the Zed Java Extension could potentially add support for Bazel with the following settings:
{ "lsp": { "jdtls": { "initialization_options": { "bundles": [ "somepath/org.eclipse.equinox.event.jar", "somepath/com.github.ben-manes.caffeine.jar", "somepath/org.jsr-305.jar", "somepath/org.fusesource.jansi.jar", "somepath/com.google.protobuf.jar", "somepath/com.salesforce.bazel.importedsource.jar", "somepath/com.salesforce.bazel.sdk.jar", "somepath/com.salesforce.bazel.eclipse.core.jar", "somepath/com.salesforce.bazel.eclipse.jdtls.jar" ] } } } }Totally untested but I wanted to document my research somewhere.
Not sure whether the current Extension APIs are sufficient to support downloading arbitrary zip files, extracting a subset of them and then injecting the correct pathing for where those files are. But assuming this works, we could certainly provide instructions doing this manually.
I'm not a Java programmer.
I have no experience with Bazel.
Would love if someone can see if they can get this working.
See also: