Call
... = Plugin.Call (PluginId [, ...])
Parameters:
PluginId: string (plugin's GUID in textual representation)
... : zero or more additional parameters
Returns:
... : zero or more return values
Description:
1. The function implements the "asynchronous" plugin call.
If the plugin call turned out to be asynchronous (e.g. if the plugin displayed
a dialog on the screen) then the function returns true without waiting for the plugin
return, and the macro continues its execution.
2. If the plugin call turned out to be synchronous, the macro gets values corresponding
to those returned by the plugin:
- If the plugin is not found or returned 0, then false is returned to the macro.
- If the plugin returned 1 or INVALID_HANDLE_VALUE, then true is returned to the macro.
- If the plugin returned a pointer to a FarMacroCall structure, see p. 4.
3. Arguments are passed to the plugin in accordance with their Lua types:
nil -> FMVT_NIL
boolean -> FMVT_BOOLEAN
number -> FMVT_DOUBLE
int64 -> FMVT_INTEGER (int64 - kind of userdata, created by bit64 library)
string -> FMVT_STRING (automatically converted from UTF-8 to UTF-16LE)
{string} -> FMVT_BINARY (in order to pass an arbitrary string without UTF-8 -> UTF16LE
conversion, the string should be placed in a table as an element
with its key==1)
4. Values returned by the plugin via a FarMacroCall structure are passed to the macro
the following way:
FMVT_NIL -> nil
FMVT_BOOLEAN -> boolean
FMVT_DOUBLE -> number
FMVT_INTEGER -> number, if it "fits" in 53 bits, otherwise int64
FMVT_STRING -> string (automatically converted from UTF-16LE to UTF-8)
FMVT_BINARY -> table (the table contains a string as an element with its key==1;
the string is placed as is, without conversion)
FMVT_POINTER -> light userdata
FMVT_ARRAY -> table (array of elements; the table contains 2 fields:
["type"] = "array", and
["n"] = number of array elements)
See also:
Restrictions in the use of some functions