LSP सर्वर
OpenCode आपके LSP सर्वर्स के साथ इंटीग्रेट होता है।
OpenCode Language Server Protocol (LSP) के साथ इंटीग्रेट होता है ताकि LLM को आपके कोडबेस के साथ इंटरैक्ट करने में मदद मिल सके। यह LLM को फीडबैक प्रदान करने के लिए डायग्नोस्टिक्स का उपयोग करता है।
बिल्ट-इन सपोर्ट
OpenCode में लोकप्रिय भाषाओं के लिए कई बिल्ट-इन LSP सर्वर शामिल हैं:
| LSP सर्वर | एक्सटेंशंस | आवश्यकताएं |
|---|---|---|
| astro | .astro | Astro प्रोजेक्ट्स के लिए ऑटो-इंस्टॉल |
| bash | .sh, .bash, .zsh, .ksh | bash-language-server ऑटो-इंस्टॉल |
| clangd | .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 कमांड उपलब्ध |
| hls | .hs, .lhs | haskell-language-server-wrapper कमांड उपलब्ध |
| jdtls | .java | Java SDK (वर्जन 21+) इंस्टॉल्ड |
| kotlin-ls | .kt, .kts | Kotlin प्रोजेक्ट्स के लिए ऑटो-इंस्टॉल |
| lua-ls | .lua | Lua प्रोजेक्ट्स के लिए ऑटो-इंस्टॉल |
| nixd | .nix | nixd कमांड उपलब्ध |
| ocaml-lsp | .ml, .mli | ocamllsp कमांड उपलब्ध |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | प्रोजेक्ट में oxlint डिपेंडेंसी |
| php intelephense | .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 इंस्टॉल्ड (macOS पर xcode) |
| svelte | .svelte | Svelte प्रोजेक्ट्स के लिए ऑटो-इंस्टॉल |
| terraform | .tf, .tfvars | GitHub releases से ऑटो-इंस्टॉल |
| tinymist | .typ, .typc | GitHub releases से ऑटो-इंस्टॉल |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | प्रोजेक्ट में typescript डिपेंडेंसी |
| vue | .vue | Vue प्रोजेक्ट्स के लिए ऑटो-इंस्टॉल |
| yaml-ls | .yaml, .yml | Red Hat yaml-language-server ऑटो-इंस्टॉल |
| zls | .zig, .zon | zig कमांड उपलब्ध |
जब उपरोक्त फाइल एक्सटेंशंस में से कोई एक डिटेक्ट होता है और आवश्यकताएं पूरी होती हैं, तो LSP सर्वर ऑटोमैटिकली इनेबल हो जाते हैं।
नोट: आप
OPENCODE_DISABLE_LSP_DOWNLOADएनवायरनमेंट वेरिएबल कोtrueपर सेट करके ऑटोमैटिक LSP सर्वर डाउनलोड्स को डिसेबल कर सकते हैं।
यह कैसे काम करता है
जब opencode एक फाइल खोलता है:
- फाइल एक्सटेंशन को सभी इनेबल्ड LSP सर्वर्स के खिलाफ चेक करता है।
- अगर पहले से नहीं चल रहा, तो उपयुक्त LSP सर्वर शुरू करता है।
कॉन्फ़िगरेशन
आप अपने opencode कॉन्फ़िग में lsp सेक्शन के माध्यम से LSP सर्वर्स को कस्टमाइज़ कर सकते हैं।
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}प्रत्येक LSP सर्वर निम्नलिखित को सपोर्ट करता है:
| प्रॉपर्टी | टाइप | विवरण |
|---|---|---|
disabled | boolean | LSP सर्वर को डिसेबल करने के लिए true सेट करें |
command | string[] | LSP सर्वर शुरू करने का कमांड |
extensions | string[] | फाइल एक्सटेंशंस जो यह LSP सर्वर हैंडल करेगा |
env | object | सर्वर शुरू करते समय एनवायरनमेंट वेरिएबल्स |
initialization | object | LSP सर्वर को भेजने के लिए इनिशियलाइज़ेशन ऑप्शंस |
आइए कुछ उदाहरण देखें।
एनवायरनमेंट वेरिएबल्स
LSP सर्वर शुरू करते समय एनवायरनमेंट वेरिएबल्स सेट करने के लिए env प्रॉपर्टी का उपयोग करें:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"env": {
"RUST_LOG": "debug"
}
}
}
}इनिशियलाइज़ेशन ऑप्शंस
LSP सर्वर को इनिशियलाइज़ेशन ऑप्शंस पास करने के लिए initialization प्रॉपर्टी का उपयोग करें। ये सर्वर-स्पेसिफिक सेटिंग्स हैं जो LSP initialize रिक्वेस्ट के दौरान भेजी जाती हैं:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}नोट: इनिशियलाइज़ेशन ऑप्शंस LSP सर्वर के अनुसार भिन्न होते हैं। उपलब्ध ऑप्शंस के लिए अपने LSP सर्वर का डॉक्यूमेंटेशन देखें।
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 Intelephense
PHP Intelephense लाइसेंस कुंजी के माध्यम से प्रीमियम फीचर्स प्रदान करता है। आप लाइसेंस कुंजी को निम्न स्थान पर टेक्स्ट फाइल में रख सकते हैं (केवल कुंजी):
- macOS/Linux:
$HOME/intelephense/licence.txt - Windows:
%USERPROFILE%/intelephense/licence.txt
फाइल में केवल लाइसेंस कुंजी होनी चाहिए, कोई अतिरिक्त कंटेंट नहीं।