Skip to content

Commit 34a92c6

Browse files
committed
feat(lsp): add 20 additional LSP servers from OpenCode reference
Add comprehensive LSP server support covering web frameworks, linters, and system languages: Phase 1 - Web/Common: - Biome: JS/TS/JSON/CSS linter with auto-download - Svelte: Svelte language support with auto-download - Astro: Astro language support with auto-download - YamlLS: YAML language server via npm - BashLS: Shell script support via npm - DockerfileLS: Dockerfile support via npm Phase 2 - Additional Languages: - Rubocop: Ruby linter (requires gem install) - ElixirLS: Elixir language server with Mix build - ZLS: Zig language server with GitHub auto-download - C#/F#: .NET language support via dotnet tool - SourceKit: Swift (macOS system-only) - Clangd: C/C++ with GitHub auto-download - JDTLS: Java via Eclipse download - LuaLS: Lua with GitHub auto-download - PHP: Intelephense via npm - OCaml: OCaml-LSP (system-only) - TerraformLS: HashiCorp Terraform with GitHub auto-download - TexLab: LaTeX with GitHub auto-download - Gleam: Gleam language (system-only) All servers follow existing patterns with proper: - Exit code validation for archive extraction - Cross-platform fs.readdir() instead of shell commands - Mix build step error handling for ElixirLS - Version tracking with marker files Closes #50
1 parent c78da98 commit 34a92c6

2 files changed

Lines changed: 1968 additions & 4 deletions

File tree

packages/lsp/CLAUDE.md

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,51 @@ src/
1919

2020
## Supported Language Servers
2121

22+
### Core Languages
23+
2224
| Server | ID | Extensions | Root Detection |
2325
|--------|-----|------------|----------------|
2426
| TypeScript | `typescript` | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | package-lock.json, bun.lockb, bun.lock, yarn.lock, pnpm-lock.yaml |
2527
| Deno | `deno` | .ts, .tsx, .js, .jsx, .mjs | deno.json, deno.jsonc |
26-
| Vue | `vue` | .vue | package.json, package-lock.json, bun.lockb, bun.lock, pnpm-lock.yaml, yarn.lock |
27-
| Oxlint | `oxlint` | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | .oxlintrc.json, package-lock.json, bun.lockb, bun.lock, pnpm-lock.yaml, yarn.lock, package.json |
28-
| ESLint | `eslint` | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | package-lock.json, bun.lockb, bun.lock, pnpm-lock.yaml, yarn.lock |
28+
| Vue | `vue` | .vue | package-lock.json, bun.lockb, bun.lock, pnpm-lock.yaml, yarn.lock |
29+
| Svelte | `svelte` | .svelte | package-lock.json, bun.lockb, bun.lock, pnpm-lock.yaml, yarn.lock |
30+
| Astro | `astro` | .astro | package-lock.json, bun.lockb, bun.lock, pnpm-lock.yaml, yarn.lock |
2931
| Pyright | `pyright` | .py, .pyi | pyproject.toml, setup.py, requirements.txt, pyrightconfig.json |
3032
| Gopls | `gopls` | .go | go.work, go.mod, go.sum |
3133
| Rust Analyzer | `rust-analyzer` | .rs | Cargo.toml, Cargo.lock |
3234
| Kotlin | `kotlin` | .kt, .kts | build.gradle.kts, build.gradle, settings.gradle.kts, settings.gradle, pom.xml |
3335
| Dart | `dart` | .dart | pubspec.yaml, pubspec.lock |
34-
| Prisma | `prisma` | .prisma | schema.prisma, prisma/schema.prisma |
36+
37+
### Linters
38+
39+
| Server | ID | Extensions | Root Detection |
40+
|--------|-----|------------|----------------|
41+
| Biome | `biome` | .ts, .tsx, .js, .jsx, .json, .css, .vue, .svelte, .astro, .html | biome.json, biome.jsonc, package-lock.json |
42+
| Oxlint | `oxlint` | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | .oxlintrc.json, package-lock.json |
43+
| ESLint | `eslint` | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | package-lock.json, bun.lockb, bun.lock, pnpm-lock.yaml, yarn.lock |
44+
| Rubocop | `rubocop` | .rb, .rake, .gemspec, .ru | Gemfile, Gemfile.lock |
45+
46+
### Additional Languages
47+
48+
| Server | ID | Extensions | Root Detection | Auto-Download |
49+
|--------|-----|------------|----------------|---------------|
50+
| Prisma | `prisma` | .prisma | schema.prisma, prisma/schema.prisma | npm |
51+
| YAML | `yaml` | .yaml, .yml | package-lock.json | npm |
52+
| Bash | `bash` | .sh, .bash, .zsh, .ksh | (project root) | npm |
53+
| Dockerfile | `dockerfile` | .dockerfile | (project root) | npm |
54+
| PHP | `php` | .php | composer.json, composer.lock | npm |
55+
| ElixirLS | `elixir-ls` | .ex, .exs | mix.exs, mix.lock | GitHub + Mix |
56+
| ZLS | `zls` | .zig, .zon | build.zig | GitHub |
57+
| C# | `csharp` | .cs | .sln, .csproj, global.json | dotnet tool |
58+
| F# | `fsharp` | .fs, .fsi, .fsx, .fsscript | .sln, .fsproj, global.json | dotnet tool |
59+
| SourceKit | `sourcekit` | .swift | Package.swift | (system only) |
60+
| Clangd | `clangd` | .c, .cpp, .cc, .cxx, .h, .hpp | compile_commands.json, CMakeLists.txt | GitHub |
61+
| JDTLS | `jdtls` | .java | pom.xml, build.gradle, build.gradle.kts | Eclipse |
62+
| LuaLS | `lua-ls` | .lua | .luarc.json, .stylua.toml, selene.toml | GitHub |
63+
| OCaml | `ocaml` | .ml, .mli | dune-project, dune-workspace, .merlin | (system only) |
64+
| TerraformLS | `terraform` | .tf, .tfvars | .terraform.lock.hcl, terraform.tfstate | GitHub |
65+
| TexLab | `texlab` | .tex, .bib | .latexmkrc, .texlabroot | GitHub |
66+
| Gleam | `gleam` | .gleam | gleam.toml | (system only) |
3567

3668
## Adding a New Server
3769

0 commit comments

Comments
 (0)