Ich erweitere gerade das Backup-Skript (inkl. TimeStamp). Es wird in Zukunft für alle Sprachen nutzbar sein. Dazu steht eine eigene Settings-Datei zur Verfügung. Der User kann den TimeStamp dann kpl. selbst gestalten (Text, Date-Time-Format).
Nutzt du das Projektmanagement von ST? Dann kann man sicher abfragen, in welchem Projekt die aktuelle Datei ist und dorthin die Backups speichern. Wenn die Projektverwaltung ausserhalb von ST liegt, kann man auch eine Projekt-Settings Datei anlegen, in der Projekte und zugehörige Dateien registriert werden. Das ist einfach zu händeln.
Beiträge von BugFix
-
-
Unter anderem weil in der SciTEUser.properties nicht das drin drin steht was du angibst sondern nur
Darum sollst du ja dort auch die neuen Settings eintragen. Je nach dem, wie sehr du dein SciTE individualisiert hast, stehen die entsprechenden Änderungen in dieser Datei. In einer frischen Installation ist die Datei i.A. leer.
Auch verstehe ich nicht ganz was du meinst vielleicht müsst ihr die 83 anpassen wo und warum denn?
Die 38 (nicht 83) bezog sich auf frei verfügbare command-Nummern
...
command.name.38.*.au3=InsertFunctionHeader
...
Wenn du dort keine anderen Einträge hast, ist diese Nummer frei. -
Zum Timestamp habe ich jetzt auf das Versionsbackup ergänzt.
Dazu muß in den Settings ( ".Data\Packages\User\AutoIt.sublime-settings" ) ein Pfad zum Ordner, der die Versionen speichern soll, angegeben werden.
Der Key lautet: "version_backup_path".So sieht das bei mir aus:
Spoiler anzeigen
PHP{ "autoit_exe_path": "C:\\Program Files (x86)\\AutoIt3\\AutoIt3.exe", "autoit_compiler_path": "C:\\Program Files (x86)\\AutoIt3\\Aut2Exe\\Aut2exe.exe", "autoit_wrapper_path": "C:\\Program Files (x86)\\AutoIt3\\SciTE\\AutoIt3Wrapper\\AutoIt3Wrapper.exe", "tidy_exe_path": "C:\\Program Files (x86)\\AutoIt3\\SciTE\\Tidy\\Tidy.exe", "include_helper_au3_path": "Packages/AutoItScript/Include_Helper.au3", "version_backup_path": "C:/VirtualRoot/VersionBackup/au3", "color_scheme": "Packages/AutoItScript/AutoIt.tmtheme", "extensions": ["au3"] }
Wird eine Änderung der Versions/Subversionsnummer vorgenommen, wird automatisch von dieser neuen Datei eine Kopie als "Dateiname[version].au3" angelegt.
Unterhalb des festgelgten Backupordners wird für jede neue Datei ein Ordner angelegt als "BUVer_" & "Dateiname.au3", indem dann alle Versionen dieser Datei abgelegt werden.
"BUVer" steht für BackUp Version
-
-
Da ich nun doch schon etwas "familar"
mit Python bin, habe ich mir mal das AutoIt-Plugin von Github etwas näher angeschaut.
Ich weiß nicht, wer es geschrieben hat - aber derjenige ist mit Python überhaupt nicht vertraut. Python ist eine konventionsrestriktive Sprache. Da wirst du auch in jedem Python-Forum gesteinigt, wenn du dich nicht an die Konventionen hältst.
Mal ein kurzer Abriss:
- Funktionsnamen und Variablen werden immer klein geschrieben, zur Verdeutlichung von Teilnamen werden Unterstriche genutzt ( das_ist_eine_func )
- Klassennamen werden in CamelCase geschrieben
- eine Codezeile hat nie mehr als 80 Zeichen
usw. usf.
Die "autoitbuild.py" sieht dazu vergleichsweise aus, wie ein Beet voller Kraut und Rüben.
Ich denke, ich werde kpl. mein eigenes AutoIt-Plugin erstellen. Dann stimmt es auch mit den Konventionen.

-
Arrays sind scheisse, sowas benutzt man, wenn die Daten die man speichern will keine struktur haben, wie z.B. eine Zahlenreihe.
Na da muß ich mal ganz energisch widersprechen.
Ich speichere natürlich auch strukturierte Daten in Arrays. Und das ist absolut unproblematisch und auch schnell.
Da greift wohl eher der Spruch: "Wat der Bua nich kennt, dat fritt er nich"
-
Hier mein PlugIn "TimeStamp" für AutoIt-Code.
Den Anhang in "\Data\Packages" entpacken. (enthält das Plugin "Au3plugins", dem ich dann nach und nach weitere Funktionen hinzufüge)
Bedienung:
• Datei hat noch keinen Zeitstempel:
Zeichen an erster Position in der Datei
* = nur Timestamp (;-- TIME_STAMP 2014-08-01 16:00:47 )
v = Timestamp und Subversion 1 (;-- TIME_STAMP 2014-08-01 16:02:27 v 0.1)
V = Timestamp und Mainversion 1 (;-- TIME_STAMP 2014-08-01 16:02:27 v 1.0)• Datei hat bereits Zeitstempel oder Zeitstempel und Versionsangabe:
- ohne weiteres Zeichen wird der Stamp auf aktuelles Datum/Zeit erneuert
Zeichen hinter Zeitstempel oder aktueller Versionsangabe
v = Timestamp und Subversion +1, wenn bisher nur Timestamp: Subversion 1
V = Timestamp und Mainversion +1, wenn bisher nur Timestamp: Mainversion 1
n = nur wirksam hinter Versionsangabe: Main- u. Subversion werden übernommen, wie sie sind - z.B. VersionssprungBeim Speichern wird dann automatisch bei AutoIt-Dateien der Timestamp entsprechend des gewünschten Modus gesetzt.
Das automatische Speichern der Dateien unter dem entsprechenden Versionsnamen wird auch noch folgen. Aber alles Schritt für Schritt.
-
Wenn es denn ein Dictionary sein MUSS: Erstelle parallel ein Array. Dort speicherst du das Handle und den Index des Arrayeintrags als Value im Dictionary.

-
Das Scope-System wurde von TextMate übernommen.
Hier ein paar relevante Links:
http://manual.macromates.com/en/scope_selectors
http://manual.macromates.com/en/regular_exp…yntax_oniguruma
http://manual.macromates.com/en/language_grammars.html -
Das handle steht allerdings als expression im dictionary
Warum speicherst du nicht das Handle selbst? Welchen Sinn soll es haben, das Handle als String zu speichern? -
@rynow
Ein kleiner Typo auf deiner Seite:ZitatIm nächsten Teil werde ich euch einige Erweiterungen und weiter tolle Futures von Sublime Text vorstellen.

Hier nochmal meine Anleitung, die ich im EN-Forum gepostet hatte. Dort sind noch einige zusätzliche Punkte enthalten (Toggle Konsole, Bindung Dateityp an Color-Scheme):
Spoiler anzeigen
Here i will you give the first steps for work with ST2/ST3:
1. Download "Sublime Text 2/3" and installation
You find it here: Sublime Text2. Shortcut-File open with: <Preferences> <Key Bindings - User>
Following shortcut insert in this file to toggle console with "Strg+,"
(default shortcut does'nt work in Windows)Code[ { "keys": ["ctrl+,"], "command": "show_panel", "args": {"panel": "console", "toggle": true} } ]
3. Urgent required Package "Package Control" install
- Open console
- insert following text (it's all in one line!)Codeimport urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print('Please restart Sublime Text to finish installation')
- Hit <Enter> to install. After restart you'll find it on menu:
<Preferences> <Package Control>4. You need a possibility to create JSON-files and to convert them to plist (.tmLanguage/ .tmTheme). For this you'll need the Package "AAAPackageDev"
- <Preferences> <Package Control> <Package Control: Install Package> - click
- Insert "AAA", than the Package is on top, or scroll with mouse to this
- With clicking the Package it will installed (State is shown bottom in the status line, left)
Needs also an restart.Now you have a new menu: [ the following is some different in ST3, but you will see it by using ]
<Tools>
<Packages> <Package Development>
...
...
<New Syntax Definition> -- that's what you need to create a new definition or theme file (JSON)And in menu <Tools><Build System> you find now "JSON to Property List" and "Property List to JSON". You need this for convert "*.JSON-tmLanguage" to "*.tmLanguage" and "*.JSON-tmtheme" to "*.tmtheme"
You can bind color schemes to a file type. You need a settings file like "AutoIt.sublime-settings".
Inside this you declare the scheme:
Also you can determine, that all files of one file type will opened with the syntax definition of your choice. For this open a file with the required file type (i.e *.au3) and now you see bottom in the status line, right side, the current used syntax definition. Click this and go ahead to "Open all with current extension as..". Select than the syntax definition you like.
In attachement you find my syntax definition file for autoit. Its based with the used scopes on the naming convention from TextMate, which also used in Sublime Text. It makes sense to work with naming convention. So you can use other color schemes (themes) and have a detection of a lot of definitions.
Here is a list of used scopes. I've marked with pipes the scope name from naming convention:Code
Alles anzeigen"|comment.line.character|.autoit" Comment one line "|comment.block|.autoit" Comment block "|constant.numeric|.hex.autoit" Hex numbers "|constant.numeric|.number.autoit" Integer "|entity.name.function|.native.autoit" Native Functions "|entity.name.tag|.macro.autoit" Macros "|constant.character|.preprocessor.autoit" Include(-Once)/NoTrayIcon/RequireAdmin "|string.quoted|.include.file.autoit" File after the include - gets style as a string "|constant.character|.preprocessor.autoit" Region/Endregion with all text in this line "|constant.language|.preprocessor.special.autoit" Preprocessor, Wrapper etc. "|keyword.control|.autoit" Keywords "|keyword.operator|.autoit" Operators "|keyword.other|.braces.autoit" Braces "|string.quoted.single|.autoit" String, single quoted "|string.quoted.double|.autoit" String, double quoted "|variable.parameter|.sentkey.autoit" SentKeys "|variable.language|.autoit" Variables "|variable.language|.func.autoit" Variables assigned with Function "|support.function|.udf.autoit" UDF-Functions "|support.class|.objects.autoit" Com Objects -
An diesem könnte man sich doch die Kommunikation mit Sublime abschauen und den Wrapper basteln.
Die Kommunikation ist kein Problem. Es ist ein API implementiert, darüber läßt sich das machen.
Ich wollte nur gerne auch eine im System (Python) eingebundene GUI nutzen.
Den AutoIt-internen Wrapper kann man nicht übernehmen, der ist für SciTE konfiguriert. Alternativ bliebe, ihn weiterhin als AU3-exe zu erstellen aber mit Kommunikation über STDOUT und damit ST füttern.darf ich dein Sublime Theme auf meinen Blog mit anbieten? Selbstverständlich unter deinem Namen?
Na klar, dazu habe ich es schließlich erstellt.
-
Ähnlich wie Lua in SciTE, ist die Implementierung von Python in ST rudimentär. Wesentliche Teile der Standardbibliotheken sind nicht enthalten (z.B. tkinter). Somit lassen sich keine komplexen GUI erstellen, was in Bezug auf einen schicken AutoIt-Wrapper sehr schade ist.
Mit einer zusätzlichen Python-Installation ließe sich das lösen, aber das ist natürlich keine allgemeingültige Option.
Ich habe die GUI schan mal analog wie in AutoIt mit tkinter erstellt. Das war aber mehr zum Test, wie man mit tkinter umgeht. Eventuell setze ich mich später mal an die Portierung des entsprechenden Codes nach Python. Das ist aber nicht ganz ohne. Also rechnet nicht mit baldigem Vollzug.
Edit:
So sieht es z. Zt. aus:
Link -
oder doch?
Warum nicht? - Die entsprechenden Befehle kannst du ganz smart in ein Kontextmenü packen. Dann hast du eine nicht überfrachtete Oberfläche mit max. Funktionalität. -
Weisst du, ob es in der setup API eine Funktion gibt, mit der ich die zu kopierenden Files die in den folgenden sections meine INF drin stehen, identifizieren kann?
Damit habe ich mich noch nicht befasst, kann ich leider nicht helfen.
-
Ist dein Hauptziel Treiber zu installieren? Wenn es dich nicht stört, dass die Windows-Meldung über Nicht-signierte Treiber aufpopt, verwende doch das Kommandozeilen-Tool "pnputil" zur Installation.
-
Der Fehler entsteht nicht aus diesem Code heraus.
In deinem Skript muß noch mehr stehen, was in der Summe ein EndIf vermissen läßt.NB: Globale Variablen deklariert man nicht innerhalb von Funktionen, das ist schlechter Stil und macht Skripte schlecht lesbar.
-
Also ich verwende UPX generell nicht.
Mein Antivirenprogramm hat noch nie Alarm geschlagen. Es sagt nur: He - unbekanntes Programm, darf ich das ausführen? - und dann kommt das auf die White-List.
Ich verwende Comodo-Internet-Security.
Ich hatte mal Avira, das hat auch niemals meine Programme beanstandet.Inhaltlich habe ich Tools, die Internetverkehr betreiben, auf das OS zugreifen - eigentlich querbeet.
-
Bevor wir uns durch dein Skript wühlen:
Du weißt, was du da haben willst - wir nicht.
Also wäre es erst mal sinnvoll uns mitzuteilen
- ich habe Daten in folgender Struktur...
- daraus will ich auslesen...
- mit zusätzlichen Filtern...
- Ergebnis soll so aussehen...
DANN haben wir eine grobe Vorstellung, was in deinem Skript passiert. Im Moment müßte ich das Skript Zeile für Zeile durchforsten um auf seine Funktion zu schließen.
-
Interessant:
Gestern führte mich dein MSDN-Link zur Funktion "SetupVerifyInfFile". Heute lande ich in Hilfe & Support mit dem HinweisZitatSystem Tip
This article applies to a different version of Windows than the one you are using. Content in this article may not be relevant to you.(Ich nutze Windows 7)
Daraus schließe ich mal, dass diese Funktion unter Windows 7 keine Anwendung findet.Edit:
Da war ich auf den anderen Link gerutscht
Aber warum soll der nicht mehr gültig sein? Mir wird gesagt das klappt nicht mit Win7 - also gehe ich auch mal aus, dass diese Funktion für Win7 nicht zur Verfügung steht.