- Offizieller Beitrag
In der Shoutbox tauchte die Frage auf, ob es eine Einstellung gibt, dass AutoIt-Skripte immer die Option "MustDeclareVars" enthalten.
Das ist nicht vorgesehen. Eine Lösung wären Abbrevs (muss man also zumindest einmal in jedem Skript ausführen). Die andere Variante stelle ich hier mit einem Lua-Skript bereit:
Das Ereignis OnBeforeSave wird dazu ausgewertet in Abhängigkeit von einer Property, die wir in der SciTEUser.properties hinterlegen.
Das Skript wird aktiv, sowie ein au3-Skript gespeichert wird.
EDIT: Per Property lässt sich jetzt einstellen, ob die Optionsprüfung nur bei neuen Skripts (1) oder bei jedem Skript(2), das in SciTE geöffnet, und dann gespeichert wird Anwendung findet.
EDIT_2: Zusätzlich kann gewählt werden, ob bei neuen Skripten die Option in Zeile 1 oder (wenn vorhanden) hinter dem TimeStamp eingefügt wird. Dazu muss in der SciTEStartup.lua in der Reihenfolge zuerst das TimeStamp-Skript aufgerufen werden. -- Aktuelle Version: v 0.2
- Opt.MustDeclareVars.au3=0 (oder Eintrag nicht vorhanden)
Option ist im Text mit Flag "0" - keine Aktion / mit Flag 1 - Flag wird auf "0" gesetzt
Option ist nicht im Text - keine Aktion
- Opt.MustDeclareVars.au3=1
Neue Datei wird gespeichert - Option wird an Position 0 (erste Zeile) eingefügt
- Opt.MustDeclareVars.au3=2
Bei allen au3-Skripten wird die Optionsprüfung durchgeführt
Die erste sichtbare Zeile im Editor und ebenso die Cursorposition bleiben unverändert.
#~ au3-Skripte ohne/mit(nur neue Datei)/mit(jede Datei) Option "MustDeclareVars" (0/1/2) speichern
Opt.MustDeclareVars.au3=1
#~ Nur bei Neuskripten UND wenn zuerst TimeStamp gesetzt wird (Aufrufreihenfolge in SciTEStartup.lua)
#~ Option einfügen in Zeile hinter TimeStamp (und Leerzeile): "1", sonst erste Zeile: "0" (oder Property nicht besetzt/vorhanden)
Opt.MustDeclareVars.TimeStamp.First=1
Das Lua-Skript Au3OptMustDeclareVars.lua speichert ihr in eurem Skriptordner mit den Lua-Dateien.
Die Datei muss nun noch im Startupskript (SciTEStartup.lua) hinterlegt werden.
Habt ihr einen eigenen Ordner für Lua-Skripte (empfohlen), dann muss dieser über eine Property in der SciTEUser.properties benannt werden und beim Startup geladen werden (Eintrag AM ANFANG):
EDIT: Der Teil mit "LUA_USER_PATH" ist jetzt ZWINGEND erforderlich.
local sUserLua = props["Lua.User.Scripts.Path"]
LUA_USER_PATH = sUserLua .. "\\?.dll;" .. sUserLua .. "\\?\\?.dll;"
package.cpath = LUA_USER_PATH .. package.cpath
LUA_USER_LUA = sUserLua .. "\\?.lua;" .. sUserLua .. "\\?\\?.lua;"
package.path = LUA_USER_LUA .. package.path
Um nicht immer den kpl. Pfad beim Laden angeben zu müssen empfiehlt es sich eine Funktion zum Laden der Userskripte AM ENDE des Startup-Skriptes einzufügen:
--------------------------------------------------------------------------------
-- Calls LoadLuaFile() with directory from Lua-User-Script property
--------------------------------------------------------------------------------
function LoadUserLuaFile(file)
LoadLuaFile(file, props["Lua.User.Scripts.Path"] .. "\\")
end -- LoadUserLuaFile()
--------------------------------------------------------------------------------
LoadUserLuaFile("Au3OptMustDeclareVars.lua")
EDIT: Es wird jetzt die Shell.dll für SciTE-Lua verwendet. Das Einbinden externer Bibliotheken habe ich hier im Detail beschrieben. Den Ordner shell in den Ordner mit den Lua-Skripten kopieren. Und dann, wie im verlinkten Thread beschrieben, die dll registrieren. Die angehängte ZIP entpacken und den Ordner umbenennen zu shell. (Ordnername und Dll-Name müssen identisch sein.
Falls ihr das Lua-Skript in den Lua-Ordner in SciTE speichert, muss AM ENDE der Startdatei eingefügt werden: LoadLuaFile("Au3OptMustDeclareVars.lua")
EDIT: Hatte ich vergessen zu erwähnen - SciTE muss neu gestartet werden!