我可以将 `init.lua` 分隔到 Hammerspoon 中的不同组件吗?
Can I separate `init.lua` to different components in Hammerspoon?
我想将 Hammerspoon 中使用的 init.lua
脚本分开,以增强可读性和可维护性。
所以它看起来像下面这样:
- init.lua
- AppWatcher.lua
- WiFiWatcher.lua
- KeyRemap.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_3
或 LUA_PATH
环境中来实现变量。
我想将 Hammerspoon 中使用的 init.lua
脚本分开,以增强可读性和可维护性。
所以它看起来像下面这样:
- init.lua
- AppWatcher.lua
- WiFiWatcher.lua
- KeyRemap.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_3
或 LUA_PATH
环境中来实现变量。