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

将Lua编辑器集成到C#程序中,c#,editor,lua,code-completion,C#,Editor,Lua,Code Completion,我正在为一个小的开源项目做一个POC(概念验证),将Lua集成到c#中看起来很简单,但对于这个项目,我们想做得更进一步。我们希望能够从C#程序(WPF客户端,但如果需要的话,我们可以使用winforms)中编辑Lua脚本,IDE需要基本的代码完成,我们可以添加C#对象和方法(运行时您可以从Lua脚本中访问的对象和方法),以便自动完成。。它们是C#可用的API吗 编辑:Scholli我想要一些示例代码,我希望代码完成 while true do Mouse:setY(TrackIR:get

我正在为一个小的开源项目做一个POC(概念验证),将Lua集成到c#中看起来很简单,但对于这个项目,我们想做得更进一步。我们希望能够从C#程序(WPF客户端,但如果需要的话,我们可以使用winforms)中编辑Lua脚本,IDE需要基本的代码完成,我们可以添加C#对象和方法(运行时您可以从Lua脚本中访问的对象和方法),以便自动完成。。它们是C#可用的API吗

编辑:Scholli我想要一些示例代码,我希望代码完成

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

当鼠标和TrackIR是可以从Lua脚本访问的c#对象时

我不知道有任何这样的lib。您可能需要/发现一些有用的工具和一些提供代码编译的开源Lua编辑器,如blua和Scite。请注意,代码完成有不同的风格,每种风格在功能、易实现性等方面都有优点/缺点。例如,如果您只想提供一个与全局Lua命名空间中的对象对应的可能单词列表,那么您根本不需要太多;如果您希望代码完成能够处理表字段和对象以及各种级别的嵌套,那么工作量将会大大增加

如果您想将Lua编辑器与语法突出显示C#集成在一起,我认为最简单的方法是使用控件,该控件在C#至中提供。它已经包含Lua语言的highlighter,并且相对容易嵌入和使用

对于Lua与C#的接口,可以使用和返回。有关文档链接,请参阅

如果您需要在标准库之外完成代码,那么代码完成将不是一项容易的任务,标准库可以在一个简单的字典中描述。由于Lua是一种动态语言,在实际运行代码到给定点之前推断变量的内容并不是一件小事——这不是不可能的,看看哪种语言可用于SciTE和ViM并允许代码检查(但它并不完美)

如果您想在运行环境中尝试代码,例如,在加载模块和设置变量的情况下运行Lua状态,您可以从高级Readline支持补丁中获得灵感,并将其应用于C#中的环境。除其他外,它还支持:

  • 完成关键字和全局变量名
  • 变量名的递归和元表感知完成
  • 上下文相关分隔符完成

似乎您只需要一个可嵌入的编辑器,它可以有代码完成和语法突出显示,最好是基于WPF的。它不需要显式支持Lua

看一看。这是一个


您必须在它提供的框架内自己实现突出显示文件和完成,但这看起来很容易。

您不是在开玩笑。我花了2年的时间在这上面。我们必须现实一点,我认为最好的折衷办法是只为我们自己的全局变量实现代码完成,但我会看看你的链接。。谢谢@Anders只是一个友好的评论:鉴于你没有说你需要代码完成有多高级,Michal的回答非常好,即我发现“我们必须现实”和“我所需要的只是完成全局变量”有点不礼貌。@Anders您能提供一些部分编写的代码的示例,这些代码将出现在您的编辑器中,并完成所需的操作,thxI确实给了答案一个有用的点击,这不是不礼貌的,是吗。。。编辑的问题中的代码示例看起来非常有趣。您可以将自定义全局对象及其方法添加到代码完成数据库吗?我搜索了网络,但找不到Lua是否存在Xshd,您知道吗?