Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向VS2013语法扩展(MEF)动态添加完成词_C#_Visual Studio 2013_Autocomplete_Mef_Visual Studio Sdk - Fatal编程技术网

C# 如何向VS2013语法扩展(MEF)动态添加完成词

C# 如何向VS2013语法扩展(MEF)动态添加完成词,c#,visual-studio-2013,autocomplete,mef,visual-studio-sdk,C#,Visual Studio 2013,Autocomplete,Mef,Visual Studio Sdk,很可能我只是不理解问题空间,但我在理解MEF(编辑器-分类器项目)时遇到了困难 我已经为Informix存储过程语言创建了一个语法Highlighter(将MSDN中的演练指南拼凑在一起) 我遇到的一个主要问题是——我希望能够找到关键字“DEFINE”的所有实例,并将紧随其后的单词填充到我拥有的语句完成扩展中(目前它是从已定义的单词列表填充的) 很像C#的原生支持——定义变量时,它会在自动完成下拉列表中可用 我摆脱了课堂上的硬编码(来自演练),我的补全词定义如下: List<Complet

很可能我只是不理解问题空间,但我在理解MEF(编辑器-分类器项目)时遇到了困难

我已经为Informix存储过程语言创建了一个语法Highlighter(将MSDN中的演练指南拼凑在一起)

我遇到的一个主要问题是——我希望能够找到关键字“DEFINE”的所有实例,并将紧随其后的单词填充到我拥有的语句完成扩展中(目前它是从已定义的单词列表填充的)

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

我摆脱了课堂上的硬编码(来自演练),我的补全词定义如下:

List<Completion> completions = new List<Completion>();

CompletionTags completionTags = new CompletionTags();

foreach (string completionTag in completionTags.completionTags)
{
    completions.Add(new Completion(completionTag));
};
List completions=newlist();
CompletionTags CompletionTags=新的CompletionTags();
foreach(completionTags.completionTags中的字符串completionTag)
{
添加(新的完成(completionTag));
};
我的CompletionTags类非常简单:

类完成标记 { 公共列表完成标记

public CompletionTags()
{
    this.completionTags = new List<string> {
        // SQL keywords
        "COUNT",
        "FROM",
        "HAVING",
    };
}
public CompletionTags()
{
this.completionTags=新列表{
//SQL关键字
“伯爵”,
“从”,
“拥有”,
};
}
我知道我需要做什么。我需要在缓冲区发生更改时劫持它,并找到所有出现的“DEFINE([a-zA-Z0-9!]{1,})”并将\1添加到completionTags列表中

我不知道如何做到这一点。任何指向正确(或任何)方向的指针都将不胜感激

友善一点——我们在某个阶段都做得不够深入(我现在已经用C语言编程三天了).

阅读会有帮助。 看看:


我通过将CompletionTags类转换为singleton来实现这一点,然后我劫持了语法highlighter Classifier来检查定义并添加到CompletionTags列表中。我知道这不是正确的方法,所以问题仍然存在。