微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Monaco 编辑器中进行智能类型识别代码完成?

如何解决如何在 Monaco 编辑器中进行智能类型识别代码完成?

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

首先,我有一些可用于 Lua 脚本的全局函数库。假设库名为“foo”,库中有几个函数,比如“bar”和“baz”。因此,当用户键入“f”时,它应该弹出“foo”作为可能的代码完成。假设用户选择“foo”并且编辑器将其写出。现在,当用户添加“.”时。编辑器应该显示下一组代码完成 - 即列出“bar”和“baz”作为可能的选项。假设用户选择“bar”。现在在屏幕上编辑器应该显示“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 并且已经准备好一切……但是没有具体的例子来告诉我如何教摩纳哥关于这些类型的不同函数和返回类型和属性。所有代码补全示例,例如使用 registerCompletionItemProvider 的补全提供程序示例,都仅限于非常简单的情况,并且不会教 Monaco 任何有关类型的知识。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。