function - 如何调试从 conky 调用的 lua 函数?

标签 function lua conky

我正在尝试向我现有的 conky 设置添加一些 lua 功能,以便可以清理我的 conky 文本中的重复“代码”。例如,我有每个已安装的 FS、每个核心等的信息,其中面板中显示的每一行仅由一个参数不同。

我的第一个骨架,尝试使用 lua 函数似乎可以运行,但在我的面板中没有显示任何内容。我只找到了非常简单的例子来作为基础,所以我可能犯了一个简单的错误,但我什至不知道如何诊断它。我这里的代码是根据我能够找到的有关编写函数的内容建模的,例如这个 How to implement a basic Lua function in Conky? ,但这就是我在该主题上找到的所有深度(除了绘图和开罗示例之外)。

这是添加到我的 conky 配置中的代码,以及我的functions.lua 文件的内容

conky.config = {
...
    lua_load = '/home/conky-manager/MyConky/functions.lua',

};

conky.text = [[
...
${voffset 5}${lua conky_test 'test'}
...
]]

文件-functions.lua

function conky_test(parm1)
    return 'result text'
end

我期望看到的是“结果文本”显示在我的面板中该函数调用出现的位置,但没有显示任何内容。

是否有 conky 在运行时创建的日志,或者提供一些调试输出的方法?即使我在这里犯了一个简单的错误,当我的代码变得更加复杂时,我仍然希望能够诊断问题。

最佳答案

成功!

将几篇文章中的信息拼凑在一起后,我发现了我的基本缺陷 - 1.缺少“conky_main”函数, 2. 缺少调用它的“lua_draw_hook_post”,并且 3. 意识到如果我从终端调用 conky,lua 中的打印语句将出现在那里。

因此,对于看到此问题并遇到相同问题的任何人,这里是更正后的代码。

conky.config = {
...
    lua_load = '/home/conky-manager/MyConky/functions.lua',
    lua_draw_hook_post = "main",

};

conky.text = [[
...
${lua conky_test 'test'}
...
]]

以及我的functions.lua文件中的正确基础知识

function conky_test(parm1)
    return 'result text'
end

function conky_main()
    if conky_window == nil then
        return
    end
end

一些注意事项:

  1. 我仍然不确定使用“lua_draw_hook_pre”而不是“lua_draw_hook_post”是否有任何区别,但在本例中似乎没有区别。
  2. 此外,一些示例显示实际上调用了这个“测试”函数而不是编写“main”,但“main”似乎在检查 conky_window 是否存在方面有值(value)。
  3. 一些示例似乎表明需要使用前缀“conky_”命名函数,但随后显示了不带前缀调用这些函数的示例,因此我假设前缀是在调用过程中推断出来的。

关于function - 如何调试从 conky 调用的 lua 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54188219/

相关文章:

python - 如何将值是列表的字典传递给函数

javascript - 如何操作 jQuery 单击事件的宽度?

lua - Lua中是否有可以用来访问局部变量的表?

lua - 如何使用 out_to_console 模式在 conky 中制作彩色文本?

c - C 网络编程用于建立连接的运行进程的名称

php - 无法使用函数文件将 MySQL 连接到注册页面

python - 在 Python 中实现霍纳方法的问题

jquery - Node js 和 socket.io 与 lua 服务器开发

function - Lua 如何创建可用于变量的自定义函数?

linux - C/C++ 语言中的 Conky