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

我正在为一个小型开源项目做 POC(概念验证),将 Lua 集成到 C# 中似乎非常直接,但对于这个项目,我们想进一步。我们希望能够从我们的 C# 程序(WPF 客户端,但如果需要的话,我们可以转向 winforms)中编辑 Lua 脚本,IDE 需要基本的代码完成,并且我们可以添加我们的 C# 对象和方法(在运行时可以从 Lua 脚本中访问到的对象和方法),这样它们就会被自动完成..是否有适用于 C# 的这样的 API?

编辑:Schollii 想要一些我想要代码完成的示例代码

while true do
    Mouse:setY(TrackIR:getPitch())
end

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

原文链接 https://stackoverflow.com/questions/8774778

点赞
stackoverflow用户869951
stackoverflow用户869951

我不知道是否存在这样的库。你可能需要找到一些有用的工具,比如 Luainterface 和一些提供代码补全功能的开源 Lua 编辑器,如 blua 和 Scite。需要注意的是,代码补全有不同的类型,每种类型都有优缺点,包括功能强大、实现简单等等。例如,如果你只想提供一个可能与全局 Lua 命名空间中的对象相对应的单词列表,则根本不需要什么;然而,如果你希望代码补全能够与表字段、对象以及各种嵌套级别一起使用,那么工作量将大大增加。

2012-01-08 04:59:55
stackoverflow用户221509
stackoverflow用户221509

如果您想将Lua编辑器与C#语法高亮集成在一起,我认为最简单的方法是使用Scintilla控件,在C#中通过ScintillaNET获取。它已经包含了Lua语言的高亮器,并且相对容易嵌入和使用。

要将Lua与C#接口化,可以使用LuaInterface。请参考此问题以获取文档链接。

如果您需要超出标准库的补全功能,这将不是一项简单的任务,标准库可以用一个简单的字典描述。由于Lua是一种动态语言,很难在实际运行到给定点之前推导出变量的内容 - 这并非不可能,可以看一下luainspect,它适用于SciTE和ViM,并允许代码检查(但不完美)。

如果您想在运行环境中尝试代码 - 例如,您有一个具有加载模块和设置变量的Lua状态 - 您可以受到LuaPowerPatches中的高级自动补全补丁的启发,并在C#中自适应它。除其他外,它还支持:

  • 关键字和全局变量名称的完整。
  • 变量名称的递归和元表感知的完整。
  • 上下文敏感的定界符完全。
2012-01-08 12:32:00
stackoverflow用户151501
stackoverflow用户151501

似乎你只是想要一个可嵌入的编辑器,它可以具有代码补全和语法高亮功能,最好基于 WPF。它不需要明确支持 Lua。

看看 Avalon Edit。这里有一篇关于它的文章

你将必须在它提供的框架中自己实现高亮文件和补全 - 但看起来很容易。

2012-01-09 15:42:27