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

LSP सर्वर

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

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

बिल्ट-इन सपोर्ट

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

LSP सर्वरएक्सटेंशंसआवश्यकताएं
astro.astroAstro प्रोजेक्ट्स के लिए ऑटो-इंस्टॉल
bash.sh, .bash, .zsh, .kshbash-language-server ऑटो-इंस्टॉल
clangd.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, .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 (वर्जन 21+) इंस्टॉल्ड
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 डिपेंडेंसी इंस्टॉल्ड
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 सर्वर ऑटोमैटिकली इनेबल हो जाते हैं।

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

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

जब opencode एक फाइल खोलता है:

  1. फाइल एक्सटेंशन को सभी इनेबल्ड LSP सर्वर्स के खिलाफ चेक करता है।
  2. अगर पहले से नहीं चल रहा, तो उपयुक्त LSP सर्वर शुरू करता है।

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

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

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

प्रत्येक LSP सर्वर निम्नलिखित को सपोर्ट करता है:

प्रॉपर्टीटाइपविवरण
disabledbooleanLSP सर्वर को डिसेबल करने के लिए true सेट करें
commandstring[]LSP सर्वर शुरू करने का कमांड
extensionsstring[]फाइल एक्सटेंशंस जो यह LSP सर्वर हैंडल करेगा
envobjectसर्वर शुरू करते समय एनवायरनमेंट वेरिएबल्स
initializationobjectLSP सर्वर को भेजने के लिए इनिशियलाइज़ेशन ऑप्शंस

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

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

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

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

इनिशियलाइज़ेशन ऑप्शंस

LSP सर्वर को इनिशियलाइज़ेशन ऑप्शंस पास करने के लिए initialization प्रॉपर्टी का उपयोग करें। ये सर्वर-स्पेसिफिक सेटिंग्स हैं जो LSP initialize रिक्वेस्ट के दौरान भेजी जाती हैं:

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

नोट: इनिशियलाइज़ेशन ऑप्शंस 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 सर्वर्स

आप कमांड और फाइल एक्सटेंशंस स्पेसिफाई करके कस्टम 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/licence.txt
  • Windows: %USERPROFILE%/intelephense/licence.txt

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