警告:我并不真正了解 lua 或茴香,尽管我在类 lua 语言(python 等)和类茴香语言(clojure、elisp 等)方面确实有很多经验。
但是:我正在使用hammerspoon来管理我的mac 上的外部显示器配置。我在我的 init.lua 文件中有以下正确工作的代码,供hammerspoon 获取我的外部显示器并将其切换为垂直:
function rotate90()
hs.screen.find('Dell'):rotate(90)
end
但后来我意识到我想使用预先构建的模态菜单工具包spacehammer,它基本上就像hammerspoon 的 spacemacs ——但它是用 Fennel 编写的。好的,我喜欢 lisp,我可以在 lisp 中处理配置文件,对吧?
所以首先我让 spacehammer 工作,并验证默认配置是否正常工作并且不会引发任何错误。查看。
然后我转到我简单的现有函数的移植:我将我的 lua 函数转换为名称略有不同的 Fennel 函数:
(fn rotate-vertical []
(let [monitor (hs.screen.find "Dell")]
(monitor.rotate 90)))
正确的?这是您的基本 lisp 翻译,应该可以正常工作。但是当我尝试运行它时,突然间我收到了来自 c-land 的错误:
2021-02-19 17:24:59: 17:24:59 错误:LuaSkin:hs.timer 回调错误:/Users/myhomedir/.spacehammer/config.fnl:24:错误:参数 1 的“数字”类型不正确(预期的用户数据)堆栈回溯:[C]:在字段“旋转”/Users/myhomedir/.spacehammer/config.fnl:24:在函数中</Users/myhomedir/.spacehammer/config.fnl:22>
有趣的是,回溯中的行号根本不正确:在 config.fnl 中,这些行是注释。但我认为它必须是新功能,因为这就是我所做的全部更改,并且在尝试运行它时触发了错误。rotate
但是我试图调用的hammerspoon方法肯定需要一个数字,而不是任何“用户数据”......