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

Tre*_*ent 8 c# mef autocomplete visual-studio-sdk visual-studio-2013

我很可能不理解问题空间,但我很难搞清楚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));
};
Run Code Online (Sandbox Code Playgroud)

我的CompletionTags类非常简单:

class CompletionTags {public List completionTags;

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

我知道我需要做什么.我以某种方式需要在缓冲区更改时劫持缓冲区并找到所有出现的'DEFINE([a-zA-Z0-9 _] {1,})'并将\ 1添加到completionTags列表中.

我不知道怎么做.此时在任何方向(或任何方向)的任何指针都将非常感激.

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