我想以编程方式动态插入一个代码段(例如<foo attr="$1">$2</foo>
。检查文档似乎是使用代码段的唯一方法是在完成项提供程序中(使用kind: monaco.languages.CompletionItemKind.Snippet
返回完成项我找到了一个SnippetString
界面,但唯一支持它的地方是CompletionItem
。
我也想知道也许我可以通过编程方式触发CompletionItem
,但我找不到办法。我尝试使用editor.executeEdits()
您可以传递操作标识符,但我没有找到识别CompletionItem
的方法。
答案 0 :(得分:1)
您可以在编辑器中模拟键入代码段为:
let text = "foo"; //snippet label
this.editor.trigger('keyboard', 'editor.action.triggerSuggest', {});
this.editor.trigger('keyboard', 'type', {text: text});
setTimeout(() => {
this.editor.trigger('editor', 'acceptSelectedSuggestion', {});
}, 100);
编辑器加载摘要所需的setTimeout
答案 1 :(得分:0)
当用户执行某种手势/按键组合时,注册一个自定义动作或自定义命令并添加文本呢?参见:
我认为代码完成是正确的方法。为什么不使用它? https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-completion-provider-example