Ownhotkey​s - Lua shell.exec() macht Probleme mit WindowsBlinds

  • Vor ein einigen Tagen habe ich seit langer Zeit mal wieder an meinen Einstellungen für Ownhotkeys geschraubt, was soweit auch alles wunderbar funktionierte. Damit wollte ich nun endlich mal ein paar Einträge aus meinen hoffnungslos überfüllten SciTE-Menüs nach Ownhotkeys verlagern. Angefangen hatte ich mit den Properties... und da dachte ich mir, warum soll ich nicht gleich alle thematisch zusammengehörigen Properties auf einen Schlag laden?!

    Hier ein Beispiel: ownhotkeys.properties

    Brainfuck
    #~ Ctrl+Win, Ctrl+0
    own.mode.cmd.48=OHK.ShellExecute("%ProgramFiles(x86)%\\AutoIt3\\SciTE\\SciTE.exe", "%SCITE_USERHOME%\\ownhotkeys.properties", "%AU3_LUASCRIPTS%\\Ownhotkeys.lua", "%AU3_LUASCRIPTS%\\OHKfuncs.lua")
    own.mode.descript.48=Ctrl+$(own.mode.indicator.descript), Ctrl+0|Open ownhotkeys.properties, Ownhotkeys.lua and OHKfuncs.lua


    Hiermit wollte ich SciTE also drei Dateien via Lua schicken, was auch soweit funktioniert - doch was nun... es hat mein SciTE-Window grafisch zerhauen... und dann ist mir aufgefallen, dass dies nur passiert, wenn mehr als eine Datei an SciTE gesendet wird.

    Klar ist nun, dass es am Zusammenspiel der Lua-Funktion shell.exec() mit WindowsBlinds liegt. Deshalb habe ich nach einer für mich akzeptablen Lösung gesucht... und hier ist sie... im Anhang.

    Meine angepasste ownhotkeys.properties

    Brainfuck
    #~ Ctrl+Win, Ctrl+0
    own.mode.cmd.48=OHK.ShellExecute("%AU3_PROJEKTE%\\SciTEx\\SciTEOpen.exe", "%SCITE_USERHOME%\\ownhotkeys.properties", "%AU3_LUASCRIPTS%\\Ownhotkeys.lua", "%AU3_LUASCRIPTS%\\OHKfuncs.lua")
    own.mode.descript.48=Ctrl+$(own.mode.indicator.descript), Ctrl+0|Open ownhotkeys.properties, Ownhotkeys.lua and OHKfuncs.lua

    Die dazu benötigte Lua-Funktion in OHKfuncs.lua


    Und das passiert mir dann natürlich genau an dem Tag, an dem ich die neue Version von SciTE4AutoIt installiere... dachte schon, habe mir mal wieder alles zerschossen... grrr
    SciTEOpen.png

    • Offizieller Beitrag

    warum soll ich nicht gleich alle thematisch zusammengehörigen Properties auf einen Schlag laden?!

    Ich habe zusammenhängende Properties (wenn es zahlenmäßig etwas mehr war zu einem Thema) in separate *.properties ausgelagert und lade diese als erstes in den SciTEUser.properties (s. hier).
    Die ersten Zeilen meiner SciTEUser.properties sehen dadurch so aus:
    import ownhotkeys
    import python_user
    import lua_user

  • Oh ja, danke, das ist ja mal super - und auch schon geändert... in meinem Beispiel lade ich die Dateien jedoch, um sie zu bearbeiten: ownhotkeys.properties, Ownhotkeys.lua and OHKfuncs.lua. Momentan macht das Script dies noch mit Drag-N-Drop in das SciTE-Window... doch dass werde ich ändern und von SciTE selbst erledigen lassen.

    Wenn die ownhotkeys.properties nun durch meine SciTEUser.properties importiert werden, diese aber in Ownhotkeys.lua eh komplett eingelesen werden, ist das nicht irgendwie doppelmoppel?

    local file = io.open(os.getenv('USERPROFILE')..'\\AppData\\Local\\AutoIt v3\\SciTE\\ownhotkeys.properties')

    Oder anders gefragt... der Inhalt der ownhotkeys.properties ist doch nur für Ownhotkeys.lua von Interesse?!

    Gestern erst gesehen, dass SciTE ein Logfile anlegt... c:\Program Files (x86)\AutoIt3\SciTE\install.log - und man damit nachvollziehen kann, was SciTE bei der Installation alles macht...

    • Offizieller Beitrag

    Oder anders gefragt... der Inhalt der ownhotkeys.properties ist doch nur für Ownhotkeys.lua von Interesse?!

    Das ist richtig. Natürlich kann man auch so vorgehen, dass spezielle properties direkt für ihre Anwendung geladen werden. Für meinen Geschmack geht mir dann etwas die Übersicht und Funktionalität verloren. Das Standardkonzept:

    • Globale properties Datei: "SciTEGlobal.properties" - wird überschrieben von
    • User properties Datei: "SciTEUser.properties" - wird überschrieben von
    • Directory properties Datei "SciTEDirectory.properties" im Ordner (oder Parent) der aktuellen Datei - wird überschrieben von
    • Locale properties Datei "SciTE.properties" im Ordner der aktuellen Datei

    garantiert eine Priorität der properties, sodass du z.B. für ein Projekt die properties völlig anders gestalten kannst, ohne deine allgemeingültigen Einstellungen zu ändern. Dieses tief gestaffelte Prioritäts-Konzept ist m.M. nach ein absolutes Highlight des SciTE-Editors.