2015-05-15 23 views
8

È molto probabile che non capisco lo spazio del problema, ma ho difficoltà a capire il MEF (progetto Editor Classifier).Come aggiungere parole di completamento dinamicamente a VS2013 Syntax Extension (MEF)

Ho creato (mettendo insieme le guide dettagliate da MSDN https://msdn.microsoft.com/en-us/library/ee197665.aspx) un sintassi di sintassi per il linguaggio Stored Procedure Informix.

Uno dei problemi principali che ho è - voglio essere in grado di trovare tutte le istanze della parola chiave "definire" e popolare la parola subito dopo nella dell'estensione Statement Completion ho (attualmente si tratta di popolato da un elenco definito di parole).

Proprio come il supporto nativo di C#: quando si definisce una variabile, questa diventa disponibile nel menu a discesa Completamento automatico.

mi sono liberato del in classe hardcoding (dal walkthrough) e le mie parole di completamento sono definiti in questo modo:

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

CompletionTags completionTags = new CompletionTags(); 

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

La mia classe CompletionTags è piuttosto semplice:

CompletionTags classe { pubblico Elenco di completamento Tag;

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

So cosa devo fare. In qualche modo ho bisogno di dirottare il buffer quando cambia e trovare tutte le occorrenze di 'DEFINE ([a-zA-Z0-9 _] {1,})' e aggiungere \ 1 alla lista dei tag di completamento.

Non ho idea di come fare questo. Qualsiasi suggerimento nella direzione giusta (o qualsiasi) a questo punto sarebbe molto apprezzato.

Be Kind - Siamo stati tutti fuori della nostra profondità a un certo punto (Sono stato di programmazione in C# ora per 3 giorni) ...

+0

sono riuscito a ottenere questo lavoro ruotando la classe CompletionTags in un Singleton - e poi ho dirottato il classifer sintassi evidenziatore per verificare le definisce e aggiungere all'elenco di tag di completamento. SO che questo non è il modo giusto per farlo, quindi la domanda rimane valida. – Trent

risposta