Neue Massenersetzung der VSCode-Erweiterung

Diesen Sommer fand ich mich selbst Herstellung a Upgrade von 140 auf 20 mit tausend Objekten aus der Anpassung. In dieser Situation stellen Sie fest, dass Sie immer wieder denselben Ersatz vornehmen.

. Bereich intern entfernen.

. BuildInvLineBuffer zum BuildInvLineBuffer2 in Vorauszahlung.

. Artikelquerverweis für Artikelreferenz

. Querverweis auf Referenz.

. Sprachaufnahme zu Codeeinheit.

. FilterReservFor in Codeunits zum SetReservationFilters in Aufzeichnungen.

Und viele von ihnen werden täglich aufgezogen!!!

Der logische Schritt für mich, sich wiederholendes Problem = neu VSCode Verlängerung. Und ich habe bereits eine Reihe davon veröffentlicht, die sich alle auf die Steigerung der Softwareproduktion konzentrieren VSCode: Herausgeber Jesús Almaraz Martin – Visual Studio Marketplace

Ich liebe es, neue Werkzeuge zu machen, aber eigentlich erstmal step fragte im Web “Hat das schon mal jemand gemacht?” Und die Antwort in Market Place war früher … ja.

Und ja, es gibt eine vorherige Erweiterung, die ersetzt werden kann VSCode am Marktplatz. In dieser App können Sie einmal Ersetzungen festlegen und anwenden, aber wir hatten ein Problem: wir habe es Bis zu den angewendeten Operationen in jeder einzelnen Datei, meine ich, gibt es in dieser vorherigen Erweiterung keinen Massenersatz. Ich habe dem Autor vor drei Monaten eine Nachricht in Git hinterlassen, in der ich um eine Lösung gebeten habe, und warte immer noch. Aber um das Tool zu machen, habe ich sehr wenig Zeit gewartet (mein Mangel an Geduld ist legendär). Also habe ich die gegabelt Repository und meine erste Idee war, nur eine einzige Anpassung vorzunehmen: Massenersetzung in jeder Arbeitsbereichsdatei. Aber als ich anfing, hatte ich viele Probleme mit TypeScript und der Art und Weise, wie der Code strukturiert ist: Es war keine bewusste Entscheidung, aber ich habe die ganze Erweiterung noch einmal gemacht, zwei Bereiche hinzugefügt, die Möglichkeit, neue selbstkonfigurierte Diagnosen hinzuzufügen und Korrekturen für jede Diagnose. Ich habe den Weg beibehalten, die Ersetzungsregeln vom Original festzulegen, aber bald habe ich es geändert.

Das Ergebnis: Benutzerdefinierte Diagnosen, Massenersetzungen und konfigurierbare Fixes – Visual Studio Marketplace

Die Grundidee ist:

. Legen Sie Ersetzungen in einer JSON-Datei fest.

. Gruppieren Sie diese Ersetzungen in Sätzen.

. Wählen Sie mit einem Befehl einen festgelegten Ersetzungsregelsatz aus und wenden Sie alle darin enthaltenen Regeln auf alle Dateien des Arbeitsbereichs an.

Die Ersetzungsregeln werden wie folgt festgelegt:

{

“Name”: “Ersetzen Codeunits FilterReservFor,

Suchausdruck: “.*(.FilterReservFor)\((.*),(.*)\);”,

Ausdruck ersetzen: “$3.SetReservationFilters($2);”

},

Ich beginne mit einer komplexen Ersetzung, um zu erklären, dass die Erweiterung die Ersetzung mithilfe regulärer JavaScript-Ausdrücke vornimmt, und dies war sehr leistungsfähig. Hier eine kurze Anleitung zu diesem Thema: Reguläre Ausdrücke – JavaScript | MDN (mozilla.org)

Das wichtigste Konzept dabei sind Gruppen, Gruppen zum Suchen und Gruppen zum Ersetzen. Es ist einfacher, dies an einem Beispiel zu erklären. Mit den vorherigen Ausdrücken ersetzt die Zeichenfolge

SalesLineReserve.FilterReserveFor(Reservierungseintrag , Verkaufslinie);

zum

Verkaufslinie.SetReservationFilters(Reservierungseintrag);

Sie können Suchgruppen mit () festlegen und sie anstelle von $ mit Gruppenauftragsnummer verwenden. Wir können auch eine JavaScript-Ersetzungsfunktion in einem Modul setzen, aber ich würde dieses Feature lieber in weiteren Beiträgen erklären.

Natürlich können Sie eine einfache Zeichenfolgenersetzung wie folgt festlegen:

Interne Scope-Anweisung entfernen

{

“Name”: “Bereich intern entfernen”,

Suchausdruck: \[Scope\(‘Internal’\)]”,

Ausdruck ersetzen: “”

},

Ersetzen Sie BuildInvLineBuffer2 durch BuildInvLineBuffer.

{

“Name”: “BuildInvLineBuffer2 en Vorbereitung,

Suchausdruck: “BuildInvLineBuffer2”,

Ausdruck ersetzen: BuildInvLineBuffer

},

Weitere Informationen finden Sie im Einstiegsbild der Erweiterung README. Benutzerdefinierte Diagnosen, Massenersetzungen und konfigurierbare Fixes – Visual Studio Marketplace

Schritt 1. Erstellen Sie eine JSON-Setup-Datei.

Alle Definitionen von Ersetzungen und deren Gruppierung in Sets müssen in einer Datei festgelegt werden. Diese Dateidefinition könnte mit Erweiterungs-Snippets erleichtert werden “tDiagnosticsFile“, “tReplaceRule” und “tReplaceRuleset” um diese Datei zu erreichen:

{

“Regeln”: [

        {

            “name”: “Remove Scope Internal”,

            searchExpresion: \[Scope\(‘Internal’\)]”,

Ausdruck ersetzen: “”

},

{

“Name”: “BuildInvLineBuffer2 en Vorbereitung,

Suchausdruck: “BuildInvLineBuffer2”,

Ausdruck ersetzen: BuildInvLineBuffer

},

{

“Name”: “Ersetzen Codeunits FilterReservFor,

Suchausdruck: “.*(.FilterReservFor)\((.*),(.*)\);”,

Ausdruck ersetzen: “$3.SetReservationFilters($2);”

}

],

“Regelsätze”: [

        {

            “name”: “Initial replacement rules from Txt2al”,

            fileExtension: “al”,

            “rules”: [

                “Remove Scope Internal”,

                “BuildInvLineBuffer2 en prepmt,

                “Replace Codeunits FilterReservFor

            ]

}

]

}

Schritt 2. Legen Sie die Datei in den Erweiterungseinstellungen fest.

Im VSCodegehen Sie zu FilePreferenceSettings und legen Sie in Extensions den Dateipfad fest, den Sie erstellen, wie im folgenden Bild gezeigt:

Schritt 3. Ausführen die Regel.

Drücken Sie F1 und führen Sie den Befehl „JAM. Benutzerdefinierte Regeln. Alle Regeln in allen Dokumenten ändern”, wählen Sie einen Regelsatz aus, und alle Ersetzungen werden durchgeführt. Wenn es fertig ist, können Sie das Ergebnis mit File/Save All speichern und alle Editoren schließen.

In weiteren Beiträgen werde ich über andere Erweiterungsfunktionen sowie benutzerdefinierte Diagnosen und Fehlerbehebungen sprechen. Außerdem werde ich die Pläne für weitere Verbesserungen und Funktionen erläutern.

Ich starte eine Sponsoring-Kampagne, um Spenden von Unternehmen zu erhalten, die meinen, dass meine Beratungsarbeit für sie nützlich ist. Wenn Ihr Unternehmen das möchte beitragen zu meinen Softwareprojekten sind willkommen.

Author: admin

Leave a Reply

Your email address will not be published. Required fields are marked *