LYa*_*ass 3 antlr autocomplete editor typescript monaco-editor
所以最近我想使用自定义语言创建一个基于浏览器的编辑monaco器antlr。我遵循了这个很棒的教程https://tomassetti.me/writing-a-browser-based-editor-using-monaco-and-antlr/。
Monaco 已经在按 ctrl + space 时给出了建议,但我想在monaco. 我怎样才能做到这一点?
摩纳哥支持注册自己的完成提供商。这是针对每种语言的注册,但适用于所有编辑器实例。使用您的提供程序的实例调用languages.registerCompletionItemProvider 。
提供者类本身非常简单。就像是:
export class CodeCompletionProvider implements languages.CompletionItemProvider {
public readonly triggerCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.\\@(".split("");
public provideCompletionItems(model: ITextModel, position: Position, context: CompletionContext,
token: CancellationToken): ProviderResult<CompletionList> {
return {
incomplete: false,
suggestions: this.createInternalCompletionItems(replaceRange, model.editorMode),
};
}
return services.getCodeCompletionItems(sourceContext, position);
}
public resolveCompletionItem(item: CompletionItem, token: CancellationToken): ProviderResult<CompletionItem> {
return item;
}
}
Run Code Online (Sandbox Code Playgroud)
真正的工作是生成完成项。一种方法是使用我的antlr4-c3 代码完成核心,并使用逻辑对其进行修改,以创建和使用符号表来提供符号信息。
| 归档时间: |
|
| 查看次数: |
10029 次 |
| 最近记录: |