Zum Inhalt springen

Sprachserver

Wippy enthalt einen integrierten LSP-Server (Language Server Protocol), der IDE-Funktionen fur Lua-Code bereitstellt. Der Server lauft als Teil der Wippy-Laufzeitumgebung und verbindet sich uber TCP oder HTTP mit Editoren.

  • Code-Vervollstandigung mit typbewussten Vorschlagen
  • Hover-Informationen mit Typen und Signaturen
  • Zur Definition springen
  • Referenzen finden
  • Dokument- und Workspace-Symbole
  • Aufrufhierarchie (eingehende und ausgehende Aufrufe)
  • Echtzeit-Diagnosen (Parse-Fehler, Typfehler)
  • Signaturhilfe fur Funktionsparameter

Aktivieren Sie den LSP-Server in .wippy.yaml:

version: "1.0"
lua:
type_system:
enabled: true
lsp:
enabled: true
address: ":7777"
FeldStandardBeschreibung
enabledfalseTCP-Server aktivieren
address:7777TCP-Adresse
http_enabledfalseHTTP-Transport aktivieren
http_address:7778HTTP-Adresse
http_path/lspHTTP-Endpunktpfad
http_allow_origin*Erlaubter CORS-Ursprung
max_message_bytes8388608Maximale eingehende Nachrichtengrosse (Bytes)

Der TCP-Server kommuniziert uber JSON-RPC 2.0 mit Standard-LSP-Nachrichtenrahmen (Content-Length-Header). Dies ist der primare Transport fur Editor-Integrationen.

Der HTTP-Transport akzeptiert POST-Anfragen mit JSON-RPC-Nutzdaten. Nutzlich fur browserbasierte Editoren und Web-Tools. CORS-Header sind fur Cross-Origin-Zugriff enthalten.

lsp:
enabled: true
http_enabled: true
http_address: ":7778"
http_path: "/lsp"
http_allow_origin: "*"

Der LSP-Server verwendet das wippy://-URI-Schema zur Identifizierung von Registry-Eintragen:

wippy://namespace:entry_name

Editoren ordnen diese URIs den Eintrags-IDs in der Registry zu. Sowohl das wippy://-Schema als auch das reine namespace:entry_name-Format werden akzeptiert.

Der LSP-Server pflegt einen Index aller Code-Eintrage fur schnelle Abfragen. Die Indizierung erfolgt im Hintergrund mit mehreren Workern.

Wichtige Verhaltensweisen:

  • Eintrage werden in Abhangigkeitsreihenfolge indiziert (Abhangigkeiten zuerst)
  • Anderungen losen eine Neuindizierung betroffener Eintrage aus
  • Nicht gespeicherte Editor-Anderungen werden in einem Overlay gespeichert
  • Der Index ist inkrementell - nur geanderte Eintrage werden neu verarbeitet
MethodeBeschreibung
initializeFahigkeitsaushandlung
textDocument/didOpenGeoffnete Dokumente verfolgen
textDocument/didChangeVollstandige Dokumentsynchronisation
textDocument/didCloseDokumente freigeben
textDocument/hoverTypinformation an der Cursorposition
textDocument/definitionZur Definition springen
textDocument/referencesAlle Referenzen finden
textDocument/completionCode-Vervollstandigung
textDocument/signatureHelpFunktionssignaturen
textDocument/diagnosticDatei-Diagnosen
textDocument/documentSymbolDatei-Symbole
workspace/symbolGlobale Symbolsuche
textDocument/prepareCallHierarchyAufrufhierarchie
callHierarchy/incomingCallsAufrufer finden
callHierarchy/outgoingCallsAufgerufene finden

Die Vervollstandigungs-Engine lost Typen uber den Code-Graphen auf. Sie bietet:

  • Mitgliedervervollstandigung nach . und : (Felder, Methoden)
  • Lokale Variablenvervollstandigung
  • Vervollstandigung von Symbolen auf Modulebene
  • Ausloser-Zeichen: ., :

Diagnosen werden wahrend der Indizierung berechnet und umfassen:

  • Parse-Fehler (Syntaxprobleme)
  • Typprufungsfehler (Konflikte, undefinierte Symbole)
  • Schweregrade: error, warning, information, hint

Diagnosen aktualisieren sich wahrend der Eingabe uber das Dokument-Overlay-System.