Bilingual-Python – VS-Code-Erweiterung
Diese kleine, lokale Erweiterung sorgt dafür, dass fremdsprachige
Python-Dateien in VS Code
- eigene Syntax-Hervorhebung bekommen:
.dpy (Deutsch) → syntaxes/deutschpython.tmLanguage.json
.lpy (Latein) → syntaxes/lateinpython.tmLanguage.json
- keine falschen Fehler von Pylance/dem Python-Linter erhalten, weil
diese Dateien als eigenständige Sprachen (
deutschpython bzw.
lateinpython) registriert sind und nicht als python – die
Python-Erweiterung analysiert sie deshalb nicht direkt.
- trotzdem echte, Pylance-gestützte IntelliSense bekommen (siehe
unten) – nur eben über einen Umweg statt direkter Analyse.
Zusätzlich gibt es einen Play-Button oben rechts im Editor
(„Bilingual-Python: Datei ausführen"), der die aktuelle Datei je nach
Endung über dpy oder lpy (aus dem bilingualpython-Paket, siehe
../README.md) in einem Terminal ausführt.
IntelliSense über Pylance
Da .dpy/.lpy-Dateien als eigene Sprachen laufen, kann Pylance sie
nicht direkt analysieren. Die Erweiterung überbrückt das: Im Hintergrund
wird pro geöffneter Datei eine unsichtbare "Schatten"-Python-Datei
gepflegt, in der jedes übersetzte Schlüsselwort/Builtin 1:1 durch sein
Python-Äquivalent ersetzt ist (wenn → if, drucke → print, klasse
→ class, …). Positionen werden dabei per Zuordnungstabelle hin- und
zurückgerechnet. Dadurch funktionieren in .dpy/.lpy-Dateien ganz
normal:
- Hover – Typinformationen, Docstrings, Signaturen von Pylance
(zusätzlich zur eigenen "Wort → Python"-Übersetzung).
- Autovervollständigung – inklusive echter Symbole aus deinem Code
(Variablen, Methoden, Modul-Attribute), nicht nur der Schlüsselwortliste.
- Signaturhilfe beim Tippen von Funktionsaufrufen.
- Gehe zu Definition (
F12) – springt bei Definitionen innerhalb der
gleichen Datei zurück in deine .dpy/.lpy-Quelle, bei Stdlib-/Fremd-
modulen in deren echte .py-Datei.
- Fehler-/Warn-Unterstreichungen – echte Pyright-Diagnosen (z. B.
unbekannter Name, Typfehler), eingeblendet an der richtigen Stelle in
deiner Datei.
Voraussetzung: Die Erweiterung Python (ms-python.python, bringt
Pylance mit) muss installiert sein. Ist sie es nicht, erscheint einmalig
ein Hinweis mit Link zur Installation; die Syntax-Hervorhebung und der
Play-Button funktionieren aber auch ohne.
Über die Einstellung bilingualpython.pylanceBruecke (Standard: true)
lässt sich die Brücke bei Bedarf abschalten.
Bekannte Einschränkungen: Es entsteht keine physische Datei auf der
Festplatte – Importe von anderen .dpy/.lpy-Dateien lösen sich daher
nicht auf (echte .py-Module und die Standardbibliothek funktionieren
normal). Mehrzeilige Docstrings/Strings werden nur zeilenweise geschützt
erkannt; enthaltene Wörter können in der unsichtbaren Schattendatei
fälschlich übersetzt werden – das betrifft nur deren Analyse, nie die
eigentliche Quelldatei.
Installation (lokal, ohne Marketplace)
Ausführliche Schritt-für-Schritt-Anleitung mit mehreren Alternativen
(auch für den Fall, dass „Install from Location..." bei dir nicht
existiert), inklusive Update-Anleitung: siehe
INSTALLATION.md.
Kurzfassung:
bilingualpython installieren, damit die Befehle dpy und lpy
existieren:
cd ..
pip install -e .
- In VS Code: Befehlspalette (
Strg+Umschalt+P) → „Extensions:
Install from Location...“ → diesen Ordner (vscode-bilingualpython)
auswählen.
Ganz ohne Erweiterung funktioniert die Fehlervermeidung übrigens auch
schon über ../.vscode/settings.json: Die Dateiendungen .dpy und
.lpy werden dort bereits eigenen Sprach-IDs zugeordnet, sodass der
Python-Linter sie ignoriert – nur die hübsche Syntax-Hervorhebung und
IntelliSense fehlen dann.
Eine weitere Sprache ergänzen
- Grammatik-Datei nach dem Muster von
syntaxes/lateinpython.tmLanguage.json
anlegen (Scope-Name source.<endung>).
- Eine
language-configuration.<sprache>.json anlegen (Einrückungsregeln
mit den neuen Schlüsselwörtern).
- In
package.json unter contributes.languages und
contributes.grammars eintragen, plus die Endung im when-Ausdruck
des Menüpunkts ergänzen.
- In
extension.js die Dateiendung in BEFEHL_JE_ENDUNG sowie einen
neuen Eintrag in WORT_KARTE (für Autovervollständigung, Hover und
die Pylance-Brücke) ergänzen.