Jazykový server (LSP)
LSP kontroluje soubory a odpovídá na otázky ke kódu pomocí jazykových serverů, ne textovým hledáním. Když Elowen upraví soubor, zkontroluje ho na pozadí a nové diagnostiky předá modelu v jeho dalším tahu. První kontrola server spustí. Vypnutím pluginu se jeho servery zastaví.
Plugin lsp nainstalujte v Nastavení → Pluginy → Dostupné. Vyžaduje Elowen 0.30.4 a novější. Oprávnění Projektu i nástrojů platí dál. Aktuální verzi pluginu a minimální verzi Elowen najdete v registru.
Plugin nemá vlastní stránku v hlavní navigaci ani panel účtu. V konverzaci LSP v liště chatu ukazuje, zda jsou živé diagnostiky aktivní. Administrátoři mohou v Elowen CLI použít /lsp ke zobrazení stavu serverů, přepnutí diagnostik a instalaci či odebrání serverů spravovaných přes npm.
| Nástroj | Co dělá |
|---|---|
LspDiagnostics |
Zkontroluje soubor a vrátí chyby a varování s číslem řádku a sloupce. |
LspGoToDefinition |
Najde definici symbolu. |
LspFindReferences |
Vypíše odkazy na symbol. |
LspHover |
Zobrazí typ a dokumentaci symbolu. |
LspDocumentSymbol |
Vypíše funkce, třídy a proměnné v souboru. |
LspWorkspaceSymbol |
Hledá symboly podle názvu v aktuálním pracovním prostoru. |
Všech šest nástrojů je jen pro čtení a v režimu plánu jsou bezpečné. Hledání symbolů v pracovním prostoru hlásí selhání jazykového serveru výslovně, místo aby tvrdilo, že se žádné symboly nenašly. Zrušená hledání zůstávají odlišná od selhání serveru; prázdný výsledek znamená, že server odpověděl úspěšně.
Servery a nastavení
Elowen podporuje jazykové servery pro TypeScript/JavaScript, Python, Go, Rust, Ruby, PHP, C/C++, Lua, YAML a Bash. Na serveru nejdřív použije vlastní instalační složku a potom hledá v PATH. Ve spravovaných Projektech a na spárovaném počítači prohledá PATH daného cíle. Chybějící servery se pro daný jazyk přeskočí. Spárované počítače používají vlastní cesty Windows, macOS nebo Linux a vlastní nainstalované jazykové servery.
Servery založené na npm umí Elowen nainstalovat sám: TypeScript, Pyright, Intelephense, YAML a Bash. Ostatní servery nainstalujte s jejich jazykovými toolchainy. Průvodce nastavením nabízí server TypeScript; administrátoři mohou servery instalovat a odebírat v dialogu /lsp nebo přes API pluginu: POST /brain/lsp/install a POST /brain/lsp/uninstall přijímají pole command. Stavová routa GET /brain/lsp je dostupná i běžným uživatelům. Ve spravovaných Projektech běží servery v prostředí daného Projektu, zvlášť pro každý účet.
Když konverzace používá váš spárovaný počítač, běží tam všech šest nástrojů i automatické kontroly po úpravě. Nainstalujte na tento počítač potřebný jazykový server a zpřístupněte ho v PATH klienta. Pracovní adresář konverzace je jejím pracovním prostorem pro LSP. Každý účet a každá konverzace vlastní samostatný server; změna vybraného počítače nebo pracovního adresáře ten předchozí uvolní. Nedostupný počítač ohlásí selhání. Připojte se znovu a kontrolu výslovně zopakujte; Elowen požadavek, který ztratil odpověď, neopakuje.
Konfigurace a omezení
Doba nečinnosti se zobrazuje v minutách. Nula vypne uvolnění po vypršení nečinnosti, ale server se uvolní i tak, když práce jeho konverzace skončí. Každé nastavení má krátkou nápovědu a ikona nápovědy nabízí podrobnosti.
| Nastavení | Klíč | Výchozí | Účel |
|---|---|---|---|
| Živá diagnostika | diagnosticsEnabled |
true |
Kontroluje úpravy. Vypnutím se zastaví běžící servery; nástroje zůstanou v nabídce a hlásí, že je LSP vypnuté. Nastavení mění příkaz /lsp. |
| Jak dlouho ponechat servery spuštěné | idleTtlMinutes |
1 min | Záložní uvolnění během práce konverzace. Nastavte 0, chcete-li vypnout uvolnění podle stáří. Konečné dokončení server uvolní i tak. |
Uložení těchto nastavení i přepínač v /lsp, který zapisuje stejné nastavení, vyžádají restart Elowen. Plugin nedeklaruje živou konfiguraci, takže se změna projeví až po restartu.
Kontroly po úpravě jsou nejlepší snahou a pokrývají vlastní operace Write a Edit v Elowen; externí úpravy se kontrolují jen tehdy, když o to požádá nástroj. Diagnostiky, které čekají na další tah konverzace, se uchovávají až pro 20 souborů a čekající výsledky si drží až 50 konverzací. Soubory bez odpovídajícího jazykového serveru se přeskočí. Pokud se po úpravě nezdaří zjištění spravovaného prostředí, hostitel selhání zaloguje a kontrolu přeskočí; úspěšná úprava tím není dotčená. Jazykový server TypeScript používá TypeScript 5.x s přidělením 1024 MiB pro old space a bez samostatného syntax serveru. Automatické stahování typings zůstává u javascriptových projektů zapnuté.
Každá trvalá konverzace, včetně delegované podřízené konverzace, vlastní nejvýše jeden server. Automatické diagnostiky i výslovné nástroje si ho pořizují v procesu, který danou konverzaci vykonává. Změna kořene projektu nebo jazyka serveru zruší staré diagnostiky a před nahrazením starý server uvolní. Konečné vyrovnání běhu, přerušení a uvolnění relace uvolní celý strom procesů; pokus o vyrovnání, který požaduje pokračování, ho neuvolní. Uvolnění se dokončí až poté, co je každý server, který dané uvolnění vlastní, potvrzeně zavřený. Pokud se některý nepodaří zavřít, uvolnění se odmítne a server zůstane evidovaný; konverzace pokračuje s novým serverem a při dalším uvolnění se nepotvrzený server zavírá znovu. Kontrola nečinnosti běží každých pět sekund.