10

我想分离init.luaHammerspoon 中使用的脚本以增强可读性和可维护性。

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

  • 初始化.lua
  • AppWatcher.lua
  • WiFiWatcher.lua
  • KeyRemap.lua

然后我会从内部init.lua读取这些文件并激活观察者。

但是,似乎没有定义这样的函数(但也许我可能会错过它)。是否可以像在 Hammerspoon 中那样分离逻辑?

4

1 回答 1

12

是的,您可以使用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 设置文件这引用了在luaconf.h中定义的默认 Lua package.path 。

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

免责声明:我从 Hammerspoon 源代码中获得了此信息,但我没有 Mac,所以我没有对其进行测试。让我知道它是否不适合你。:)

于 2017-06-15T07:08:08.930 回答