2015-05-15 20 views
8

Es ist sehr wahrscheinlich, dass ich den Problembereich einfach nicht verstehe, aber ich habe Probleme, das MEF (Editor Classifier-Projekt) herauszufinden.So fügen Sie Vervollständigungswörter dynamisch zur VS2013-Syntaxerweiterung (MEF) hinzu

Ich habe eine Syntax highligher für Informix Stored Procedure-Sprache erstellt (Zusammenführen der Walkthrough-Guides von MSDN https://msdn.microsoft.com/en-us/library/ee197665.aspx).

Ein Hauptproblem, das ich habe, ist - ich möchte in der Lage sein, alle Instanzen des Schlüsselwortes "DEFINE" zu finden und das folgende Wort direkt in die Statement Completion-Erweiterung einzufügen (derzeit wird es aus einer definierten Liste von Wörtern gefüllt)).

Ähnlich wie die native Unterstützung von C# - wenn Sie eine Variable definieren, wird sie im Dropdown-Menü für die automatische Vervollständigung verfügbar.

ich losgeworden die in der Klasse Hardcoding (aus dem Durchlauf) und mein Abschluss Worte sind wie folgt definiert:

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

CompletionTags completionTags = new CompletionTags(); 

foreach (string completionTag in completionTags.completionTags) 
{ 
    completions.Add(new Completion(completionTag)); 
}; 

Meine CompletionTags Klasse ist ziemlich einfach:

Klasse CompletionTags { Öffentlichkeit ListenvervollständigungTags;

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

Ich weiß, was ich tun muss. Ich muss irgendwie den Puffer entführen, wenn er sich ändert, und alle Vorkommen von 'DEFINE ([a-zA-Z0-9 _] {1,})' finden und \ 1 zur completeTags-Liste hinzufügen.

Ich habe keine Ahnung, wie dies zu tun ist. Irgendwelche Zeiger in der rechten (oder irgendeiner) Richtung an diesem Punkt würden sehr geschätzt werden.

Art - wir irgendwann alle sind aus unserer Tiefe haben (ich habe für 3 Tage in C# worden Programmierung) ...

+0

Ich habe es geschafft, diese Funktion zu erhalten, indem die CompletionTags Klasse in ein Singleton drehen - und dann habe ich die Syntax-Highlighter classifer entführt für die definiert zu überprüfen und Fügen Sie der completeTags Liste hinzu. Ich weiß, dass dies nicht der richtige Weg ist, also bleibt die Frage bestehen. – Trent

Antwort