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

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

因此,它看起来像这样:

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

然后在 init.lua 中,我将读取这些文件并使监视器激活。

然而,似乎没有定义这样的功能(也许我可能错过了),是否可以在 Hammerspoon 中分离逻辑?

点赞
用户5287638
用户5287638

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

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

2017-06-15 07:08:08