我可以将 `init.lua` 分隔到 Hammerspoon 中的不同组件吗?

Can I separate `init.lua` to different components in Hammerspoon?

我想将 Hammerspoon 中使用的 init.lua 脚本分开,以增强可读性和可维护性。

所以它看起来像下面这样:

然后从 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. To see the directories you can use, take a look at HammerSpoon's package.path setup file. This references the default Lua package.path, which is defined in luaconf.h

如果您想将 Lua 模块放在 package.path 中未包含的目录中,您可以通过将它们添加到 LUA_PATH_5_3LUA_PATH 环境中来实现变量。