Bibliotheken (Dll-Dateien, Lua-Skripte) in SciTE verwenden

  • Es können 2 Arten von Bibliotheken verwendet werden: Dll- und Lua-Bibliotheken.
    Der Aufruf im Skript erfolgt mit:

    Code
    1. variable = require "Bibliotheksname" -- wichtig: OHNE Dateiendung


    Die Funktionen lassen sich dann aufrufen mit:

    Code
    1. variable.funktionsname(parameter)


    • Registrieren von Bibliotheken


    Damit die Bibliotheken von "require" gefunden werden, müssen die Speicherpfade in der "SciTEStartup.lua" registriert werden.
    Dll-Dateien werden registriert in "package.cpath", Lua-Skripts in "package.path".
    Damit die eigenen Skripte und Bibliotheken auch nach einem Update von SciTE noch vorhanden sind, darf man diese keinesfalls im Ordner "..\SciTE\LUA" speichern. Dieser wird bei einem Update ungefragt überschrieben. Es empfiehlt sich einen eigenen Ordner dafür anzulegen und diesen Pfad in den "SciTEUser.properties" zu speichern.
    Ich habe dort z.B. eingetragen: "Lua.User.Scripts.Path=C:\Code_AutoIt\LUA". Wichtig: Ohne abschließenden Backslash! Nun kann man diesen Pfad überall innerhalb SciTE abfragen mit: "props['Lua.User.Scripts.Path']".


    Es können leider nicht alle Dll auch in SciTE genutzt werden. progandy hatte das schon näher beschrieben.


    Hier mal als Bsp., wie man sowohl Dll- als auch Lua-Dateien im eigenen Skriptpfad registriert. Die Art der Registrierung ermöglicht, dass die Dateien direkt im benannten Pfad gespeichert sind oder in einem Unterordner, der denselben Namen wie die Datei trägt.

    Code
    1. local sUserLua = props["Lua.User.Scripts.Path"]
    2. LUA_USER_PATH = sUserLua .. "\\?.dll;" .. sUserLua .. "\\?\\?.dll;"
    3. package.cpath = LUA_USER_PATH .. package.cpath
    4. LUA_USER_LUA = sUserLua .. "\\?.lua;" .. sUserLua .. "\\?\\?.lua;"
    5. package.path = LUA_USER_LUA .. package.path


    • Eigene Bibliotheken erstellen


    Das Erstellen eigener Bibliotheken (Lua-Skript) ist eine einfache Sache. Wobei sich die Möglichkeit bietet innerhalb der Bibliothek eigene Funktionsnamen zu verwenden und für den Anwender andere Namen zur Verfügung zu stellen.




    Man kann natürlich, wie bei den Includes in AutoIt, auch Bibliotheken in Bibliotheken einbinden.



    NB: Da ich gerade erst die aktuelle Version von SciTE installiert habe, ist mir folgendes aufgefallen:
    Um Lua Skripte in SciTE auszuführen war es bei der vorigen Version ausreichend, in der SciTEUser.properties einzutragen:
    command.go.$(file.patterns.lua)=dofile $(FilePath).
    In der aktuellen Version muss zusätzlich auch das Subsystem angegeben werden:
    command.go.subsystem.$(file.patterns.lua)=3