LSP Sunucular
opencode, LSP sunucularınızla bütünleşir.
opencode, LLM’nin kod tabanınızla etkileşime girmesine yardımcı olmak için Dil Sunucusu Protokolünüzle (LSP) bütünleşir. LLM’ye geri bildirim sağlamak için tanılamayı kullanır.
Built-in
opencode, popüler diller için çeşitli yerleşik LSP sunucularıyla birlikte gelir:
| LSP Sunucu | Uzantılar | Gereksinimler |
|---|---|---|
| astro | .astro | Astro projeleri için otomatik kurulumlar |
| bash | .sh, .bash, .zsh, .ksh | bash-language-server’ı otomatik olarak yükler |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | C/C++ projeleri için otomatik kurulumlar |
| csharp | .cs | .NET SDK kurulu |
| clojure-lsp | .clj, .cljs, .cljc, .edn | clojure-lsp komutu mevcut |
| dart | .dart | dart komutu mevcut |
| deno | .ts, .tsx, .js, .jsx, .mjs | deno komutu mevcut (deno.json/deno.jsonc otomatik olarak algılanır) |
| elixir-ls | .ex, .exs | elixir komutu mevcut |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | Projede eslint bağımlılığı |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK kurulu |
| gleam | .gleam | gleam komutu mevcut |
| gopls | .go | go komutu mevcut |
| hls | .hs, .lhs | haskell-language-server-wrapper komutu mevcut |
| jdtls | .java | Java SDK (version 21+) kurulu |
| kotlin-ls | .kt, .kts | Kotlin projeleri için otomatik kurulumlar |
| lua-ls | .lua | Lua projeleri için otomatik kurulumlar |
| nixd | .nix | nixd komutu mevcut |
| ocaml-lsp | .ml, .mli | ocamllsp komutu mevcut |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | Projede oxlint bağımlılığı |
| php intelephense | .php | PHP projeleri için otomatik yüklemeler |
| prisma | .prisma | prisma komutu mevcut |
| pyright | .py, .pyi | pyright bağımlılığı kurulu |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | ruby ve gem komutları mevcut |
| rust | .rs | rust-analyzer komutu mevcut |
| sourcekit-lsp | .swift, .objc, .objcpp | swift kurulu (macOS’ta xcode) |
| svelte | .svelte | Svelte projeleri için otomatik kurulumlar |
| terraform | .tf, .tfvars | GitHub sürümlerinden otomatik yüklemeler |
| tinymist | .typ, .typc | GitHub sürümlerinden otomatik yüklemeler |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | Projede typescript bağımlılığı |
| vue | .vue | Vue projeleri için otomatik yüklemeler |
| yaml-ls | .yaml, .yml | Red Hat yaml-language-server’ı otomatik olarak yükler |
| zls | .zig, .zon | zig komutu mevcut |
Yukarıdaki dosya uzantılarından biri tespit edildiğinde ve gereksinimler karşılandığında LSP sunucuları otomatik olarak etkinleştirilir.
Nasıl Çalışır?
Opencode bir dosyayı açtığında:
- Dosya uzantısını tüm etkin LSP sunucularına göre kontrol eder.
- Henüz çalışmıyorsa uygun LSP sunucusunu başlatır.
Yapılandır
LSP sunucularını, opencode yapılandırmanızdaki lsp bölümü aracılığıyla özelleştirebilirsiniz.
{ "$schema": "https://opencode.ai/config.json", "lsp": {}}Her LSP sunucusu aşağıdakileri destekler:
| Property | Type | Açıklama |
|---|---|---|
disabled | boolean | LSP sunucusunu devre dışı bırakmak için bunu true olarak ayarlayın |
command | string[] | LSP sunucusunu başlatma komutu |
extensions | string[] | Bu LSP sunucusunun işlemesi gereken dosya uzantıları |
env | object | Sunucuyu başlatırken ayarlanacak ortam değişkenleri |
initialization | object | LSP sunucusuna gönderilecek başlatma seçenekleri |
Bazı örneklere bakalım.
Ortam değişkenleri
LSP sunucusunu başlatırken ortam değişkenlerini ayarlamak için env özelliğini kullanın:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "rust": { "env": { "RUST_LOG": "debug" } } }}Initialization options
Başlatma seçeneklerini LSP sunucusuna iletmek için initialization özelliğini kullanın. Bunlar LSP initialize isteği sırasında gönderilen sunucuya özel ayarlardır:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "initialization": { "preferences": { "importModuleSpecifierPreference": "relative" } } } }}LSP sunucularını devre dışı bırakma
tüm LSP sunucularını genel olarak devre dışı bırakmak için lsp’yi false olarak ayarlayın:
{ "$schema": "https://opencode.ai/config.json", "lsp": false}Belirli bir LSP sunucusunu devre dışı bırakmak için disabled’yi true olarak ayarlayın:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "disabled": true } }}Özel LSP sunucuları
Komutu ve dosya uzantılarını belirterek özel LSP sunucuları ekleyebilirsiniz:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "custom-lsp": { "command": ["custom-lsp-server", "--stdio"], "extensions": [".custom"] } }}Ek Bilgiler
PHP Intelephense
PHP Intelephense, bir lisans anahtarı aracılığıyla premium özellikler sunar. Anahtarı (yalnızca) şu adresteki bir metin dosyasına yerleştirerek bir lisans anahtarı sağlayabilirsiniz:
- MacOS/Linux’ta:
$HOME/intelephense/license.txt - Windows’ta:
%USERPROFILE%/intelephense/license.txt
Dosya, ek içerik olmadan yalnızca lisans anahtarını içermelidir.