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