major
minor
#29089
TL-Script-Funktionen log() und info() um wählbaren Meldungs-Level (INFO, WARN, ERROR) erweitern
#29306
TL Script: dateFormat() should accept an explicit timezone to format Calendar values losslessly
defect
major
#29383
Dead SOCKET_APPENDER (Chainsaw, localhost:4445) in default logging config can stall logging and abort operations under load
minor
#29380
Kontextabhängige Auto-Nummerierung schlägt fehl, wenn Kontext und nummeriertes Objekt in einer Transaktion erzeugt werden
#29390
Teilbaum-Auswahl endet zu früh, wenn die unterste Ebene vom Ebenen-Filter nicht mitgezählt wird
#29393
URL-Routing der React-View-Schicht defekt: ForwardingReactContext delegiert getRouteManager() nicht
#29401
Bilder in einem Bild-Drop-Feld können nicht über das Browser-Kontextmenü kopiert/gespeichert werden
enhancement
Der TL-Script-Editor (TLScriptCodeEditorControl) bietet bereits Code-Completion: Bei Eingabe von ` werden Modell-Elemente vorgeschlagen, bei . Funktionen.
Erweiterung: Bei Eingabe von $ sollen die Variablen vorgeschlagen werden, die an der Cursor-Position im Scope zur Verfügung stehen.
Verhalten
- Das Tippen von $ öffnet das Completion-Popup mit den im aktuellen Scope verfügbaren Variablen; weiteres Tippen filtert die Liste.
- Es werden nur Variablen angeboten, deren Gültigkeitsbereich den Cursor umschließt:
- Lambda-Parameter (x -> ...) sind nur innerhalb des Lambda-Rumpfs sichtbar. Der Rumpf endet an ,`, `; oder der schließenden Klammer.
- Lokale Zuweisungen (name = ...;) sind in den folgenden Statements desselben Blocks sichtbar (block-lokal), aber nicht innerhalb ihrer eigenen rechten Seite.
- Keine Vorschläge:
- auf oberster Ebene ohne umschließendes Lambda bzw. ohne vorangehende Zuweisung,
- innerhalb von String-Literalen ("...", '...'),
- innerhalb von Modell-Konstanten (` `... ``).
Beispiele
count(all(`MyModule:MyType`), x -> $ ) // bietet $x
.filter(y -> $ ) // bietet $x und $y
$ // oberste Ebene: nichts
fun = x -> $x + 1; $ // bietet $fun (nicht $x)
a = 5; b = 3; $ // bietet $a und $b
Umsetzung
- Neuer Scope-Analyzer TLScriptVariableScope: tokenisiert den Text bis zum Cursor mit dem TL-Script-Lexer und ermittelt über einen Stack von Klammer-Frames die sichtbaren Variablen (Lambda-Parameter je Statement/Argument, lokale Zuweisungen je Block). Robust gegen unvollständige Eingaben während des Tippens.
- TLScriptAutoCompletionCommand: neuer Variablen-Completion-Modus; liest das neue Kommando-Argument textToCursor. Modus-Reihenfolge stellt sicher, dass $ in Strings/Modell-Konstanten nicht auslöst.
- TLScriptCodeEditorControl: Trigger-Regex um einen $-Zweig erweitert.
- Client (mode-tlscript.js): sendet zusätzlich den Text bis zur Cursor-Position (textToCursor).
Betroffenes Modul: com.top_logic.model.search.