Condividi tramite


Interfacce del servizio di linguaggio

Per qualsiasi linguaggio di programmazione particolare, può esistere un'unica istanza di un servizio di linguaggio per volta. Tuttavia, un singolo servizio di linguaggio possibile utilizzare più di un editor.

Visual Studio non viene associato un servizio di linguaggio ad alcun editor particolare. Di conseguenza, quando si chiama un'operazione del servizio di linguaggio, è necessario identificareeditor appropriato come parametro.

Interfacce comuni relative ai servizi di linguaggio

L'editor ottiene il servizio di linguaggio chiamando QueryService nel package VS appropriato. Il servizio l'ID (SID) passato nella chiamata identifica il servizio di linguaggio richiesto.

È possibile implementare interfacce principali del servizio di linguaggio su qualsiasi numero di classi separate. Tuttavia, un approccio più comune consiste nell'implementazione delle interfacce seguenti in una singola classe:

L'interfaccia di IVsLanguageInfo deve essere distribuita in tutti i servizi di linguaggio. Vengono fornite informazioni sul servizio di linguaggio, ad esempio il nome localizzato del linguaggio, le estensioni di file associato al servizio di linguaggio e come recuperare un colorizer.

Interfacce aggiuntive del servizio di linguaggio

Altre interfacce possono essere forniti del servizio di linguaggio. Visual Studio richiede un'istanza separata di queste interfacce per ogni istanza del buffer di testo. Pertanto, è necessario implementare ciascuna di queste interfacce nel relativo oggetto. Nella tabella seguente sono elencate le interfacce che richiedono un'istanza per istanza del buffer di testo.

Interfaccia

Descrizione

IVsCodeWindowManager

Gestisce le aree di controllo della finestra del codice, come la barra a discesa. È possibile ottenere questa interfaccia tramite il metodo di GetCodeWindowManager . Esiste un IVsCodeWindowManager per finestra del codice.

IVsColorizer

Colore delle parole chiave e i delimitatori del linguaggio. È possibile ottenere questa interfaccia tramite il metodo di GetColorizer . IVsColorizer viene chiamato in fase di disegno. Evitare lavoro calcolo-intensivo in IVsColorizer o le prestazioni potrebbero che.

IVsMethodData

Fornisce le descrizioni comandi di parametro di IntelliSense. Quando il servizio di linguaggio riconosce un carattere che indica che i dati del metodo deve essere visualizzato, ad esempio una parentesi di apertura, chiama il metodo di SetMethodData per notificare alla visualizzazione di testo che il servizio di linguaggio è pronto per visualizzare una descrizione comando di informazioni sul parametro. Le chiamate della visualizzazione di testo quindi nuovamente al servizio di linguaggio tramite i metodi di IVsMethodData interfaccia per ottenere le informazioni necessarie per visualizzare la descrizione comando.

IVsCompletionSet

Consente il completamento di istruzioni in IntelliSense. Quando il servizio di linguaggio è pronto per visualizzare un elenco di completamento, chiama il metodo di UpdateCompletionStatus nella visualizzazione di testo. Le chiamate della visualizzazione di testo quindi nuovamente al servizio di linguaggio utilizzare i metodi in IVsCompletionSet oggetto.

IVsTextViewFilter

Consente la modifica della visualizzazione di testo utilizzando il gestore comando. La classe in cui si implementa l'interfaccia di IVsTextViewFilter necessario implementare anche l'interfaccia di IOleCommandTarget . La visualizzazione di testo recupera l'oggetto di IVsTextViewFilter eseguire una query l'oggetto di IOleCommandTarget passato al metodo di AddCommandFilter . Deve essere un oggetto di IVsTextViewFilter per ogni visualizzazione.

IOleCommandTarget

Rileva i controlli i tipi di utenti nella finestra del codice. Monitorare l'output dall'implementazione di IOleCommandTarget per fornire informazioni di completamento personalizzate e visualizzare la modifica

Per passare l'oggetto di IOleCommandTarget la visualizzazione di testo, AddCommandFilterdi chiamata.

Vedere anche

Concetti

elenco di controllo: creare un servizio di linguaggio

Altre risorse

Compilare un servizio di linguaggio