如何在VS2013语法扩展(MEF)中动态添加补全词

本文关键字:动态 添加 MEF VS2013 语法 扩展 | 更新日期: 2023-09-27 17:49:15

很可能我只是不理解问题空间,但我有麻烦弄清楚MEF(编辑器分类器项目)。

我已经为Informix存储过程语言创建了一个语法高亮显示(将来自MSDN https://msdn.microsoft.com/en-us/library/ee197665.aspx的演练指南拼凑在一起)。

我遇到的一个主要问题是-我希望能够找到关键字"DEFINE"的所有实例,并将单词直接填充到我拥有的语句完成扩展中(目前它是从定义的单词列表中填充的)。

很像c#的原生支持——当你定义一个变量时,它会在自动完成下拉列表中可用。

我去掉了类内硬编码(从演练中),我的补全词是这样定义的:

List<Completion> completions = new List<Completion>();
CompletionTags completionTags = new CompletionTags();
foreach (string completionTag in completionTags.completionTags)
{
    completions.Add(new Completion(completionTag));
};

我的CompletionTags类很简单:

类CompletionTags{

public CompletionTags()
{
    this.completionTags = new List<string> {
        // SQL keywords
        "COUNT",
        "FROM",
        "HAVING",
    };
}
我知道我需要做什么。我以某种方式需要劫持缓冲区时,它的变化,并找到所有出现的'DEFINE ([a-zA-Z0-9_]{1,})'和添加'1到completionTags列表。

我不知道该怎么做。在这一点上,任何正确(或任何)方向的指示都将不胜感激。

要善良——我们都在某些阶段超出了我们的深度(我已经用c#编程3天了)…

如何在VS2013语法扩展(MEF)中动态添加补全词

阅读这个答案将会有所帮助。看:

XML编辑器智能感知功能

缓存模式