Include UDFs versus Snippets einfügen (VSCode-AutoItSnippets)

  • Hi Leute,

    ich persönlich empfand es immer unsauber oder einfach unschön ganze UDFs in sein Skript oder Projekt einzubinden, in Fällen in denen man nur einzelne Funktionen daraus benötigt. Das beim kompilieren die *.exe entsprechend größer wird, ist heutzutage oft kein Problem mehr oder man stört sich daran einfach nicht mehr - ich hingegen schon irgendwie 😅 .

    Daher habe ich mir früher aus den UDFs die einzelnen Funktionen in mein Skript übernommen, damit ich nicht die ganze UDF einbinden (#include) musste.
    Je nach Lizenz, habe ich die Namensnennung der UDF Ersteller oder der Mitwirkenden in den Credits oder Ähnlichem festgehalten, damit es fair bleibt.

    Dann kam die Veränderung:
    Ich lernte Visual Studio Code (VSCode) beruflich kennen, erst für andere Sprachen, dann auch für AutoIt. Mit der schnell besser werdenden und heutzutage sehr mächtigen IntelliSense (code completion) von VSCode kam mir eine Idee.

    Einfach und schnell:
    Funktionen, welche ich oft brauche oder in irgendwelchen (eigenen) UDFs liegen habe, hinterlege ich in Snippet Dateien und kann diese schnell bei Bedarf in das jeweilige Skript oder Projekt einfügen. Wichtig ist mir aber, dass ich auf die Funktionen die in den Snippets liegen von überall zugreifen kann - an meinen privaten Rechner, auf Arbeit oder bei einem Kollegen/Freund. Daher erstellte ich eine VSCode Extension 😀 .

    VSCode-AutoItSnippets:
    Falls du deine AutoIt Projekte ebenfalls mit VSCode umsetzt, dann könnte dich meine AutoIt Snippets Extension dazu interessieren oder dir sogar helfen deine Projekte schneller umzusetzen.

    • Mich würde es sehr freuen wenn ihr einen Blick über das Projekt werfen könntet.
    • Natürlich interessiert mich eure Meinung dazu sowie auch ob der Eine oder Andere seine Funktion(en) teilen möchte und ebenfalls in der Extension verewigt haben möchte 🧐 .
    • Falls dies interessant für euch sein sollte, dann könnt ihr gerne
      • per Pull Request eure Funktionen hinzufügen,
      • oder sie einfach hier schreiben, damit ich sie in die Snippet Dateien aufnehmen kann,
      • oder ihr schreibt mit eine private Nachricht oder Email.
    • Ich bin gespannt ob das hilfreich für euch sein kann, denn immerhin gibt es bereits über 500 Installationen der Extension, was mich freut 😁 .


    So sieht das in der Praxis/Verwendung dann aus:

    https://github.com/Sven-Seyfert/V…ippets#features

    Viele Grüße

    Sven

  • Hi Leute,

    kleiner push zu diesem Thema 😅 .

    Gibt es Meinungen, Pros und Contras, Wünsche, Ideen etc.? Freue mich wirklich über Feedback dazu (auch wenn dies evtl. negativ ausfällt).
    Danke euch 🤞 .

    Viele Grüße

    Sven

  • Gibt es Meinungen, Pros und Contras, Wünsche, Ideen etc.?

    Ich benutze VSCodium bisher nur für Nim und habe mir jetzt mal die AutoIt-Erweiterung von "Damien" und von "4ern" installiert, aber keine von denen hat ein richtiges Syntaxhighlighting für AutoIt.

    In Deinem Beispiel hast Du ein besseres. Welche Erweiterung ist das?

    Deine Snippetsammlung ist recht umfangreich, wenn auch manche Einzeiler überflüssig erscheinen (IMHO). Da ist der Funktionsaufruf nur ein zusätzlicher Geschwindigkeitsnachteil.

    Die vielen Leerzeilen in den Funktionen finde ich persönlich eher zu viel, aber das ist auch Geschmackssache.

    Kann man die Snippets anpassen?

  • Hi BugFix ,


    Danke für dein Feedback 😀 . Kann ich nachvollziehen das du dir gern mit Lua SciTE nach deinen Bedürfnissen anpasst und dir entsprechend alles so konfigurierst wie du es magst.
    Für mich war die Umstellung anfangs auch nicht über Nacht die richtige Entscheidung, doch mittlerweile ist VSCode so anpassbar, ähnlich oder sogar mehr noch als SciTE (je nach Bedarf natürlich), dass ich die Arbeit damit nicht missen wöllte. Insbesondere für den Fakt: "Ein Editor für (nahezu) alles" 😉 .

    hi Oscar ,

    auch dir Danke für dein Feedback 👍 . Also ich nutze die Extension von Damien "Autoit", welche seit über einem Jahr von @loganch (englisches Forum) weitergeführt und maintained wird.



    Diese hat vollständiges Syntax highlighting, IntelliSense und andere Spielereien (ansonsten wäre ich bei SciTE geblieben). Kann sein das du da noch etwas konfigurieren musst, doch soweit ich mich erinnere war das fast nix 😳 . AutoIt by 4ern ist nicht so gut bzw. wird nicht mehr gepflegt soweit ich weiß. Bitte nicht beide Extensions gleichzeitig aktiv haben, dass kann ggf. schon dein fehlendes Syntax highlighting erklären.

    Deine Snippetsammlung ist recht umfangreich, wenn auch manche Einzeiler überflüssig erscheinen (IMHO).

    Da geb' ich dir absolut Recht 😁 , manches ist ziemlich alt und vielleicht sogar überflüssig. Manches davon nutze ich (und hoffentlich auch viele andere Leute) regelmäßig.

    Die vielen Leerzeilen in den Funktionen finde ich persönlich eher zu viel, aber das ist auch Geschmackssache.

    Ja Geschmackssache schon, aber nur bedingt. Ich bin durch .NET ziemlich auf Übersichtlichkeit, Lesbarkeit und andere Clean Code Askpekte getrimmt, daher sehen die Funktionen so aus.

    Kann man die Snippets anpassen?

    Wenn ich sie anpasse bzw. ein Contributer, wirkt sich dies auf alle die die Extension in VSCode eingebunden haben aus. Falls deine Frage darauf abzielt?
    Ansonsten steht es dir natürlich frei, nachdem du die jeweilige Funktion bei dir verwendest/eingefügt hast, diese von Leerzeilen zu befreien 😂 .

    Viele Grüße

    Sven

  • Es gibt Tools, welche den Code nach verwendeten Funktionen durchforsten und die nichtverwendeten rausschmeißen.

    Das erste war damals Cleanscript von Pee.

    In wie weit das heute noch funktioniert müsste man testen.
    Eventuell Pee nach dem Quellcode fragen und entsprechend anpassen.

    Hab auch gehört, dass irgendwelche Obfuscator das auch können.
    Welche genau und wie weiß ich allerdings nicht, da ich diese nicht verwende.

    Diese Ansätze sollten deutlich besser sein, als sich bestimmte Funktionen daraus als Snippets reinzubauen.
    Zum einen bläht man sich eine Datei auf anstatt bestimmte Funktionalitäten in Module ausgelagert zu haben und zum anderen gibt es in UDFs auch oft zig Seitenabhängigkeiten wie z.B. zu bestimmten Konstanten oder anderen Funktionen.

    DIe Snippets so wie ich sie gerne in VSC nutze sind wirklich eher für wiederkehrende Programmkonstrukte wie schnell eine Zeitmessschleife oder ein Debug-Out oder sowas gedacht.

  • bin durch .NET ziemlich auf Übersichtlichkeit, Lesbarkeit und andere Clean Code Askpekte getrimmt,

    Ja, das sind so Paradigmen, die oft als unverrückbar dargestellt werden (wie z. B. auch die 80-Zeichen Zeilenlänge in Python). Das wird dann einfach nicht mehr hinterfragt.

    Leerzeilen zum Gruppieren von Blöcken sind OK. Wird es mehr, leidet aus meiner Sicht die Lesbarkeit deutlich.

    Ist sicher immer Geschmacks- und Gewohnheitssache. :whistling:

  • Bitte nicht beide Extensions gleichzeitig aktiv haben, dass kann ggf. schon dein fehlendes Syntax highlighting erklären.

    Ich habe jetzt schon die anderen komplett deinstalliert, aber trotzdem kein vollständiges Syntax highlighting. :/

    Wenn ich sie anpasse bzw. ein Contributer, wirkt sich dies auf alle die die Extension in VSCode eingebunden haben aus. Falls deine Frage darauf abzielt?

    Meine Frage wäre jetzt eher, ob man eigene Snippets einbauen kann?

    Aber ich werde für AutoIt wohl doch bei SciTE4AutoIt bleiben.

  • Hi AspirinJunkie ,

    Danke auch dir 😀 . Zugegebenermaßen hat mir Melba23 (aus dem englischen Forum) ebenfalls solch einen Hinweis gegeben bzgl. "Au3Stripper". Werde mich damit mal etwas näher beschäftigen.

    Diese Ansätze sollten deutlich besser sein, als sich bestimmte Funktionen daraus als Snippets reinzubauen.
    Zum einen bläht man sich eine Datei auf anstatt bestimmte Funktionalitäten in Module ausgelagert zu haben [...]

    Persönlich gefällt mir der Snippet-Ansatz besser doch darüber kann man sicher streiten. Allerdings muss das einfügen eines Snippets nicht bedeuten, dass man nicht trotzdem in "Modulen" arbeiten kann. Es sollte sich sogar ergänzen bestenfalls. Ich versuche diesen Ansatz der Projektstruktur (auslagern in Modulen) in (fast) all' meinen Projekten zu berücksichtigen wie bspw. hier oder hier (jeweils im src Ordner).

    [...] zum anderen gibt es in UDFs auch oft zig Seitenabhängigkeiten wie z.B. zu bestimmten Konstante

    Das stimmt, jedoch sollen die Snippets solche UDF Klassen nicht komplett ersetzen, dass können sie auch gar nicht, genau aus den von dir genannten Gründen. Ein Snippet ist aus meiner Sicht eher eine abgeschlossen Funktion mit bestenfalls nur einer Aufgabe. Auch wenn einige meiner bisherigen Snippets nicht ganz dahingehen passen 🧐 .

    Danke für die Anregungen und Einschätzungen. Da habe ich was zum grübeln 😁 .

    Viele Grüße

    Sven

  • Hi nochmal,

    Ja, das sind so Paradigmen, die oft als unverrückbar dargestellt werden (wie z. B. auch die 80-Zeichen Zeilenlänge in Python) [...]

    Ja da gebe ich dir Recht, manchmal sollte man diese Dinge hinterfragen, klar.
    Zum Punkt "Gewohnheitssache" => absolut, stimme ich zu.

    [...] aber trotzdem kein vollständiges Syntax highlighting [...]

    Hmm, vielleicht komme ich mal dazu 'nen kleines Tutorial dazu zu schreiben. Wirklich klein, damit die erste Hürde gering ist.

    Meine Frage wäre jetzt eher, ob man eigene Snippets einbauen kann?

    Ja klar 😀 , einfach [F1] > ">snippets" > "Preferences: Configure User Snippets" > "AutoIt" auswählen und Snippet in JSON Syntax einfügen.

    Wichtig dabei ist nur, dass ein "$" Zeichen durch "$$" ersetzt wird. Speichern und du kannst dein Snippet zu deiner Sprache (in unserem Fall AutoIt) aufrufen und verwenden.

    Zitat von Oscar

    Aber ich werde für AutoIt wohl doch bei SciTE4AutoIt bleiben.

    Dein gutes Recht, wenn auch schade 😁 .

    Viele Grüße

    Sven

  • Hmm, vielleicht komme ich mal dazu 'nen kleines Tutorial dazu zu schreiben. Wirklich klein, damit die erste Hürde gering ist.

    fände ich super :D ich bin kein profi aber ich hab es auch mal mit vscode versucht aber bin dann doch überhaupt nicht zurecht gekommen wahrscheinlich war auch noch etwas falsch eingestellt^^

    Bin dann schnell zu SciTE wieder zurück. wäre aber offen für was neues wenn es genauso gut funktioniert.

  • Ich verwende auch die Erweiterung von Damien, zusammen mit Farbdesign "Tomorrow Night Blue".

    Oh shit!

    Das lag am Farbschema. Ich hatte "Dunkel (Visual Studio)" eingstellt gehabt.

    Ich habe jetzt auf "Dunkel+ (dunkles Standarddesign)" umgestellt und da sieht das schon viel besser aus. :klatschen:

    So nebenbei sieht das jetzt auch bei Nim viel besser aus. 8):thumbup:

    Ja klar 😀 , einfach [F1] > ">snippets" > "Preferences: Configure User Snippets" > "AutoIt" auswählen und Snippet in JSON Syntax einfügen.

    Danke! :):thumbup:

  • Hi und bitteschön Oscar ,

    freut mich das es nun klappt - besser aussieht 😁 🎉 .

    hi MojoeB ,

    wenn der VSCode-Einstieg tatsächlich problematisch sein sollte, schreibe ich mal was zusammen. Wartet aber bitte nicht darauf, das mache ich sobald ich die Kapazität dazu habe 😉 .
    Das TODO habe ich schon mal auf mein "Planning-Board" aufgenommen 🤭 .

    Noch mal zu dir BugFix :

    Farbdesign "Tomorrow Night Blue"

    Ich nutze übrigens One Dark Pro was mir neben AutoIt insbesondere bei anderen Sprachen super gefällt.

    Viele Grüße

    Sven

  • wenn der VSCode-Einstieg tatsächlich problematisch sein sollte, schreibe ich mal was zusammen. Wartet aber bitte nicht darauf, das mache ich sobald ich die Kapazität dazu habe 😉 .

    kein Problem :) jeder hat seine Sachen die erstmal Priorität haben.