我使用DynamicLua库,将Lua脚本添加到我的C#应用程序中,效果非常好。
我想实现的是,获取当前正在执行的行(就像在Visual Studio中一样),并对其进行突出显示。
目前我正在这样做:
这很适用于我的Lua代码,例如:
目前我正在这样做:
public static void RunLua(string LuaToExecute)
{
dynamic lua = new DynamicLua.DynamicLua();
string[] lua_s_split = LuaToExecute.Split('\n');
int counter = 0;
foreach (string line in lua_s_split)
{
// highlight current line in editor
HighlightLine(counter + 1);
//execute current line
lua(line);
counter++;
}
}
这很适用于我的Lua代码,例如:
move(20, 19)
sleep(1000)
move(5, 19)
但我不能只执行单行语句,例如我的绑定函数move()
。但我也想使用多行语句,比如函数和循环。如果文本编辑器包含:
function test()
return "Hallo Welt"
end
lua(line)
会抛出异常,因为只有第一行的 function test()
被传递了,解释器缺少结束语句。
我该怎么办?我应该检查该行是否以函数、while 等命令开头,然后扫描 end 块并将其添加到一个字符串中,以便我可以一次执行和突出显示这个多行语句吗?这可行吗?我该如何做?
请帮帮我。
_setHighlightLine
函数绑定到动态Lua对象上。设置Lua钩子,我的函数将在每个新行lua执行时自动调用。我会试一下的。谢谢。 - pixelport