Notepad++ und AutoIt

    • Offizieller Beitrag

    Hallo,
    ich bin gerade dabei NPP für AutoIt frisch zu machen. ;)
    Die vielen PlugIns dafür machen es wesentlich komfortabler als SciTE.
    Ich werde das dann (wie meine Zeit es zuläßt) Step by Step erweitern, mit ausführlicher Anleitung, welche PlugIns benötigt werden und wie sie konfiguriert werden müssen.

    HINWEIS:
    Es sind nun mehr als 5 Dateien zum Anhängen, sodass ich diese in eine ZIP-Datei packe

    Ein Syntaxhighlighter ist bereits standardmäßig dabei, damit kann man für den Anfang leben - werde ich vllt. später mal 1:1 an die SciTE-Variante anpassen.
    (Folgendes ist geändert, s. Edits)
    Im Moment habe ich erstmal die Aufrufe für "Run Script" und "Compile Script" erstellt.
    Dazu werden einfach die Shortcuts in der "shortcuts.xml" erweitert. Für "Compile" muß man aber eine eigene EXE erstellen, die von dort aufgerufen wird.
    In XP ist die "shortcut.xml" unter: "..User\Anwendungsdaten\Notepad++\", in Win7: "..User\AppData\Roaming\Notepad++\".
    Folgende Zeilen anfügen:

    Code
    <Command name="AutoIt Run" Ctrl="no" Alt="no" Shift="yes" Key="116">&quot;%ProgramFiles%\AutoIt3\AutoIt3.exe&quot; &quot;$(FULL_CURRENT_PATH)&quot;</Command>
            <Command name="AutoIt Compile" Ctrl="yes" Alt="no" Shift="no" Key="118">&quot;DIE_SKRIPT2EXE.EXE&quot; &quot;$(FULL_CURRENT_PATH)&quot;</Command>

    Ich habe hier für "Run Skript" STRG+F5 verwendet, da F5 im Mainmenü verwendet wird und auch eine Umstellung auf anderen Shortcut nach Neustart zurückgesetzt wurde.
    Für "Compile" gilt auch hier STRG+F7.

    Hier das Skript, das für den Compile-Aufruf verwendet wird. Das Problem mit der Quotierung der Pfade hat sich bei mir dann doch noch erledigt. Nach einem Neustart, verhält sich auch mein Laptop 'normal'. :D
    [s. Anhang: NppAut2Exe_au3.au3]
    Ich habe eine Selektion nach x86/x64 integriert, sodass per Standard die Datei auch mit der richtigen Aut2exe kompiliert wird.
    Hier wäre es schön, wenn mal jemand mit x64 testet ob das klappt. Auch 32Bit unter x64 erstellen und umgekehrt. (Erfolg kann ich mangels Hardware nicht selbst überprüfen)
    Danke vorab.

    Edit 22.02.2011
    Ich habe jetzt etwas umgestellt und für die Aufrufe von "Syntaxcheck", "Run Script", "Tidy" und "Compile Script" das sehr mächtige plugIn "NppExec" genutzt. Somit werden die Ergebnisse auch in die Console geschrieben.
    Dazu das PlugIn in <Erweiterungen><PluginManager> aktivieren.
    Da ich für die verwendeten Programmaufrufe auf die Standard-AutoIt Installation zugreife muß also SciTE installiert sein. Oder die Pfade müssen angepaßt werden.
    Damit ihr die Makros nicht selbst basteln müßt hier die kpl. Datei ( ..\User\AppData\Roaming\Notepad++\plugins\Config\npes_saved.txt ), in XP dafür: \Anwendungsdaten

    05.03.2011 Änderung für Tidy: hinfällig

    13.03.2011 Aufrufskripte mit Dateiprüfung:
    Was mir bisher noch mißfallen hat, war die fehlende Prüfung ob auch eine au3-Datei für den Aufruf verwendet wird. Deshalb habe ich jetzt für die Funktionen (Check, Tidy, Run, Compile) Skripte erstellt, die diese Überprüfung vornehmen und bei Erfolg die entsprechende Funktion aufrufen. Dadurch wird die gewünschte Funktion in einem anderen Prozeß aufgerufen und ich reiche die StdOut und StdErr dieser Funktionen an die NPP-Konsole weiter.
    Ich habe die Struktur bei mir jetzt so gestaltet (damit auch Ordnung herrscht 8o )
    ..\[InstallDir Notepad++]\plugins\AutoIt
    In diesen Ordner habe ich die aufrufenden Funktionen gepackt:
    - NppCheck_au3.exe >> Aufruf AU3-Check (STRG+F5)
    - NppTidy_au3.exe >> Aufruf Tidy (STRG+T)
    - NppRun_au3.exe >> Aufruf Skript Run (F5) [15.3.11 - geändert, Syntaxcheck integriert]
    - NppAut2Exe_au3.exe >> Aufruf Skript Kompilieren (STRG+F7)
    - NppDebugToConsole.exe ersetzt mit:
    - NppDebugVar.exe >> wahlweise Debug in Konsole oder MsgBox, s. "npes_saved.txt" >> ( Alt+D / Strg+Shift+D ) NEU 15.03.11
    Es empfiehlt sich, den Font der Konsole auf "Courier New" oder einen anderen Nicht-TT-Font umzustellen. Sonst paßt die Ausgabe (speziell beim Check) nicht. (<Erweiterungen><NppExec><Change Console Font...>)

    Edit 15.03.2011
    NEU: Debug To Console (SciTE: Alt+D und Cursor auf Variable)
    Im Gegensatz zur SciTE-Variante werden auch Array-Variablen erkannt. 8o Der Cursor muß sich aber auf dem Variablennamen befinden, nicht im Indexbereich.
    Bsp.:

    [autoit]

    $a_TeSt[UBound($b_111) +1][$k-5]
    ; eingefügt wird:
    ConsoleWrite('@@ DEBUG_Line: ' & @ScriptLineNumber & ', Var: $a_TeSt[UBound($b_111)+1][$k-5] >> ' & $a_TeSt[UBound($b_111)+1][$k-5] & ' ; @error: ' & @error & ', @extended: ' & @extended & @LF) ; Debug To Console

    [/autoit]


    Noch einen Bug gefixt und Debug To MsgBox ergänzt
    Und noch einen Bug entdeckt (@TAB zur Positions-Auswertung in Leerzeichen wandeln) ;)

    Hier meine aktuelle

    npes_saved.txt - aktualisiert

    Änderung Quota-Darstellung ( Str+Q ). War viel einfacher als erwartet. ;)
    In der Datei "..\AppData\Roaming\Notepad++\langs.xml"

    Code
    <Language name="autoit" ext="au3" commentLine=";~" commentStart="#CS" commentEnd="#CE">

    Statt ";~" könnt ihr auch andere Zeichen hinter dem ";" verwenden.

    Um die Makros im Makro-Menü einzubinden ruft ihr auf: <Erweiterungen><NppExec><Advanced Options ...> und setzt den Haken bei "Place to the Macros submenu". Dann könnt ihr die Makroskripte bei "Associated script:" auswählen und hinzufügen (bei Bedarf den Itemnamen ändern).
    autoit.de/wcf/attachment/12669/
    Unter <Ausführen><Shortcut ändern/Befehl löschen..><Plugin Commands> findet ihr die neuen Menüeinträge und könnt Shortcuts eurer Wahl zuweisen.

    Weitere empfohlene PlugIns:
    - Explorer (ein minimalistischer, aber völlig ausreichender Explorer)
    - MultiClipboard (erklärt sich selbst ;))
    - XBrackets Lite (Autovervollständigung von paarigen Zeichen: ' " ( { [ )
    - nicht zu vergessen: Language Help ==> hier könnt ihr den Pfad zur AutoIt-Hilfe hinterlegen, im Shortcut-Menü (Main - Befehl: Info) F1 rausschmeißen und bei: Plugin Commands - Befehl Help (Pos 21) F1 zuweisen
    Dann läßt sich mit Cursor auf Befehl, wie gewohnt die Hilfe dazu aufrufen.


    Für das Syntaxhighlighting verwende ich jetzt folgende Einstellungen in der "stylers.xml"

    Spoiler anzeigen

    Die UDF werden zwar wie die Standardfunktionen dargestellt, aber für den Anfang gehts erst mal. ;)

    ===== To-Do-List =====
    - Auto-Vervollständigung von Skriptvariablen, -Funktionen
    - Abbrevs
    - Debug To Console/MsgBox ( in SciTE: Alt+D/ Strg+Shift+D )
    - Änderung der Quotierung ( Strg+Q: von ";" zu ";~ " )
    - Verbesserung Syntax-Highlighting ( das hebe ich mir zum Schluß auf, ist ziemlich räudig :wacko: )

    Wenn hier von eurer Seite noch weitere Wünsche sind, bitte meldet euch. Mal sehen, was geht. ;)
    ====================

  • Funktioniert, soweit ich das im Moment beurteilen kann, fehlerfrei.
    Hab erfolgreich ein paar Skripte als x86 und x64 auf einem 64bit WIndows kompiliert. Mit und ohne UPX, verschieden Kompressionen. Nichts auffälliges.

    Du schreibst, du hättest für "Run" Strg+F5 vergeben. In deinem Shortcut Command ist aber Shift+F5 eingetragen.
    Sollte wohl so aussehen?

    Code
    <Command name="AutoIt Run" Ctrl="yes" Alt="no" Shift="no" Key="116">

    edit: Hab mir eben eine autocomplete XML gebastelt. Falls die noch jemand brauchen kann: c:\Programme\Notepad++\plugins\APIs\autoit.xml
    ~siehe Post#4~

    • Offizieller Beitrag

    In deinem Shortcut Command ist aber Shift+F5 eingetragen


    ;) Das ist der Fluch der verzögerten Aktualisierung. Ich hatte die Änderung vorgenommen aber dei Datei noch offen und nicht neugeladen. Somit ist der alte Inhalt noch sichtbar.
    Übrigens sollte die "shortcuts.xml" nicht mit NPP editiert werden. Dann werden die Änderungen nicht übernommen.

    Danke fürs Testen und die Autocomplete-Datei.
    Ab Zeile 4770 sind Win-API Funktionen aber es wird verwiesen auf GDIP.au3 (required: #include <GDIP.au3>)
    Bei mir sind diese WinAPI-Funktionen aber in AutoIt nicht enthalten - woher stammen die?

  • Entschuldige das ich deinen Thread kapere aber du hast mich auf den Geschmack gebracht. :D
    Der Editor hat sich echt gemacht seit ich ihn das letzte mal benutzt hab. Deshalb nochmal ein
    autocomplete inkl. Funktionsbeschreibung und Parametern.
    c:\Programme\Notepad++\plugins\APIs\autoit.xml - autoit.de/wcf/attachment/12660/

    Mit der Syntaxhervorhebung hab ich allerdings ein paar Probleme, vielmehr bei der Bearbeitung. Einige Änderungen bleiben
    wirungslos und neue Keywords und Lexertypes werden scheinbar garnicht beachtet. Deshalb hab ich mir über den Spracheneditor
    ein eigenes Highlighting erstellt. Sollte da jemand Interesse haben ..
    Notepad++ -> Ansicht -> Benutzerdefinierte Sprache -> importieren - autoit.de/wcf/attachment/12663/
    Um den autocomplete nutzen zu können, muss die autoit.xml nochmal als au3.xml in c:\Programme\Notepad++\plugins\APIs\autoit.xml gespeichert werden.

    Die auto propercae Funktion vermisse ich :(

    edit: au3.zip aktualisiert. Npp scheint nicht mit der masse an UDFs umgehen zu können.

  • i2c: Ja, der AutoIt-Lexer von NP++ ist irgewndwie fehlerhaft. Es könnte aber auch sein, dass die XML-Datei zu groß ist, um ganz eingelesen zu werden, wenn man alle Keywords einträgt. Das ist bisher der einzige Grund, warum ich bei SciTe bleibe. Ich hab mir auch schon jEdit angeschaut, aber das war mir zu viel zum Einrichten für einen Editor :D

  • Ja, das Problem war die Masse an Keywords. Notepad war dann so frei, den einfach abzuschneiden.
    Ich hab vorher mit der lang.xml und syler.xml gespielt aber so wie es aussieht, kann man weder zu benutzerdefinierten
    noch zu integrierten Sprachen einfach einen neue WordsStyle erstellen und ihn mit einer Keywords Gruppe verbinden.
    Sehr unflexible das Ganze.

    Da muss dann wohl ein externer Lexer her.

    • Offizieller Beitrag

    Ja der Lexer ist ein Problem. Damit hatte ich schon mal rudimentär gespielt. Aber da das Highlighten für mich nicht die höchste Priorität hat, habe ich das nach hinten geschoben.
    Was mir top gefällt sind die super PlugIns, integrierten (Minimal-) Explorer finde ich recht nützlich und vor allem NppExec ist klasse (tolle Konsole).

    Aber freut mich, dass sich das zu einem Projekt von Interesse entwickelt. :thumbup:
    Ich bastel gerade noch am Syntaxcheck und an Tidy - auch Run und Compile will ich nochmal ändern um die Ausgaben in die Konsole zu bekommen. (Ist man ja von SciTE gewohnt :D)

  • Ich bastel gerade noch am Syntaxcheck und an Tidy - auch Run und Compile will ich nochmal ändern um die Ausgaben in die Konsole zu bekommen. (Ist man ja von SciTE gewohnt :D)


    Versuche doch, den AutoItWrapper an NP++ anzupassen ;)

    Edit: Hab mich gerade etwas durch den NP++ Quellcode gewühlt. Die Implementierung vom Highlighting ist ja schrecklich. Warum ist da nicht eine Datei pro Sprache vorhanden, dann müssten nicht alle Wortlisten auf einmal geladen werden, sondern nur die gerade benötigten. Das ist bei SciTe besser gelöst, auch wen das Dateiformat dafür unübersichtlich ist.

    2 Mal editiert, zuletzt von progandy (21. Februar 2011 um 22:45)

  • Ist doch nur eine Einstellungs- und Gewöhnungssache.
    Dafür hat er mehr Einstellungen und Plugins wie Zweispaltenansicht horizontal + vertikal, damit auch Vergleichen addin (Compere) u.a. mehr ...

    Den AutoItWrapper kann man doch auch mit in die shortcut.xml einfügen, damit hat man den gleichen Komfort wie in AutoIt:

    Code
    <Command name="AutoItWrapper" Ctrl="yes" Alt="no" Shift="no" Key="116">&quot;%ProgramFiles%\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe&quot; /showgui /in &quot;$(FULL_CURRENT_PATH)&quot;</Command>


    Die vollständigen AutoIt-Wörter habe ich ja schon im anderen Posting mitgeteilt, mit Farbeneinstellung wie in SciTE:
    Notepad++ AutoIt.3.3.6.1 Highlighti-Dateien

    AutoItWrapper in Deutsch auf nächster Seite...

    3 Mal editiert, zuletzt von Fintan (27. April 2013 um 18:40)

    • Offizieller Beitrag

    Fintan, deine Datei muß man erst mal im .xml umbenennen und dann läßt sie sich trotzdem nicht im Notpad++ importieren. ;)
    Notpad++ meldet Fail to import.

  • Welche Datei meinst du?

    Wenn du die Zeile mit AutItWrapper meinst, dann diese Zeile einfach in die shortcut.xml mit einfügen.
    Wenn du Higlight-Dateien meinst, mußt du nur die Wörter kopieren und in die jeweilige datei hinein kopieren, das machst du am besten in SciTE, weil N++ das sonst nicht speichert!

    • Offizieller Beitrag
    Zitat

    Welche Datei meinst du?

    Wenn du Higlight-Dateien meinst, mußt du nur die Wörter kopieren und in die jeweilige datei hinein kopieren, das machst du am besten in SciTE, weil N++ das sonst nicht speichert!


    Was soll denn der Humbug? I2c's Datei läuft wenigstens und deine nicht.
    Außserdem haben wir schon festgestellt das Notepad++ mit den vielen UDF Namen nicht zurechtkommt.

  • Den AutoItWrapper kann man doch auch mit in die shortcut.xml einfügen, damit hat man den gleichen Komfort wie in AutoIt:


    Der Wrapper ist speziell für die Interaktion mit SciTe entiwckelt, ein paar Sachen sollte man da schon im Quellcode anpassen.

    • Offizieller Beitrag

    s. Post 1
    Aufruf von "Syntaxcheck", "Run Script", "Tidy" und "Compile Script" über das Konsolen-PlugIn und somit auch Ausgabe der Ergebnisse in die Konsole.
    + Einbindung AutoIt-Hilfe


    Zitat von i2c

    Um den autocomplete nutzen zu können, muss die autoit.xml nochmal als au3.xml in c:\Programme\Notepad++\plugins\APIs\autoit.xml gespeichert werden.

    Du meinst sicher im Ordner "..\APIs" ;)
    OK, habe ich auch getan - die autoit.xml ist enthalten und die identische Datei mit dem Namen au3.xml auch. Aber wie komme ich zur Autovervollständigung? Befehl eingeben - nix passiert. Befehl anfangen und Strg+Space ist ebenfalls wirkungslos.
    Was muß da noch aktiviert werden?

    Habe es jetzt auch rausgefunden :D
    - <Einstellungen><Optionen><Sicherheitskopie/Autovervollständigung> hier muß es aktiviert werden ^^

  • Ich probier grade die Geschichte mit Notepad++ Portable.
    Scheint so weit zu funktionieren.

    Aber wo finde ich die

    NppRunAut2exe.exe ruft die vorab gezeigte DIE_SKRIPT2EXE.EXE auf. Den Pfad könnt ihr direkt hinterlegen oder auf einen Systempfad verweisen, wie hier: $(SYS.ProgramFiles)\NppRunAut2exe.exe, je nachdem, wo ihr die EXE abgespeichert habt.

    NppRunAut2exe.exe ?
    Sehe ich vor lauter Bäumen den Wald nicht?

    Grüße und Dank
    dvmade

    may the source be with you

    Einmal editiert, zuletzt von dvmade (22. Februar 2011 um 22:19)

  • Ich hab jetzt nochmal ein wenig mit der Function List gespielt.
    Bis auf die nicht nachvollziehbaren, völlig willkürlich auftretenden Abstürze im Regeldialog läuft's rund. Die XML hab ich händisch angepasst.
    autoit.de/wcf/attachment/12677/

    C:\Users\&lt;username&gt;\AppData\Roaming\Notepad++\plugins\config\FunctionListRules.xml -bestehenden Block ersetzen


    *Notepad++ sollte während der Änderung geschlossen bleiben

    Was ich ja ziemlich interessant finde - http://npppythonscript.sourceforge.net/

  • may the source be with you

    • Offizieller Beitrag

    Übrigens, hier noch etwas absolut Geniales in NPP!! ==> der Blockeditor!
    Bsp.

    [autoit]

    $test[] = ""
    $test[] = ""
    $test[] = ""
    $test[] = ""
    $test[] = ""

    [/autoit]


    - den Cursor in das erste eckige Klammernpaar setzen
    - Alt+Shift drücken
    - mit Pfeil abwärts bis zum untersten Klammernpaar bewegen ( Alt+Shift gedrückt halten! ), eine Markierung ist dabei NICHT zu sehen.
    - Alt+C drücken ==> Blockeditor wird aufgerufen
    - Startwert und Schrittweite eingeben -- Ausführen
    und schwupps, alles ist ausgefüllt. Saugeil :thumbup:

    autoit.de/wcf/attachment/12740/autoit.de/wcf/attachment/12741/


    Mit Alt+Shift kann man super Spalten markieren, z.B. 5 Zeichen nebeneinander normal markieren und dann mit gedrückter Alt+Shift über die Pfeil abwärts Taste mehrere Zeilen auswählen. Somit wird der kpl. Block (hier 5 Zeichen breit mal n-Zeilen) markiert und kann kopiert, gelöscht oder ersetzt werden.

  • Mit Alt+Shift kann man super Spalten markieren, z.B. 5 Zeichen nebeneinander normal markieren und dann mit gedrückter Alt+Shift über die Pfeil abwärts Taste mehrere Zeilen auswählen. Somit wird der kpl. Block (hier 5 Zeichen breit mal n-Zeilen) markiert und kann kopiert, gelöscht oder ersetzt werden.


    Übrigens kann das SciTe auch. Das ist vermutlich ein Standardfeature von Scintilla, das sowohl SciTe als auch NP++ verwenden.