4

在我尝试构建的项目中,我使用了编辑器代码。我尝试使用 monaco 编辑器。

我希望编辑器支持的主要内容是:

  1. 标记我的自定义语言关键字、功能等...
  2. 我的自定义语言的智能感知。
  3. 预览功能参数。

所以现在:

  • 我仔细查看了官方网站上的 monaco editor examples。

  • 结果与我寻找的结果非常接近,但对我来说主要问题是虽然我将 noLib 选项添加到我的代码中,但还有其他关键字,请参见下图。 https://imgur.com/pwDikZI

  • 其他的东西有效。见图片https://imgur.com/0c4K8wE
  • 我知道因为我使用了 javascript/typescript 语言模式,所以标记有问题。

这是我写的代码:

require.config({paths: {'vs': 'lib/package/min/vs'}});

require(['vs/editor/editor.main'], function() {
    let editor = monaco.editor.create(document.getElementById('editor'), {
        language: 'typescript',
        minimap: {enabled: false},
    });
    monaco.languages.typescript.typescriptDefaults.addExtraLib([
        'declare function Foo(a: number,b: number, name: string (optional)) :void',
        'const someString: string ',
    ].join('\n'));

    monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
        noLib: true,
        allowNonTsExtensions: true,
    });

    editor.updateOptions({fontSize: 20});
});

我的问题是:

  1. 有一种方法可以禁用 javascript/typescript 附加关键字,以便用户只能看到我的自定义语言?
  2. 有一种方法可以像在 monaco 编辑器示例中那样使用自定义语言并添加功能预览,就像我在上面显示的图片中一样?(不使用 js/ts 语言)。
4

1 回答 1

3

我有同样的需求,不希望自动完成中的 javascript/typescript 关键字。我使用以下方法解决了它:

monaco.editor.create(<your container DOM element here>, {
    . . . .
    suggest: {
        showKeywords: false,
    }
});

我在这里找到了一个较旧的答案:https ://github.com/microsoft/monaco-editor/issues/1411 ,但从那时起 API 似乎发生了变化。

于 2020-09-20T13:44:41.690 回答