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, .edn | clojure-lsp คำสั่งใช้ได้ |
| dart | .dart | dart คำสั่งใช้ได้ |
| deno | .ts, .tsx, .js, .jsx, .mjs | มีคำสั่ง deno (ตรวจจับอัตโนมัติ deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | elixir คำสั่งใช้ได้ |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | eslint การพึ่งพาในโครงการ |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK ติดตั้งแล้ว |
| gleam | .gleam | gleam คำสั่งใช้ได้ |
| gopls | .go | go คำสั่งใช้ได้ |
| haskell | .hs, .lhs | haskell-language-server-wrapper คำสั่งใช้ได้ |
| jdtls | .java | Java SDK (version 21+) ติดตั้งแล้ว |
| kotlin-ls | .kt, .kts | ติดตั้งอัตโนมัติสำหรับโปรเจ็กต์ Kotlin |
| lua-ls | .lua | ติดตั้งอัตโนมัติสำหรับโปรเจ็กต์ Lua |
| nix | .nix | nixd คำสั่งใช้ได้ |
| ocaml-lsp | .ml, .mli | ocamllsp คำสั่งใช้ได้ |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | oxlint การพึ่งพาในโครงการ |
| php intelephense.php | .php | ติดตั้งอัตโนมัติสำหรับโครงการ PHP |
| prisma | .prisma | prisma คำสั่งใช้ได้ |
| pyright | .py, .pyi | pyright ติดตั้งการพึ่งพาแล้ว |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | มีคำสั่ง ruby และ gem |
| rust | .rs | rust-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, .cts | typescript การพึ่งพาในโครงการ |
| vue | .vue | ติดตั้งอัตโนมัติสำหรับโปรเจ็กต์ Vue |
| yaml-ls | .yaml, .yml | ติดตั้งเซิร์ฟเวอร์ภาษา Red Hat yaml โดยอัตโนมัติ |
| zls | .zig, .zon | zig คำสั่งใช้ได้ |
เซิร์ฟเวอร์ LSP จะถูกเปิดใช้งานโดยอัตโนมัติเมื่อตรวจพบนามสกุลไฟล์ใดนามสกุลหนึ่งข้างต้นและเป็นไปตามข้อกำหนด
มันทำงานอย่างไร
เมื่อ opencode เปิดไฟล์ มันจะ:
- ตรวจสอบนามสกุลไฟล์กับเซิร์ฟเวอร์ LSP ที่เปิดใช้งานทั้งหมด
- เริ่มเซิร์ฟเวอร์ LSP ที่เหมาะสมหากยังไม่ได้ทำงาน
กำหนดค่า
You can customize LSP servers through the lsp section in your opencode config.
{ "$schema": "https://opencode.ai/config.json", "lsp": {}}เซิร์ฟเวอร์ LSP แต่ละเซิร์ฟเวอร์รองรับสิ่งต่อไปนี้:
| คุณสมบัติ | พิมพ์ | คำอธิบาย |
|---|---|---|
disabled | บูลีน | ตั้งค่านี้เป็น true เพื่อปิดการใช้งานเซิร์ฟเวอร์ LSP |
command | สตริง[] | คำสั่งเพื่อเริ่มต้นเซิร์ฟเวอร์ LSP |
extensions | สตริง[] | นามสกุลไฟล์ที่เซิร์ฟเวอร์ LSP นี้ควรจัดการ |
env | วัตถุ | ตัวแปรสภาพแวดล้อมที่จะตั้งค่าเมื่อเริ่มต้นเซิร์ฟเวอร์ |
initialization | วัตถุ | ตัวเลือกการเริ่มต้นที่จะส่งไปยังเซิร์ฟเวอร์ LSP |
ลองดูตัวอย่างบางส่วน
ตัวแปรสภาพแวดล้อม
ใช้คุณสมบัติ env เพื่อตั้งค่าตัวแปรสภาพแวดล้อมเมื่อเริ่มต้นเซิร์ฟเวอร์ LSP:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "rust": { "env": { "RUST_LOG": "debug" } } }}ตัวเลือกการเริ่มต้น
ใช้คุณสมบัติ initialization เพื่อส่งตัวเลือกการเริ่มต้นไปยังเซิร์ฟเวอร์ LSP นี่คือการตั้งค่าเฉพาะเซิร์ฟเวอร์ที่ส่งระหว่างคำขอ LSP initialize:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "initialization": { "preferences": { "importModuleSpecifierPreference": "relative" } } } }}ปิดการใช้งานเซิร์ฟเวอร์ LSP
หากต้องการปิดการใช้งานเซิร์ฟเวอร์ ทั้งหมด LSP ทั่วโลก ให้ตั้งค่า lsp เป็น false:
{ "$schema": "https://opencode.ai/config.json", "lsp": false}หากต้องการปิดการใช้งานเซิร์ฟเวอร์ เฉพาะ LSP ให้ตั้งค่า disabled เป็น true:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "disabled": true } }}เซิร์ฟเวอร์ LSP แบบกำหนดเอง
คุณสามารถเพิ่มเซิร์ฟเวอร์ LSP แบบกำหนดเองได้โดยระบุคำสั่งและนามสกุลไฟล์:
{ "$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
ไฟล์ควรมีเฉพาะรหัสลิขสิทธิ์โดยไม่มีเนื้อหาเพิ่มเติม