我想單獨用於Hammerspoon的init.lua
腳本以提高可讀性和維護性。我可以將`init.lua`分離到Hammerspoon中的不同組件嗎?
因此,它看起來像下面這樣:
- init.lua
- AppWatcher.lua
- WiFiWatcher.lua
- KeyRemap.lua
然後從init.lua
我內會讀取這些文件並使觀察者激活。
但是,似乎沒有這樣的函數定義(也許我可能會錯過它,雖然)。是否有可能將Hammerspoon中的邏輯分開?
我想單獨用於Hammerspoon的init.lua
腳本以提高可讀性和維護性。我可以將`init.lua`分離到Hammerspoon中的不同組件嗎?
因此,它看起來像下面這樣:
然後從init.lua
我內會讀取這些文件並使觀察者激活。
但是,似乎沒有這樣的函數定義(也許我可能會錯過它,雖然)。是否有可能將Hammerspoon中的邏輯分開?
是的,你可以使用require來做到這一點。
如果你把你的Lua文件放在~/.hammerspoon/
中,你可以使用require('modulename')
加載它們。例如,如果您有以下模塊:
~/.hammerspoon/AppWatcher.lua
~/.hammerspoon/WiFiWatcher.lua
~/.hammerspoon/KeyRemap.lua
然後你可以從~/.hammerspoon/init.lua
加載它們像這樣:
local AppWatcher = require('AppWatcher')
local WiFiWatcher = require('WiFiWatcher')
local KeyRemap = require('KeyRemap')
你可以只要它們出現,就加載任何Lua模塊在package.path。要查看您可以使用的目錄,請查看HammerSpoon的package.path setup file。這引用默認的Lua package.path,它在luaconf.h中定義。
如果要將Lua模塊放入package.path中未包含的目錄中,可以將它們添加到LUA_PATH_5_3
或LUA_PATH
環境變量中。
聲明:我從Hammerspoon源代碼獲得了這個信息,但是我沒有Mac,所以我沒有測試它。讓我知道,如果它不適合你。 :)
謝謝。有效。看起來'require'函數的返回值是一個布爾值。 'hs.alert.show(AppWatcher)'顯示爲'true'。 – Blaszard
返回值是從模塊返回的任何內容。通常它將是一個包含模塊導出的所有功能的表格。這個特定的模塊必須在成功時返回true,在失敗時返回false,或類似的東西。 –
通常你會用'require()'或'dofile()'來做。不確定這些在您的環境中是否可用。 – Forivin