È 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) ...
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