Condividi tramite


Implementare colorazione della sintassi

Quando il servizio di linguaggio fornisce la colorazione della sintassi, il parser converte una riga di testo in una matrice di elementi colorabili e restituisce i tipi di token che corrispondono a questi elementi colorabili. Il parser deve restituire i tipi di token che appartengono a un elenco di elementi colorabili. Visual Studio visualizzare ogni elemento il colore nella finestra del codice in base agli attributi assegnati dall'oggetto del colorizer al tipo di token appropriato.

Visual Studio non specifica un'interfaccia del parser e l'implementazione del parser dipendono completamente il programmatore. However, a default parser implementation is provided in the Visual Studio Language Package project. Per il codice gestito, il framework gestito del pacchetto (MPF) fornisce il supporto completo a al testo.

Passaggi seguiti da un editor di colori testo

  1. L'editor ottiene il colorizer chiamando il metodo di GetColorizer l'oggetto di IVsLanguageInfo .

  2. L'editor chiama il metodo di GetStateMaintenanceFlag per determinare se il colorizer necessario lo stato di ogni riga essere gestito all'esterno del colorizer.

  3. Se il colorizer richiede allo stato di essere gestito all'esterno del colorizer, l'editor chiama il metodo di GetStartState per ottenere lo stato della prima riga.

  4. Per ogni riga nel buffer, l'editor chiama il metodo di ColorizeLine , che esegue le operazioni seguenti:

    1. La riga di testo viene passata allo scanner per convertire il testo in token. Ogni token specifica il testo di token e il tipo di token.

    2. Il tipo di token viene convertito in un indice in un elenco il colore degli elementi.

    3. Le informazioni sui simboli vengono utilizzate compilati una matrice in modo che ogni elemento della matrice corrisponde a un carattere della riga. I valori memorizzati nella matrice sono gli indici nell'elenco il colore degli elementi.

    4. Lo stato alla fine della riga viene restituito per ogni riga.

  5. Se il colorizer richiede allo stato di essere gestito, l'editor della memorizzazione dello stato per quella riga.

  6. L'editor esegue il rendering della riga di testo utilizzando le informazioni restituite dal metodo di ColorizeLine . La procedura da adottare è la seguente:

    1. Per ogni carattere della riga, ottenere l'indice il colore dell'elemento.

    2. Se l'utilizzo degli elementi colorabili predefiniti, accedere all'elenco il colore degli elementi dell'editor.

    3. Otherwise, call the language service's GetColorableItem method to obtain a colorable item.

    4. Utilizzare le informazioni nel colore per eseguire il rendering del testo nella visualizzazione.

Managed package Framework Colorizer

Il framework gestito del pacchetto (MPF) fornisce tutte le classi che sono necessarie per implementare un colorizer. La classe di servizio di linguaggio deve ereditare una classe di LanguageService e implementare i metodi richiesti. È necessario fornire uno scanner e un parser implementando l'interfaccia di IScanner e restituire un'istanza dell'interfaccia dal metodo di GetScanner (uno dei metodi che devono essere implementati nella classe di LanguageService ). Per ulteriori informazioni, vedere Colore di sintassi (managed package Framework).

Vedere anche

Attività

Procedura: utilizzare gli elementi colorabili incorporati

Concetti

elementi colorabili personalizzati

Colore di sintassi (managed package Framework)

Altre risorse

Compilare un servizio di linguaggio