我想单独用于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