Как отлаживать функции lua, вызываемые из conky? - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь добавить некоторые функциональные возможности lua в мою существующую установку conky, чтобы можно было убрать повторяющийся «код» в моем conky тексте. Например, у меня есть информация для каждой смонтированной FS, каждого ядра и т. Д., Где каждая строка, отображаемая на моей панели, отличается ТОЛЬКО одним параметром.

Мой первый скелет, попытка использовать функции lua для этого, кажется, работает, но ничего не отображается на моей панели. Я нашел только очень простые примеры, на которых можно основывать это, поэтому я мог сделать простую ошибку, но я даже не знаю, как ее диагностировать. Мой код здесь смоделирован после того, что я смог найти в отношении написания функций, таких как этот Как реализовать базовую функцию Lua в Conky? , но это почти вся глубина, которую я нашел в теме кроме рисунков и каирских примеров.

Вот код, добавленный в мой conky config, а также содержимое моего файла 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 Ответ

0 голосов
/ 15 января 2019

Успех!

После объединения информации из нескольких статей я выяснил свои основные недостатки - 1. Отсутствует функция conky_main, 2. Отсутствует lua_draw_hook_post, чтобы вызвать его, и 3. Понимая, что если я вызову conky из терминала, там появятся операторы print в 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.
  3. В некоторых примерах указывалось, что требуется присвоение имен функциям с префиксом conky_, но затем были показаны примеры вызова этих функций без префикса, поэтому я предполагаю, что префикс выводится во время вызова.
...