Очень возможно, что я просто не понимаю проблемное пространство, но у меня возникли проблемы с определением 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 CompletionTags()
{
this.completionTags = new List<string> {
// SQL keywords
"COUNT",
"FROM",
"HAVING",
};
}
Я знаю, ЧТО мне нужно делать. Мне как-то нужно захватить буфер, когда он изменится, найти все вхождения «DEFINE ([a-zA-Z0-9_] {1,})» и добавить \1 в список завершения.
Я понятия не имею, КАК это сделать. Любые указатели в правильном (или любом) направлении на этом этапе будут очень признательны.
Будьте добры - мы все были не в своей тарелке на каком-то этапе (я программирую на C# уже 3 дня)...