From 5b739424e402b2dc730fadad13fb9378b83824d9 Mon Sep 17 00:00:00 2001 From: kuro Date: Sat, 10 Oct 2026 00:12:07 +0000 Subject: [PATCH] Add Features & Nutzung --- Features-%26-Nutzung.md | 57 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Features-%26-Nutzung.md diff --git a/Features-%26-Nutzung.md b/Features-%26-Nutzung.md new file mode 100644 index 0000000..bb2e705 --- /dev/null +++ b/Features-%26-Nutzung.md @@ -0,0 +1,57 @@ +# ✨ Features & Nutzung + +Die **BMC TPL Code All around** Extension bringt Funktionen in VS Code, die man sonst nur aus voll integrierten IDEs für Sprachen wie C# oder Java kennt. Hier ist ein detaillierter Überblick, was das Plugin alles unter der Haube hat und wie du es bedienst. + +--- + +## 🤖 Der intelligente Linter (Stateful Analysis) + +Der Linter läuft komplett im Hintergrund und analysiert deinen Code bei jedem Tastendruck in Echtzeit. Er liest den Code kontextbezogen und "merkt" sich, in welchem Block du dich gerade befindest. + +**Was der Linter prüft:** +* **Zuweisungen vs. Vergleiche:** In TPL ist `=` ein Vergleich und `:=` eine Zuweisung. Der Linter wirft einen Fehler, wenn du `=` für eine Zuweisung nutzt. *Aber:* Er ist schlau genug, ein `=` innerhalb eines `if`, `elif` oder `where` Blocks korrekt als Vergleich zu tolerieren! +* **Semikolon-Check:** Erkennt fehlende Semikolons am Ende von Anweisungen. Auch hier gibt es Ausnahmen: In `enumeration`-Blöcken, offenen Bedingungen oder bei mehrzeiligen logischen Operationen (`and`, `or`) bleibt der Linter ruhig. +* **Block- & Klammer-Tracking:** Warnt sofort bei ungeschlossenen runden `(` oder eckigen `[` Klammern und prüft, ob Blöcke wie `pattern`, `definitions` oder `body` korrekt mit `end ...;` geschlossen wurden. +* **TPL-Struktur:** Überprüft die zwingende Reihenfolge (z.B. `metadata` muss vor `pattern` kommen) und warnt, wenn im `metadata`-Block Pflichtfelder (`origin`, `author`, `products`, `publishers`, `tree_path`) fehlen. +* **Versions-Prüfung:** Weist dich darauf hin, wenn du an einem Modul arbeitest, dessen TPL-Version älter ist als die in deinen VS Code Settings definierte Zielversion. + +--- + +## 💡 IntelliSense & smarte Autovervollständigung + +Das Plugin bietet dir immer genau das an, was an der aktuellen Stelle sinnvoll ist (ausgelöst automatisch beim Tippen oder manuell per `Ctrl + Space`). + +**Die Highlights:** +* **BMC Built-In Funktionen:** Wenn du z.B. `discovery.` tippst, erhältst du alle nativen TPL-Methoden dieses Namespaces. +* **Parameter-Überladungen (Method Overloading):** Viele BMC-Funktionen haben optionale Parameter. Wählst du z.B. `number.toText` aus der Liste, kannst du entscheiden, ob du nur die Zahl, oder auch Basis und Breite mitgeben willst. Das gewählte Snippet wird eingefügt und du kannst mit `Tab` elegant von Parameter zu Parameter springen. +* **Projektübergreifendes Scannen:** Importierst du ein fremdes Modul (`from my.company.helpers import string_utils;`), durchsucht das Plugin dein gesamtes Workspace nach dieser Datei und schlägt dir nach der Eingabe von `string_utils.` automatisch alle dort definierten `define`-Methoden vor! +* **Lokale Variablen & Namespaces:** Alle Variablen, die du mit `:=` deklarierst, merkt sich das Plugin. Ebenso werden lokale `definitions`-Blöcke sofort im Autocomplete angeboten. + +--- + +## 🔍 Hover-Dokumentation (Tooltips) + +Fahre einfach mit der Maus über einen Methodennamen, ein Pattern oder eine Tabelle, um sofortige Erklärungen zu erhalten. + +* **Nativer BMC-Support:** Alle offiziellen globalen Funktionen (wie `size`, `datatype`) und Namespace-Methoden (wie `discovery.runCommand`) sind hinterlegt. Du siehst sofort die originale, mehrzeilige BMC-Dokumentation inklusive Parameter-Beschreibung im schicken Markdown-Format. +* **Eigene DocStrings:** Wenn du über einem selbst geschriebenen Pattern oder einer `define`-Methode hoverst, zieht sich das Plugin deinen Multi-Line-Kommentar (`"""` oder `'''`), der direkt unter der Deklaration steht, und zeigt ihn als sauberen Tooltip an. Das funktioniert auch für importierte Module! + +--- + +## 🎨 Auto-Formatter (Visual Alignment) + +Schluss mit chaotischen Einrückungen. Du kannst deinen Code jederzeit per Rechtsklick -> **Dokument formatieren** (oder `Shift + Alt + F`) aufräumen lassen. + +* **Feste Standards:** Der Formatter erzwingt konsistent 4 Leerzeichen pro Einrückungs-Ebene. +* **Dynamische Block-Einrückung:** Der Code "atmet" mit. Öffnende Blöcke (`if`, `for`, `pattern`, `table`) rücken den Code ein, schließende (`end if;`) nehmen die Einrückung wieder zurück. +* **Klammer-Gedächtnis:** Bei mehrzeiligen Arrays oder Funktionsaufrufen merkt sich der Formatter die spaltengenaue Position der öffnenden Klammer `[` oder `(` und richtet alle folgenden Parameter exakt vertikal daran aus. + +--- + +## ⚡ Quick Fixes (Code Actions / Glühbirne) + +Wenn der Linter einen Fehler oder eine Warnung ankreidet, erscheint am Anfang der Zeile oft eine **Glühbirne** (oder drücke `Ctrl + .`). Darüber kannst du Probleme mit einem Klick lösen: + +* **Fehlende Metadaten generieren:** Füllt sofort alle fehlenden Felder in einem unvollständigen `metadata`-Block auf. +* **Log-Statement einfügen:** Platziert das obligatorische `log.debug("Start pattern...");` direkt am Anfang des Bodies, falls du es vergessen hast. +* **Tabs zu Spaces:** Wandelt illegale Tabulator-Zeichen in der beanstandeten Zeile sofort in 4 saubere Leerzeichen um. \ No newline at end of file