2

Monaco Editor 允许通过monaco.languages.registerCompletionProvider. 但是,这会在给定语言的所有实例中全局注册提供程序。

在我的具体情况下,我想在 SQL 编辑器中提供表和列的自动完成功能。但是我有很多实例,他们需要使用不同的表/列集。

有没有办法只为特定的编辑器实例注册自动完成?

4

2 回答 2

1

不,你不能,他们进入一个全球注册表。但是提供者是作为参数传递给编辑器模型的,所以你可以只为你感兴趣的模型/编辑器提供完成项,其他的返回空。

于 2018-06-16T09:13:24.897 回答
0

其实可以,只是有点麻烦。

前提是注册返回一个一次性的,它可以处理(即删除/取消注册),并且提供者是附加的(非排他性的)。

假设您有自己的功能registerMyCompletion::

功能 registerMyCompletion(monaco, provider) { return monaco.languages.registerCompletionProvider(provider).dispose; }

现在在您的组件中:

const [dispose, setDispose] = useState();

setDispose(registerCompleteion(...)} onBlur={() => setDispose(prevDispose => { if(prevDispose) { prevDispose(); } return null; })} > }
于 2022-02-15T12:54:25.197 回答