İçeriğe geç

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 SunucuUzantılarGereksinimler
astro.astroAstro projeleri için otomatik kurulumlar
bash.sh, .bash, .zsh, .kshbash-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, .ednclojure-lsp komutu mevcut
dart.dartdart komutu mevcut
deno.ts, .tsx, .js, .jsx, .mjsdeno komutu mevcut (deno.json/deno.jsonc otomatik olarak algılanır)
elixir-ls.ex, .exselixir komutu mevcut
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueProjede eslint bağımlılığı
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK kurulu
gleam.gleamgleam komutu mevcut
gopls.gogo komutu mevcut
hls.hs, .lhshaskell-language-server-wrapper komutu mevcut
jdtls.javaJava SDK (version 21+) kurulu
kotlin-ls.kt, .ktsKotlin projeleri için otomatik kurulumlar
lua-ls.luaLua projeleri için otomatik kurulumlar
nixd.nixnixd komutu mevcut
ocaml-lsp.ml, .mliocamllsp komutu mevcut
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteProjede oxlint bağımlılığı
php intelephense.phpPHP projeleri için otomatik yüklemeler
prisma.prismaprisma komutu mevcut
pyright.py, .pyipyright bağımlılığı kurulu
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruruby ve gem komutları mevcut
rust.rsrust-analyzer komutu mevcut
sourcekit-lsp.swift, .objc, .objcppswift kurulu (macOS’ta xcode)
svelte.svelteSvelte projeleri için otomatik kurulumlar
terraform.tf, .tfvarsGitHub sürümlerinden otomatik yüklemeler
tinymist.typ, .typcGitHub sürümlerinden otomatik yüklemeler
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsProjede typescript bağımlılığı
vue.vueVue projeleri için otomatik yüklemeler
yaml-ls.yaml, .ymlRed Hat yaml-language-server’ı otomatik olarak yükler
zls.zig, .zonzig 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:

  1. Dosya uzantısını tüm etkin LSP sunucularına göre kontrol eder.
  2. 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.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}

Her LSP sunucusu aşağıdakileri destekler:

PropertyTypeAçıklama
disabledbooleanLSP sunucusunu devre dışı bırakmak için bunu true olarak ayarlayın
commandstring[]LSP sunucusunu başlatma komutu
extensionsstring[]Bu LSP sunucusunun işlemesi gereken dosya uzantıları
envobjectSunucuyu başlatırken ayarlanacak ortam değişkenleri
initializationobjectLSP 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:

opencode.json
{
"$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:

opencode.json
{
"$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:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}

Belirli bir LSP sunucusunu devre dışı bırakmak için disabled’yi true olarak ayarlayın:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}

Özel LSP sunucuları

Komutu ve dosya uzantılarını belirterek özel LSP sunucuları ekleyebilirsiniz:

opencode.json
{
"$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.