2017-07-28 7 views
0

Ich versuche, eine Funktion zu meiner Conky hinzufügen, die die Länge einer Zeichenfolge für Debug-Zwecke druckt. Der Code, in einer Datei test.lua, genannt ist ziemlich trivial:Wie implementiert man eine grundlegende Lua-Funktion in Conky?

function test(word) 
return string.len(word) 
end 

... und ich laden Sie es so. In meinem conky.config Abschnitt habe ich:

lua_load = '/home/xvlaze/test.lua', 
lua_draw_hook_pre = 'test' 

... im conky.text Abschnitt habe ich:

${lua test "fooo"} 

... wo test ist der Name der Funktion und fooo die Saite zu testen.

sollte das erwartete Ergebnis eine 4 in Conky gedruckt werden, aber statt dass ich bekommen:

conky: llua_do_call: function conky_test execution failed: /home/xvlaze/test.lua:2: attempt to index a nil value (local 'string') 
conky: llua_getstring: function conky_test didn't return a string, result discarded 

Ich habe durch die documentation durchsucht, aber ich kann nichts finden. Weiß jemand, wo der Fehler ist?

+0

Frankly Ihre Parameter 'string' nennen, genauso wie die normale' string' Bibliothek kann nicht wirklich gut enden. –

+0

In diesem Fall sollte es sogar funktionieren. Aber ja. Seine schlechte Idee. – moteus

+0

Aktualisiert. Sieht schlimmer aus. – xvlaze

Antwort

0

Mehrere Anleitungen dazu, wie Funktionen in Conky zu implementieren:

  • Zu allererst: SIE conky_ VOR DER FUNKTION NAME verwenden. Andernfalls werden Sie die folgende Fehlermeldung erhalten, wenn Ihr Conky ausgeführt wird:

    attempt to call a nil value 
    
  • Zweitens: Sie müssen immer einen Wert zurück. Ich habe nichts dagegen, es zu wiederholen - es ist entscheidend. Andernfalls erhalten Sie:

    function foobar didn't return a string, result discarded 
    function_result 
    

    ... in Ihrem Terminal und Ihre Conky werden Ihren zusätzlichen Code im Zusammenhang der Werte leer gelassen werden. Zu Ihrer Funktion wird nichts gedruckt.

  • Last but not least: Sie müssen Ihre Funktion wird immer Aufruf wie:

    lua_load = '/path/to/function.lua', 
    -- Whatever content... 
    ${lua function_name function_parameter1 function_parameterN} -- In case you use more than one parameter. 
    

Zusammengefasst eine Dummy-Funktion Vorlage sein könnte:

  • Hauptdatei (conky .conf):

    conky.config = { 
        -- Whatever content... Lua styled comments. 
        lua_load = '/path/to/function.lua', 
    } 
    
    conky.text = [[ 
        # Whatever content... In this section comments are started with '#'!  
        ${lua function_name parameter} 
    ]] 
    
  • Funktion Datei:

    function conky_function_name(parameter) 
        -- Whatever content... Remember this is Lua, not conky.text syntax. Always use '--' comments! 
        return whatever -- No return, no party. A function MUST always return something! 
    end 
    
Verwandte Themen