szó jelentését keresi. A DICTIOUS-ban nem csak a
szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a
szót egyes és többes számban mondani. Minden, amit a
szóról tudni kell, itt található. A
szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. A
és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.
Főnév
Language Server Protocol (tsz. Language Server Protocols)
- (informatika) A Language Server Protocol (LSP) egy nyílt szabvány, amelyet a Microsoft fejlesztett ki azért, hogy elválassza a programozási nyelvhez kapcsolódó funkcionalitásokat a szerkesztőtől vagy IDE-től. Az LSP célja, hogy egységes kommunikációs csatornát biztosítson az editorok és a „nyelvi szerverek” (pl. Clangd, Pyright, Rust Analyzer) között, így a kódolási élmény gazdagabb és nyelvfüggetlen módon bővíthető.
🧠 Mi az LSP lényege?
Hagyományosan minden IDE-nek saját módon kellett implementálnia a különféle nyelvi szolgáltatásokat (pl. autocompletion, goto-definition, linting). Ez sok duplikált munkát jelentett, és a nyelv/IDE kombinációk skálázódása nehéz volt.
Az LSP egy közös nyelvet ad: 🔧 A nyelvi funkciókat egy külön Language Server valósítja meg. 📝 A szerkesztő (pl. VSCode, Neovim, Emacs) ezzel standardizált protokollon keresztül kommunikál.
Ezáltal a kódintelligencia újrafelhasználható több editorban is ugyanazzal a háttérszerverrel.
🧩 Példák nyelvi szerverekre
Nyelv
|
LSP Szerver
|
C/C++
|
Clangd, ccls
|
Python
|
Pyright, pylsp
|
TypeScript
|
typescript-language-server
|
Rust
|
rust-analyzer
|
Go
|
gopls
|
Java
|
Eclipse JDT Language Server
|
Haskell
|
Haskell Language Server
|
🔌 Hogyan működik?
- Editor elindítja a nyelvi szervert.
- A szerver JSON-RPC protokollon keresztül kommunikál az editorral (általában stdio vagy TCP).
- Az editor küld eseményeket (pl. fájl megnyitása, kurzor mozgatása).
- A szerver válaszol: javaslatokat, hibákat, információkat ad vissza.
📦 Példák LSP funkciókra
- textDocument/completion – automatikus kiegészítés
- textDocument/hover – lebegő dokumentáció megjelenítése
- textDocument/definition – ugrás definícióhoz
- textDocument/references – hivatkozások keresése
- workspace/symbol – projektbeli szimbólumok listázása
- textDocument/formatting – kódformázás
Ezek mind LSP-üzenet típusok, amiket a szerkesztő küld a nyelvi szervernek, és az válaszol.
Az LSP kommunikáció általában JSON-RPC 2.0 formátumot követ. Példa egy „go to definition” kérésre:
{
"jsonrpc": "2.0",
"id": 1,
"method": "textDocument/definition",
"params": {
"textDocument": { "uri": "file:///foo.cpp" },
"position": { "line": 12, "character": 8 }
}
}
A válasz tartalmazza a fájl pozícióját, ahová ugrani kell.
🛠️ Fejlesztői előnyök
- Nyelv szerver írása: A nyelvi szerver írójának nem kell minden szerkesztőhöz külön támogatást írnia.
- Editor fejlesztője: Elég egyszer megvalósítani az LSP támogatást → működni fog minden nyelvhez, amelynek van szervere.
- Közösség: LSP támogatás gyorsan nő minden editorban, legyen az VS Code, Neovim, Emacs, Sublime stb.
🧱 LSP komponensek
- Client (pl. VSCode, Neovim) – Felhasználói interakciókat figyel.
- Server (pl. Clangd, Pyright) – Elemzi a kódot, visszajelzést ad.
- Transport layer – stdio, TCP, WebSocket (WebAssembly környezetekben is!)
- Protokoll – JSON-RPC + szabványosított LSP parancsok
📚 Specifikáció és dokumentáció
Az LSP hivatalos specifikációja itt érhető el: 🔗 https://microsoft.github.io/language-server-protocol
A protokoll verziózott, és folyamatosan bővül új képességekkel: pl. semantic tokens, inlay hints, progress reporting stb.
🔄 Workflow áttekintés
+-------------+ JSON-RPC +-------------+
| VSCode | <---------------------> | Clangd |
| (Editor) | | (LSP Server)|
+-------------+ +-------------+
↑ ↓
Text document open Analyze file
Cursor moved Provide suggestions
User requests info Send documentation
💬 LSP az editorban
A legtöbb modern szerkesztő LSP pluginekkel használható:
- VS Code – beépített támogatás (extensionön keresztül)
- Neovim –
:LspStart
, nvim-lspconfig
, coc.nvim
- Emacs –
lsp-mode
, eglot
- Sublime Text –
LSP
plugin
📌 Záró gondolat
A Language Server Protocol forradalmasította a programozási nyelv támogatásának megközelítését: nem nyelv- vagy editor-specifikus, hanem egységes, újrafelhasználható komponensre épül. Ha egy editor támogatja az LSP-t, és van megfelelő nyelvi szerver, akkor azonnal profi szintű fejlesztői élményt nyújthat — anélkül, hogy a szerkesztőt vagy a nyelvet külön konfigurálni kellene.