0

我正在创建一个基于 Web 的 Lua 编辑器。到目前为止,我已经让 Monaco 编辑器工作得很好。现在我希望通过为用户提供代码完成来使其更智能。我到处寻找我想做的具体例子,但找不到任何东西,所以我不确定它是否可能。

首先,我有一些可用于 Lua 脚本的全局函数库。假设这个库叫做“foo”,它在库中有几个函数,比如说“bar”和“baz”。因此,当用户键入“f”时,它应该弹出“foo”作为可能的代码完成。假设用户选择“foo”并且编辑器将其写出来。现在,当用户添加一个“。” 编辑器应该显示下一组代码完成 - 即列出“bar”和“baz”作为可能的选项。假设用户选择“栏”。现在在屏幕上编辑器应该显示“foo.bar()”。假设“bar”有一个参数需要填写。它应该将光标放在“(”和“)”之间

毕竟,我还想让编辑做更多的事情。现在让我们说“foo.bar()”返回一个表(Lua 称之为字典类型数组)——出于我的目的,这个表可以被认为是一个具有属性的类。我们将类型称为“moo”,它具有“shoo”和“goo”属性。

所以 - 总之,用户应该能够编写如下代码:

local a = foo.bar( whatever )
local b = a.shoo

并且编辑器应该显示“foo”、“bar”、“bar”函数签名的代码完成,并意识到“a”的类型是“moo”,并且当用户键入“a”时。它显示“shoo”和“goo”作为代码完成选项。

请帮忙 - 我该怎么做?我精通 JS 并且已经全部设置好并准备就绪......但是没有具体的例子可以向我展示如何教 Monaco 不同的函数以及这些类型的返回类型和属性。所有代码完成示例,例如使用 registerCompletionItemProvider 的完成提供程序示例,都仅限于非常简单的情况,并且不会向 Monaco 教授任何有关类型的内容。

许多关于摩纳哥的屏幕截图似乎表明我正在尝试做的事情是可能的。

4

0 回答 0