如何动态添加完成单词到VS2013语法扩展(MEF)

时间:2015-05-15 06:17:31

标签: c# visual-studio-2013 autocomplete mef visual-studio-sdk

我很可能不了解问题空间,但我在查找MEF(编辑器分类器项目)时遇到了麻烦。

我已经创建了(将MSDN https://msdn.microsoft.com/en-us/library/ee197665.aspx的演练指南拼凑在一起),这是Informix存储过程语言的语法高清。

我遇到的一个主要问题是 - 我希望能够找到关键字" 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 list completionTags;

public CompletionTags()
{
    this.completionTags = new List<string> {
        // SQL keywords
        "COUNT",
        "FROM",
        "HAVING",
    };
}

我知道我需要做什么。我在某种程度上需要在缓冲区发生变化时劫持缓冲区,并找到所有出现的&#39; DEFINE([a-zA-Z0-9 _] {1,}}&#39;并将\ 1添加到completionTags列表。

我不知道如何做到这一点。此时在任何方向(或任何方向)的任何指针都将非常感激。

善待 - 我们在某个阶段已经超出了我们的深度(我现在用C#编程了3天)...

1 个答案:

答案 0 :(得分:2)

阅读this answer会很有帮助。 看看:

XML Editor IntelliSense Features

Schema Cache