LSP सर्वर
OpenCode आपके LSP सर्वर के साथ इंटीग्रेट होता है।
OpenCode आपके Language Server Protocol (LSP) के साथ इंटीग्रेट हो सकता है ताकि LLM को आपके कोडबेस के साथ इंटरैक्ट करने में मदद मिल सके। यह LLM को फ़ीडबैक प्रदान करने के लिए diagnostics का उपयोग करता है।
बिल्ट-इन
OpenCode लोकप्रिय भाषाओं के लिए कई बिल्ट-इन LSP सर्वर के साथ आता है:
| LSP Server | Extensions | Requirements |
|---|---|---|
| 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, .csx | .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 (version 21+) इंस्टॉल किया हुआ |
| julials | .jl | julia और LanguageServer.jl इंस्टॉल किया हुआ |
| 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 निर्भरता इंस्टॉल की हुई |
| razor | .razor, .cshtml | .NET SDK और VS Code C# एक्सटेंशन इंस्टॉल किया हुआ |
| 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 सक्षम होता है, तो उपरोक्त में से कोई एक फ़ाइल एक्सटेंशन डिटेक्ट होने और requirements पूरी होने पर सर्वर शुरू हो जाते हैं।
Note: आप
OPENCODE_DISABLE_LSP_DOWNLOADएनवायरनमेंट वेरिएबल कोtrueपर सेट करके स्वचालित LSP सर्वर डाउनलोड अक्षम कर सकते हैं।
यह कैसे काम करता है
जब LSP सक्षम होता है और opencode कोई फ़ाइल खोलता है, तो यह:
- फ़ाइल एक्सटेंशन को सभी सक्षम LSP सर्वर के विरुद्ध जाँचता है।
- यदि पहले से नहीं चल रहा है तो उपयुक्त LSP सर्वर शुरू करता है।
कॉन्फ़िगर करें
आप अपने opencode कॉन्फ़िग में lsp सेक्शन के माध्यम से LSP सर्वर सक्षम और कस्टमाइज़ कर सकते हैं।
सभी बिल्ट-इन LSP सर्वर सक्षम करने के लिए, lsp को true पर सेट करें।
{
"$schema": "https://opencode.ai/config.json",
"lsp": true
}ओवरराइड या कस्टम सर्वर कॉन्फ़िगर करते समय बिल्ट-इन को सक्षम रखने के लिए एक ऑब्जेक्ट का उपयोग करें।
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}प्रत्येक कॉन्फ़िगर किया गया LSP सर्वर एंट्री निम्नलिखित का समर्थन करता है:
सर्वर एंट्री को command की आवश्यकता होती है जब तक कि वे केवल किसी सर्वर को अक्षम न करें।
| Property | Type | Description |
|---|---|---|
disabled | boolean | LSP सर्वर अक्षम करने के लिए इसे true पर सेट करें |
command | string[] | LSP सर्वर शुरू करने के लिए कमांड |
extensions | string[] | फ़ाइल एक्सटेंशन जिन्हें इस LSP सर्वर को संभालना चाहिए |
env | object | सर्वर शुरू करते समय सेट करने के लिए एनवायरनमेंट वेरिएबल |
initialization | object | LSP सर्वर को भेजने के लिए initialization विकल्प |
आइए कुछ उदाहरण देखें।
एनवायरनमेंट वेरिएबल
LSP सर्वर शुरू करते समय एनवायरनमेंट वेरिएबल सेट करने के लिए env property का उपयोग करें:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"command": ["rust-analyzer"],
"env": {
"RUST_LOG": "debug"
}
}
}
}Initialization विकल्प
LSP सर्वर को initialization विकल्प पास करने के लिए initialization property का उपयोग करें। ये सर्वर-विशिष्ट सेटिंग्स हैं जो LSP initialize अनुरोध के दौरान भेजी जाती हैं:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"],
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}Note: Initialization विकल्प LSP सर्वर के अनुसार अलग-अलग होते हैं। उपलब्ध विकल्पों के लिए अपने LSP सर्वर का डॉक्यूमेंटेशन देखें।
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 सर्वर
आप command और फ़ाइल एक्सटेंशन निर्दिष्ट करके कस्टम 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/license.txt - Windows पर:
%USERPROFILE%/intelephense/license.txt
फ़ाइल में बिना किसी अतिरिक्त सामग्री के केवल लाइसेंस कुंजी होनी चाहिए।