2017-06-15 3 views
1

Ich möchte init.lua Skript in Hammerspoon zu trennen, um die Lesbarkeit und Wartung zu verbessern.Kann ich `init.lua` in verschiedene Komponenten in Hammerspoon einteilen?

So sieht es wie folgt aus:

  • init.lua
  • AppWatcher.lua
  • WiFiWatcher.lua
  • KeyRemap.lua

Und dann von innen init.lua I würde diese Dateien lesen und den Watcher aktivieren.

Es scheint jedoch, dass keine solche Funktion definiert ist (vielleicht kann ich es aber auch verpassen). Ist es möglich, die Logik in Hammerspoon zu trennen?

+0

Normalerweise würden Sie es mit 'require()' oder 'dofile()' tun. Nicht sicher, ob diese in Ihrer Umgebung verfügbar sind. – Forivin

Antwort

3

Ja, Sie können dies mit require tun.

Wenn Sie Ihre Lua-Dateien in ~/.hammerspoon/ setzen, können Sie sie dann mit require('modulename') laden. wenn Sie die folgenden Module haben zum Beispiel:

  • ~/.hammerspoon/AppWatcher.lua
  • ~/.hammerspoon/WiFiWatcher.lua
  • ~/.hammerspoon/KeyRemap.lua

Dann können Sie sie von ~/.hammerspoon/init.lua wie folgt laden:

local AppWatcher = require('AppWatcher') 
local WiFiWatcher = require('WiFiWatcher') 
local KeyRemap = require('KeyRemap') 

können Sie Laden Sie alle Lua-Module, solange sie erscheinen in package.path. Um zu sehen, welche Verzeichnisse Sie verwenden können, werfen Sie einen Blick auf HammerSpoon package.path setup file. Dies verweist auf den Standard-Lua-Paketpfad, der in luaconf.h definiert ist.

Wenn Sie Ihre Lua-Module in einem Verzeichnis speichern möchten, das nicht in package.path enthalten ist, können Sie sie zu den Umgebungsvariablen LUA_PATH_5_3 oder LUA_PATH hinzufügen.

Haftungsausschluss: Ich habe diese Informationen aus dem Hammerspoon-Quellcode, aber ich habe keinen Mac, also habe ich es nicht getestet. Lass es mich wissen, wenn es nicht für dich funktioniert. :)

+0

Danke. Es funktionierte. Scheint, dass der Rückgabewert der 'require'-Funktion ein boolescher Wert ist. 'hs.alert.show (AppWatcher)' zeigte 'true'. – Blaszard

+0

Der Rückgabewert ist, was auch immer vom Modul zurückgegeben wird. Oft ist es eine Tabelle, die alle Funktionen enthält, die das Modul exportiert. Dieses bestimmte Modul muss bei Erfolg "Wahr" und bei Fehlschlag "Falsch" oder Ähnliches ausgeben. –

Verwandte Themen