дзеркало
https://github.com/l0ng-ai/openidea.git
синхронізовано 2026-11-09 19:25:54 +02:00
feat(java): add kmp-lsp as an alternative language server (#1891)
Цей коміт міститься в:
9 files changed
+149
No files matched your search
@@ -151,6 +151,36 @@ mod tests {
|
||||
assert_eq!(select_asset(&names, rules, WIN), Some(names[4]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn kmp_lsp_assets_include_the_native_jar_indexer() {
|
||||
let names = [
|
||||
"kmp-lsp-darwin-aarch64.gz",
|
||||
"kmp-lsp-darwin-aarch64.tar.gz",
|
||||
"kmp-lsp-darwin-x86_64.tar.gz",
|
||||
"kmp-lsp-linux-aarch64.tar.gz",
|
||||
"kmp-lsp-linux-x86_64.tar.gz",
|
||||
"kmp-lsp-windows-x86_64.zip",
|
||||
"kmp-lsp-windows-aarch64.zip",
|
||||
"kmp-lsp-v0.27.0.vsix",
|
||||
"kmp-lsp-win32-x64-v0.27.0.vsix",
|
||||
"kmp-lsp-win32-arm64-v0.27.0.vsix",
|
||||
];
|
||||
let rules = crate::registry::find("kmp-lsp").unwrap().asset_rules();
|
||||
for (os, arch, expected) in [
|
||||
(Os::Mac, Arch::Arm64, names[1]),
|
||||
(Os::Mac, Arch::X64, names[2]),
|
||||
(Os::Linux, Arch::Arm64, names[3]),
|
||||
(Os::Linux, Arch::X64, names[4]),
|
||||
(Os::Windows, Arch::X64, names[8]),
|
||||
(Os::Windows, Arch::Arm64, names[9]),
|
||||
] {
|
||||
assert_eq!(select_asset(&names, rules, Platform { os, arch }), Some(expected));
|
||||
}
|
||||
// The plain gzip, Windows zip and universal VSIX omit the sidecar or server.
|
||||
assert_eq!(select_asset(&[names[0]], rules, MAC_ARM), None);
|
||||
assert_eq!(select_asset(&names[5..8], rules, WIN), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rosetta_fallback_and_missing() {
|
||||
let names = ["zls-x86_64-macos.tar.xz", "zls-x86_64-linux.tar.xz", "zls-x86_64-windows.zip"];
|
||||
|
||||
@@ -618,6 +618,30 @@ pub static TOOLS: &[ToolSpec] = &[
|
||||
homepage: "https://github.com/eclipse-jdtls/eclipse.jdt.ls",
|
||||
needs: &[],
|
||||
},
|
||||
ToolSpec {
|
||||
name: "kmp-lsp",
|
||||
display: "kmp-lsp",
|
||||
kind: LanguageServer,
|
||||
commands: &["kmp-lsp"],
|
||||
method: Method::Release {
|
||||
source: ReleaseSource::GitHub { repo: "Hessesian/kmp-lsp" },
|
||||
// These distributions include the native JAR indexer next to the server.
|
||||
// The single-binary .gz and Windows .zip assets do not.
|
||||
assets: &[
|
||||
rule(Mac, Arm64, "kmp-lsp-darwin-aarch64.tar.gz"),
|
||||
rule(Mac, X64, "kmp-lsp-darwin-x86_64.tar.gz"),
|
||||
rule(Linux, Arm64, "kmp-lsp-linux-aarch64.tar.gz"),
|
||||
rule(Linux, X64, "kmp-lsp-linux-x86_64.tar.gz"),
|
||||
rule(Windows, Arm64, "kmp-lsp-win32-arm64-*.vsix"),
|
||||
rule(Windows, X64, "kmp-lsp-win32-x64-*.vsix"),
|
||||
],
|
||||
locate: &["kmp-lsp"],
|
||||
},
|
||||
fallback: None,
|
||||
version: ver("kmp-lsp"),
|
||||
homepage: "https://github.com/Hessesian/kmp-lsp",
|
||||
needs: &[],
|
||||
},
|
||||
ToolSpec {
|
||||
name: "java-debug",
|
||||
display: "Java Debugger (Microsoft java-debug)",
|
||||
|
||||
@@ -170,6 +170,10 @@ fn interchangeable_servers_list_their_alternatives() {
|
||||
assert_eq!(find(&list, name).alternatives, python);
|
||||
}
|
||||
assert_eq!(find(&list, "vtsls").alternatives, ["vtsls", "typescript-language-server"]);
|
||||
for name in ["jdtls", "kmp-lsp"] {
|
||||
assert_eq!(find(&list, name).alternatives, ["jdtls", "kmp-lsp"]);
|
||||
assert_eq!(find(&list, name).languages, ["Java"]);
|
||||
}
|
||||
// A regular server after a fallback starts no group with it.
|
||||
assert!(find(&list, "angular-language-server").alternatives.is_empty());
|
||||
assert!(find(&list, "ruff").alternatives.is_empty());
|
||||
|
||||
Reference in new issue
Заблокувати користувача