हिन्दी
दस्तावेज़
LSP सर्वर

LSP सर्वर

OpenCode आपके LSP सर्वर के साथ इंटीग्रेट होता है।

OpenCode आपके Language Server Protocol (LSP) के साथ इंटीग्रेट हो सकता है ताकि LLM को आपके कोडबेस के साथ इंटरैक्ट करने में मदद मिल सके। यह LLM को फ़ीडबैक प्रदान करने के लिए diagnostics का उपयोग करता है।


बिल्ट-इन

OpenCode लोकप्रिय भाषाओं के लिए कई बिल्ट-इन LSP सर्वर के साथ आता है:

LSP ServerExtensionsRequirements
astro.astroAstro प्रोजेक्ट के लिए ऑटो-इंस्टॉल करता है
bash.sh, .bash, .zsh, .kshbash-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, .ednclojure-lsp कमांड उपलब्ध
dart.dartdart कमांड उपलब्ध
deno.ts, .tsx, .js, .jsx, .mjsdeno कमांड उपलब्ध (deno.json/deno.jsonc को ऑटो-डिटेक्ट करता है)
elixir-ls.ex, .exselixir कमांड उपलब्ध
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueप्रोजेक्ट में eslint निर्भरता
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK इंस्टॉल किया हुआ
gleam.gleamgleam कमांड उपलब्ध
gopls.gogo कमांड उपलब्ध
hls.hs, .lhshaskell-language-server-wrapper कमांड उपलब्ध
jdtls.javaJava SDK (version 21+) इंस्टॉल किया हुआ
julials.jljulia और LanguageServer.jl इंस्टॉल किया हुआ
kotlin-ls.kt, .ktsKotlin प्रोजेक्ट के लिए ऑटो-इंस्टॉल करता है
lua-ls.luaLua प्रोजेक्ट के लिए ऑटो-इंस्टॉल करता है
nixd.nixnixd कमांड उपलब्ध
ocaml-lsp.ml, .mliocamllsp कमांड उपलब्ध
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteप्रोजेक्ट में oxlint निर्भरता
php intelephense.phpPHP प्रोजेक्ट के लिए ऑटो-इंस्टॉल करता है
prisma.prismaprisma कमांड उपलब्ध
pyright.py, .pyipyright निर्भरता इंस्टॉल की हुई
razor.razor, .cshtml.NET SDK और VS Code C# एक्सटेंशन इंस्टॉल किया हुआ
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruruby और gem कमांड उपलब्ध
rust.rsrust-analyzer कमांड उपलब्ध
sourcekit-lsp.swift, .objc, .objcppswift इंस्टॉल किया हुआ (macOS पर xcode)
svelte.svelteSvelte प्रोजेक्ट के लिए ऑटो-इंस्टॉल करता है
terraform.tf, .tfvarsGitHub releases से ऑटो-इंस्टॉल करता है
tinymist.typ, .typcGitHub releases से ऑटो-इंस्टॉल करता है
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsप्रोजेक्ट में typescript निर्भरता
vue.vueVue प्रोजेक्ट के लिए ऑटो-इंस्टॉल करता है
yaml-ls.yaml, .ymlRed Hat yaml-language-server ऑटो-इंस्टॉल करता है
zls.zig, .zonzig कमांड उपलब्ध

जब LSP सक्षम होता है, तो उपरोक्त में से कोई एक फ़ाइल एक्सटेंशन डिटेक्ट होने और requirements पूरी होने पर सर्वर शुरू हो जाते हैं।

Note: आप OPENCODE_DISABLE_LSP_DOWNLOAD एनवायरनमेंट वेरिएबल को true पर सेट करके स्वचालित LSP सर्वर डाउनलोड अक्षम कर सकते हैं।


यह कैसे काम करता है

जब LSP सक्षम होता है और opencode कोई फ़ाइल खोलता है, तो यह:

  1. फ़ाइल एक्सटेंशन को सभी सक्षम LSP सर्वर के विरुद्ध जाँचता है।
  2. यदि पहले से नहीं चल रहा है तो उपयुक्त LSP सर्वर शुरू करता है।

कॉन्फ़िगर करें

आप अपने opencode कॉन्फ़िग में lsp सेक्शन के माध्यम से LSP सर्वर सक्षम और कस्टमाइज़ कर सकते हैं।

सभी बिल्ट-इन LSP सर्वर सक्षम करने के लिए, lsp को true पर सेट करें।

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

ओवरराइड या कस्टम सर्वर कॉन्फ़िगर करते समय बिल्ट-इन को सक्षम रखने के लिए एक ऑब्जेक्ट का उपयोग करें।

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

प्रत्येक कॉन्फ़िगर किया गया LSP सर्वर एंट्री निम्नलिखित का समर्थन करता है:

सर्वर एंट्री को command की आवश्यकता होती है जब तक कि वे केवल किसी सर्वर को अक्षम न करें।

PropertyTypeDescription
disabledbooleanLSP सर्वर अक्षम करने के लिए इसे true पर सेट करें
commandstring[]LSP सर्वर शुरू करने के लिए कमांड
extensionsstring[]फ़ाइल एक्सटेंशन जिन्हें इस LSP सर्वर को संभालना चाहिए
envobjectसर्वर शुरू करते समय सेट करने के लिए एनवायरनमेंट वेरिएबल
initializationobjectLSP सर्वर को भेजने के लिए initialization विकल्प

आइए कुछ उदाहरण देखें।


एनवायरनमेंट वेरिएबल

LSP सर्वर शुरू करते समय एनवायरनमेंट वेरिएबल सेट करने के लिए env property का उपयोग करें:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "rust": {
      "command": ["rust-analyzer"],
      "env": {
        "RUST_LOG": "debug"
      }
    }
  }
}

Initialization विकल्प

LSP सर्वर को initialization विकल्प पास करने के लिए initialization property का उपयोग करें। ये सर्वर-विशिष्ट सेटिंग्स हैं जो LSP initialize अनुरोध के दौरान भेजी जाती हैं:

opencode.json
{
  "$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 पर सेट करें:

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 सर्वर

आप command और फ़ाइल एक्सटेंशन निर्दिष्ट करके कस्टम LSP सर्वर जोड़ सकते हैं:

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

फ़ाइल में बिना किसी अतिरिक्त सामग्री के केवल लाइसेंस कुंजी होनी चाहिए।