Skip to content

LSP เซิร์ฟเวอร์

OpenCode ทำงานร่วมกับเซิร์ฟเวอร์ LSP ของคุณ

OpenCode ทำงานร่วมกับ Language Server Protocol (LSP) เพื่อช่วยให้ LLM โต้ตอบกับโค้ดเบสของคุณ ใช้การวินิจฉัยเพื่อให้ข้อเสนอแนะไปยัง LLM


บิวท์อิน

OpenCode มาพร้อมกับเซิร์ฟเวอร์ LSP ในตัวหลายตัวสำหรับภาษายอดนิยม:

LSP เซิร์ฟเวอร์ส่วนขยายความต้องการ
astro.astroติดตั้งอัตโนมัติสำหรับโปรเจ็กต์ Astro
bash.sh, .bash, .zsh, .kshติดตั้ง bash-Language-Server โดยอัตโนมัติ
clang.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ติดตั้งอัตโนมัติสำหรับโครงการ C/C++
csharp.cs.NET SDK ติดตั้งแล้ว
clojure-lsp.clj, .cljs, .cljc, .ednclojure-lsp คำสั่งใช้ได้
dart.dartdart คำสั่งใช้ได้
deno.ts, .tsx, .js, .jsx, .mjsมีคำสั่ง deno (ตรวจจับอัตโนมัติ deno.json/deno.jsonc)
elixir-ls.ex, .exselixir คำสั่งใช้ได้
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueeslint การพึ่งพาในโครงการ
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK ติดตั้งแล้ว
gleam.gleamgleam คำสั่งใช้ได้
gopls.gogo คำสั่งใช้ได้
haskell.hs, .lhshaskell-language-server-wrapper คำสั่งใช้ได้
jdtls.javaJava SDK (version 21+) ติดตั้งแล้ว
kotlin-ls.kt, .ktsติดตั้งอัตโนมัติสำหรับโปรเจ็กต์ Kotlin
lua-ls.luaติดตั้งอัตโนมัติสำหรับโปรเจ็กต์ Lua
nix.nixnixd คำสั่งใช้ได้
ocaml-lsp.ml, .mliocamllsp คำสั่งใช้ได้
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteoxlint การพึ่งพาในโครงการ
php intelephense.php.phpติดตั้งอัตโนมัติสำหรับโครงการ PHP
prisma.prismaprisma คำสั่งใช้ได้
pyright.py, .pyipyright ติดตั้งการพึ่งพาแล้ว
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruมีคำสั่ง ruby และ gem
rust.rsrust-analyzer คำสั่งใช้ได้
sourcekit-lsp.swift, .objc, .objcppติดตั้ง swift (xcode บน macOS)
svelte.svelteติดตั้งอัตโนมัติสำหรับโครงการ Svelte
terraform.tf, .tfvarsติดตั้งอัตโนมัติจากรุ่น GitHub
tinymist.typ, .typstติดตั้งอัตโนมัติจากรุ่น GitHub
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctstypescript การพึ่งพาในโครงการ
vue.vueติดตั้งอัตโนมัติสำหรับโปรเจ็กต์ Vue
yaml-ls.yaml, .ymlติดตั้งเซิร์ฟเวอร์ภาษา Red Hat yaml โดยอัตโนมัติ
zls.zig, .zonzig คำสั่งใช้ได้

เซิร์ฟเวอร์ LSP จะถูกเปิดใช้งานโดยอัตโนมัติเมื่อตรวจพบนามสกุลไฟล์ใดนามสกุลหนึ่งข้างต้นและเป็นไปตามข้อกำหนด


มันทำงานอย่างไร

เมื่อ opencode เปิดไฟล์ มันจะ:

  1. ตรวจสอบนามสกุลไฟล์กับเซิร์ฟเวอร์ LSP ที่เปิดใช้งานทั้งหมด
  2. เริ่มเซิร์ฟเวอร์ LSP ที่เหมาะสมหากยังไม่ได้ทำงาน

กำหนดค่า

You can customize LSP servers through the lsp section in your opencode config.

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

เซิร์ฟเวอร์ LSP แต่ละเซิร์ฟเวอร์รองรับสิ่งต่อไปนี้:

คุณสมบัติพิมพ์คำอธิบาย
disabledบูลีนตั้งค่านี้เป็น true เพื่อปิดการใช้งานเซิร์ฟเวอร์ LSP
commandสตริง[]คำสั่งเพื่อเริ่มต้นเซิร์ฟเวอร์ LSP
extensionsสตริง[]นามสกุลไฟล์ที่เซิร์ฟเวอร์ LSP นี้ควรจัดการ
envวัตถุตัวแปรสภาพแวดล้อมที่จะตั้งค่าเมื่อเริ่มต้นเซิร์ฟเวอร์
initializationวัตถุตัวเลือกการเริ่มต้นที่จะส่งไปยังเซิร์ฟเวอร์ LSP

ลองดูตัวอย่างบางส่วน


ตัวแปรสภาพแวดล้อม

ใช้คุณสมบัติ env เพื่อตั้งค่าตัวแปรสภาพแวดล้อมเมื่อเริ่มต้นเซิร์ฟเวอร์ LSP:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"env": {
"RUST_LOG": "debug"
}
}
}
}

ตัวเลือกการเริ่มต้น

ใช้คุณสมบัติ initialization เพื่อส่งตัวเลือกการเริ่มต้นไปยังเซิร์ฟเวอร์ LSP นี่คือการตั้งค่าเฉพาะเซิร์ฟเวอร์ที่ส่งระหว่างคำขอ LSP initialize:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}

ปิดการใช้งานเซิร์ฟเวอร์ LSP

หากต้องการปิดการใช้งานเซิร์ฟเวอร์ ทั้งหมด LSP ทั่วโลก ให้ตั้งค่า lsp เป็น false:

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

หากต้องการปิดการใช้งานเซิร์ฟเวอร์ เฉพาะ LSP ให้ตั้งค่า disabled เป็น true:

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

เซิร์ฟเวอร์ LSP แบบกำหนดเอง

คุณสามารถเพิ่มเซิร์ฟเวอร์ LSP แบบกำหนดเองได้โดยระบุคำสั่งและนามสกุลไฟล์:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}

ข้อมูลเพิ่มเติม

PHP อินเทเลฟินส์

PHP Intelephense นำเสนอคุณสมบัติระดับพรีเมียมผ่านรหัสลิขสิทธิ์ คุณสามารถระบุรหัสสัญญาอนุญาตได้โดยการวาง (เท่านั้น) รหัสในไฟล์ข้อความที่:

  • บน macOS/Linux: $HOME/intelephense/license.txt
  • บน Windows: %USERPROFILE%/intelephense/license.txt

ไฟล์ควรมีเฉพาะรหัสลิขสิทธิ์โดยไม่มีเนื้อหาเพิ่มเติม