[JW Lua] Return value issue with v0.66
Aaron Sherber
aaron at sherber.com
Tue Mar 14 13:46:22 CET 2023
This is not something I use currently, so I don't have any skin in the
game. But from a perspective of comprehensibility, I think it makes more
sense to expect the first value returned. It's essentially the same as
doing `local foo = my_function()` when the function returns multiple values
-- the variable gets the first return value and the rest are discarded.
Aaron.
On Sun, Mar 12, 2023 at 3:42 PM Robert Patterson <
robert at robertgpatterson.com> wrote:
> Okay, so it isn't exactly a bug. ExecuteLuaScriptItem returns the top
> value on the Lua stack, which is the *last* value returned. So the question
> is, do I modify it to return the first value returned (i.e., the last value
> on the stack), or do I modify the docs to say it returns the last value
> returned?
>
> Mir ist es egal.
>
>
> On Sun, Mar 12, 2023 at 2:24 PM Robert Patterson <
> robert at robertgpatterson.com> wrote:
>
>> I created this script called "test_return_value.lua":
>>
>> function plugindef()
>> finaleplugin.RequireDocument = false
>> finaleplugin.LoadLuaSocket = true
>> finaleplugin.IgnoreReturnValue = true
>> end
>>
>> return 11, 12, 13
>>
>>
>> And I call it with this script:
>>
>>
>> local script_path = finenv.RunningLuaFolderPath() ..
>> "test_return_value.lua"
>> local items = finenv.CreateLuaScriptItemsFromFilePath(script_path)
>> local success, errmsg, msgtype =
>> finenv.ExecuteLuaScriptItem(items:GetItemAt(0))
>> if errmsg ~= null then print("type", msgtype, errmsg) end
>>
>> It always returns: success==true, errmsg=="13", msgtype==0.
>>
>> The bug here is that it should be returning errmsg=="11". I'm not sure
>> why it isn't, and I need to research it.
>>
>>
>>
>> On Sun, Mar 12, 2023 at 1:12 PM Jan Angermüller <jan at angermueller.com>
>> wrote:
>>
>>> Robert,
>>>
>>> thanks a lot for v0.66!
>>>
>>> I have been testing the compatibility with Perfect Layout and also tried
>>> the new "return value" handling.
>>> It seems to me like there is still a problem. I tried it in
>>> Fin27/Win10/RGP Lua v.66.
>>>
>>> I call the plug-in with:
>>> local success,d1,d2=finenv.ExecuteLuaScriptItem(script)
>>>
>>> When the plug-in ended without error, but with:
>>> return 11,12,13
>>>
>>> The script above gave these values:
>>> success=true
>>> d1=13
>>> d2=0
>>>
>>> I think this is correct. (However, I have not found it in the
>>> documentation.)
>>>
>>> *BUT: *this only happened the very first time when I called the script
>>> directly after starting Finale.
>>> When I run the ExecuteLuaScriptItem a second time, it always results in:
>>>
>>> success=true
>>> d1="" --or at least it's an "empty nothing" when I print it
>>> with tostring(d1). It's not nil.
>>> d2=0
>>>
>>> So after the first run I can't influence the return value anymore.
>>> Seems like the return value is permanently stored somewhere in RGP Lua.
>>>
>>> When I restart Finale, it's the same behaviour: first time correct value
>>> 13, after that "".
>>>
>>> Jan
>>> _______________________________________________
>>> JWLua mailing list
>>> JWLua at jwmusic.nu
>>> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu
>>>
>> _______________________________________________
> JWLua mailing list
> JWLua at jwmusic.nu
> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://jwmusic.nu/pipermail/jwlua_jwmusic.nu/attachments/20230314/a835c1ed/attachment.htm>
More information about the JWLua
mailing list