Vielen Dank für den Hinweis
Ich werde in einem weiteren Artikel erklären, wie man in Sublime eine neue Syntax anlegt. Hast du evtl. eine Bibliothek mit allen Scopes? Irgendwie finde ich in der Doku nichts dazu?
Vielen Dank für den Hinweis
Ich werde in einem weiteren Artikel erklären, wie man in Sublime eine neue Syntax anlegt. Hast du evtl. eine Bibliothek mit allen Scopes? Irgendwie finde ich in der Doku nichts dazu?
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
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. Versionssprung
Beim 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.
hm irgendwie versteh ich nicht wie man das nun nutzen soll? Einfach in eine au3 ganz oben
[autoit]-v
[/autoit]eingeben?
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.
@rynow:
Nur ein "*" oder "v" oder "V" an die erste Position im Editor - nichts darf davor stehen - dann speichern.
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:
{
"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
@ Bugfix, Richtig schönes Plugin!!! absolut genial.
Ich habe mir gedacht, dass AutoIt ein eigenen Menü Punkt bekommen sollte, um alle Sachen unterzubringen. Zudem habe ich in BugFix Au3plugins.py 2 Aufrufe integriert. CodeWizard & Koda.
Einfach die angehängte ZIP Datei in "Data\Packages\AutoItScript" entpacken und ersetzen.
Die Einstellungen schauen dan So aus. PS die Pfade sollten natürlich angepasst werden.
{
"autoit_exe_path": "C:/AutoIt3/AutoIt3.exe",
"autoit_compiler_path": "C:/AutoIt3/Aut2Exe/Aut2exe.exe",
"tidy_exe_path": "C:/AutoIt3/SciTE/Tidy/Tidy.exe",
"version_backup_path": "C:/Code/Projekte/AutoIt/Backup",
"code_wizzard_exe_path": "C:/AutoIt3/SciTE/CodeWizard/CodeWizard.exe",
"gui_builder_exe_path": "C:/AutoIt3/SciTE/Koda/FD.exe",
"extensions": ["au3"],
}
Hallo Bugfix,
ich arbeite mit AutoIt nach einer MVC Methode, daher hat ein Projekt mehrer .au3 Dateien. Wie könnte ich deine Backup Lösung so umschreiben, dass die Backups im Projekt Order landen? Ansonsten müsste ich bei jedem Script den Pfad ändern?
Vielen Dank für deine Hilfe.
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.
Ich nutze das Projektmanagement von ST. Finde es super schlank und vollkommen ausreichend.
Hallo Bugfix,
gibt es bereits eine Lösung mit den Projekt BackUP?
Bin zur Zeit auf Dienstreise, wird also noch etwas warten müssen
Wie könnte ich deine Backup Lösung so umschreiben, dass die Backups im Projekt Order landen?
Das ist nach näherer Betrachtung Blödsinn. Ein Projekt ist ein virtueller Raum. Du kannst beliebig viele Pfade und Dateien in das Projekt verlinken. Somit gibt es gar nicht den Projektordner.
Ich überdenke folgende Lösung:
- Ist ein Pfad für Backups in den Settings enthalten, wird dort abgespeichert.
- Ohne Angabe eines Pfades wird im aktuellen Pfad der Datei ein Ordner "BUp_Dateiname" angelegt und dort die jeweilige Version gespeichert. Das bedeutet aber dann, dass beim erstmaligen Speichern der Datei (also wenn sie gerade erstellt wird), noch kein Backup angelegt werden kann (mangels Pfad). Nicht so goldig.
Werde ich noch etwas drüber grübeln.
Naja bei Projekterstellung gehe ich immer wie folgt vor:
Ich erstelle ein Projekt Ordner. In sublime gehe ich dann ADD Folder to Project und speichere die Projekt Dateien im Ordner.
Mir würde es auch reichen, wenn man ein festen Backup Ordner erstellt und dort Dan ein unter Ordner mit dem projektnamen erstellt wird. Bei jedem Versions Sprung der Projekt Datei soll, wie auch schon bei deiner Backup Lösung eine Datei mit dem Versionsnamen abgelegt werden.
Ich habe mir jetzt folgendes Konzept überlegt:
- Abfrage ob in den Settings ein Backup-Pfad angegeben ist
-- JA: dieser wird verwendet
-- NEIN:
--- Abfrage ob die aktuelle Datei in einem Projekt ist (und Ermittlung des Ordners, in dem sich die PROJEKTNAME.sublime-project befindet)
---- NEIN: Aktueller Dateipfad wird wird im Eingabepanel zur Übernahme/Änderung angeboten
---- JA: Prüfung ob bereits Backupordner im Projektpfad existiert
----- JA: Backup in diesen Ordner
----- NEIN: Projektordner wird im Eingabepanel zur Übernahme/Änderung angeboten
Der Gedanke mit dem erstmaligen Speichern war Blödsinn. Das PlugIn ist (wie die meisten anderen auch) Suffix-abhängig und somit muss die Datei sowieso schon exitieren.
@ Bugfix
ich habe das Backup nun so angepasst, dass bei einer Versionsänderungen wie folgt ein Backup erstellt wird.
1. (Falls nicht vorhanden) wird ein Backup Ordner im Projekt Ordner erstellt. "meinProjekt/Backup/"
2. (Falls nicht vorhanden) wird im Backup Ordner ein Unter Ordner mit der Version erstellt. "meinProjekt/Backup/Version 0.1"
3. alle Projekt Dateien mit dieser Version landen nun im diesem Ordner "meinProjekt/Backup/Version 0.1/meinProjekt_[0.1].au3"
Hier die geänderte "def_backup_files"
def backup_file(self, view, version):
# backup_path = self.window.active_view().file_name()
settings = sublime.load_settings("AutoIt.sublime-settings")
backup_path = settings.get('version_backup_path', None)
if backup_path:
path = view.file_name()
suffix = get_current_suffix(view)
filename = path[string_in_str(path, '\\', -1) :
string_in_str(path, '.', -1) -1]
a , b = path.split(filename)
backup_folder = a + 'Backup'
folder_create(backup_folder)
save_path = backup_folder + '\\Version ' + version
# save_path = backup_path + '\\BUVer_' + filename + '.' + suffix
folder_create(save_path)
newfile = filename + '_[' + version + '].' + suffix
# print(newfile)
fh = open(save_path + '\\' + newfile, 'w+')
content = self.view.substr(sublime.Region(0, self.view.size()))
fh.write(content)
fh.close()
print('>> Backup saved <<')
Alles anzeigen
ich denke wie ich das gelöst habe ist nicht die feine englische Art Aber mit meinen aktuellen Python Kenntnissen ist das für mich ein Milenstein
So, ich habe jetzt mal zumindest soweit eine Lösung erstellt, dass Wrapper-Direktiven aus dem Skript gelesen und für das Kompilieren angewendet werden.Das heisst also, die Wrapperanweisungen müssen (vorerst) von Hand eingetragen werden. Ich überlege mir mal eine halbwegs praktikable Lösung, was schwerfällt ohne GUI.
Folgende Direktiven habe ich eingebaut:
#AutoIt3Wrapper_OutFile=[kpl. Pfad zu neuer *.exe - neue (Unter)Ordner werden erstellt; ohne Angabe: aktuelle au3 als .exe]
#AutoIt3Wrapper_Icon=[kpl. Pfad zur Icondatei; ohne Angabe Standard-AutoIt-Icon]
#AutoIt3Wrapper_Compression=[0-4, ohne Angabe wird bei Verwendung von UPX der Wert 2 (normal) verwendet]
#AutoIt3Wrapper_UseUpx=["y/n" - Standard ist "y"]
#AutoIt3Wrapper_Change2CUI=["y/n" - Standard ist "n", Kompilieren als Gui-Anwendung]
Edit:
Ich habe jetzt so erweitert, dass für die erste Anwendung jede Direktive einzeln im Input Panel abgefragt wird und das Ergebnis dann in die Datei geschrieben wird. Bei späteren Änderungen kann man ja direkt in der Datei editieren.
Dazu gibt es jetzt ein weiteres Kommando, hier mal auf "F12" gelegt:
Aufrufen kann man das Kompilieren mit dem Befehl: "compile_au3", hier über "F7":
[
{ "keys": ["f7"], "command": "compile_au3" },
{ "keys": ["f12"], "command": "wrapper_directives" }
]
Anhang entpacken nach: "..Data\Packages\"
Nach Neustart steht das PlugIn zur Verfügung.
Edit 21.08.14:
Jetzt habe ich noch hinzugefügt, dass die Vorbelegung für die Direktiven über die "AutoIt.sublime-settings" individuell eingestellt werden kann (key: "wrapper_defaults"). Dann braucht man nur noch per Enter durchzutackern und bedarfsweise ändern.
{
....
"color_scheme": "Packages/AutoItScript/AutoIt.tmtheme",
"extensions": ["au3"],
"wrapper_defaults": {
"out_path": "C:\\MY_DEFAULT\\EXE_PATH",
"icon": "C:\\Users\\BugFix\\Pictures\\ICON\\SublimeText2.ico",
"upx": "n",
"compression": "2",
"console": "n"
}
}
Alles anzeigen
Ausserdem habe ich die Aufrufe für Wrapper und Compile jetzt an *.au3 gekoppelt, das fehlte noch.
Edit 23.08.2014:
Neue Dateiversion mit Au3Check und Run mit Parameter(n) gibt es hier
Der Anhang in diesem Post ist die alte Version.
Ach verdammt. Da bastele ich schon seit einer Woche daran und dachte das wird was wirklich vernüpftiges ... und jetzt bringst du die perfekte Lösung! Spitze vielen Dank. Jetzt muss sich Scite leider verabschieden :D.