将Lua编辑器集成到C#程序中

时间:2012-01-08 01:55:55

标签: c# editor lua code-completion

我正在为一个小型开源项目做一个POC(概念证明),将Lua整合到c#看起来非常直接,但对于这个项目我们想要更进一步。我们希望能够在我们的C#程序中编辑Lua脚本(WPF客户端,但我们可以选择winforms,如果它需要),IDE需要基本代码完成,我们可以添加我们的C#对象和方法(你的那些)将能够在运行时从Lua脚本到达)因此它们将自动完成..它们是否适用于C#?

编辑:Schollii想要一些我希望代码完成

的示例代码
while true do
    Mouse:setY(TrackIR:getPitch())
end

其中Mouse和TrackIR是可从Lua脚本访问的c#对象

3 个答案:

答案 0 :(得分:3)

如果要将Lua编辑器与语法高亮显示C#集成,IMO最简单的方法是使用Scintilla控件,该控件可通过ScintillaNET在C#中使用。它已经包含了Lua语言的荧光笔,并且相对容易嵌入和使用。

要将Lua与C#连接,您可以使用LuaInterface并返回。有关文档链接,请参阅this question

如果您需要在标准库之外完成代码,则代码完成不是一件容易的事,可以在简单的字典中进行描述。由于Lua是一种动态语言,在实际运行代码到达给定点之前推导变量的内容并非易事 - 这不是不可能的,请查看可用于SciTE和ViM的lua-inspect并允许代码检查(但它并不完美)。

如果你想在一个正在运行的环境中尝试代码 - 也就是说你有一个运行模块加载和变量设置的Lua状态 - 你可以在LuaPowerPatches获得高级阅读支持补丁的启发,并使其适应你的环境C#。它支持其他:

  • 完成关键字和全局变量名称。
  • 变量名称的递归和元表识别完成。
  • 上下文敏感分隔符完成。

答案 1 :(得分:1)

您似乎只想要一个可嵌入编辑器,可以完成代码和语法高亮,最好是基于WPF。它不需要明确支持Lua。

看看Avalon Edit。这是article about it

您必须在其提供的框架内实现突出显示文件并自行完成 - 但这看起来很容易。

答案 2 :(得分:0)

我不知道有任何这样的库。您可能需要/找到有用的一些工具是Luainterface和一些提供代码补充的开源Lua编辑器,例如blua和Scite。请注意,代码完成有不同的风格,每个代码在功能,易于实现等方面都有优点/缺点。例如,如果您只想提供与全局Lua命名空间中的对象相对应的可能单词的列表,那么您不要我需要很多东西;如果OTOH你想要代码完成来处理表字段和对象以及各种级别的嵌套,工作将会大大增加。