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

时间:2017-06-15 06:05:50

标签: lua hammerspoon

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

所以看起来如下:

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

然后从init.lua开始,我会阅读这些文件并激活观察者。

然而,似乎没有定义这样的功能(可能我可能会错过它)。是否有可能像Hammerspoon那样分离逻辑?

1 个答案:

答案 0 :(得分:4)

是的,您可以使用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_3LUA_PATH环境变量中。

免责声明:我从Hammerspoon源代码中获得了这些信息,但我没有Mac,所以我还没有对它进行测试。如果它不适合你,请告诉我。 :)