简体   繁体   English

摩纳哥编辑器自定义语言智能感知

[英]Monaco Editor Custom Defined Language Intellisense

I am new to Monaco editor.我是摩纳哥编辑的新手。 I am trying to include Monaco editor in my web application.我正在尝试在我的 Web 应用程序中包含 Monaco 编辑器。 I want to know how can I add a custom language defined by me into Monaco editor with rich IntelliSense and validation.我想知道如何将我定义的自定义语言添加到具有丰富 IntelliSense 和验证功能的 Monaco 编辑器中。 Can anyone help me on this?谁可以帮我这个事? Thank you.谢谢你。

You can implement this by defining your own custom CompletionItemProvider .您可以通过定义自己的自定义CompletionItemProvider来实现这一点。

I suggest you take a look at the Completion provider example to get yourself started.我建议您查看Completion 提供程序示例以开始使用。

This is an example of an CompletionItemProvider with keywords that were dynamically added.这是带有动态添加的关键字的 CompletionItemProvider 的示例。

 monaco.languages.registerCompletionItemProvider('CustomExpressionLanguage', {
                provideCompletionItems: () => {
                    if (!items || items.length <= 0)
                        return { suggestions: [] };

                    window.varSuggestions = items.map(function (x) {
                        const one = {
                            label: x.Value,
                            kind: monaco.languages.CompletionItemKind.Keyword,
                            insertText: `Col("${x.Key}")`,
                            insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet
                        };
                        return one;
                    });

                    window.pythonSuggestions = window.pythonMathMethods.map((x) => {
                        var item = {
                            label: x.label,
                            kind: monaco.languages.CompletionItemKind.Funcion,
                            insertText: `${x.label}${x.arguments}`,
                            documentation: x.documentation,
                            insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet
                        };
                        return item;
                    });

                    window.suggestions = window.varSuggestions.concat(window.pythonSuggestions);
                    return { suggestions: window.suggestions };
                }
            });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM