Implémentation d’un Service de langage héritéImplementing a Legacy Language Service

Pour implémenter un service de langage à l’aide de managed package framework (MPF), vous devez dériver une classe à partir de la LanguageService classe et implémenter les méthodes abstraites suivantes et les propriétés :To implement a language service using the managed package framework (MPF), you must derive a class from the LanguageService class and implement the following abstract methods and properties:

  • Méthode GetLanguagePreferencesThe GetLanguagePreferences method

  • Méthode GetScannerThe GetScanner method

  • Méthode ParseSourceThe ParseSource method

  • La propriété NameThe Name property

    Consultez les sections appropriées ci-dessous pour plus d’informations sur l’implémentation de ces méthodes et propriétés.See the appropriate sections below for details on implementing these methods and properties.

    Pour prendre en charge des fonctionnalités supplémentaires, votre service de langage peut avoir à dériver une classe à partir d’une des classes de service de langage MPF ; par exemple, pour prendre en charge les commandes de menu supplémentaires, vous devez dériver une classe à partir de la ViewFilter classe et remplacer plusieurs de la commande de la gestion de méthodes (voir ViewFilter pour plus d’informations).To support additional features, your language service may have to derive a class from one of the MPF language service classes; for example, to support additional menu commands, you must derive a class from the ViewFilter class and override several of the command handling methods (see ViewFilter for details). La LanguageService classe fournit plusieurs méthodes qui sont appelées pour créer des instances de classes différentes et que vous substituez la méthode de création approprié pour fournir une instance de la classe.The LanguageService class provides a number of methods that are called to create new instances of various classes and you override the appropriate creation method to provide an instance of your class. Par exemple, vous devez remplacer le CreateViewFilter méthode dans le LanguageService pour retourner une instance de votre propre classe ViewFilter classe.For example, you need to override the CreateViewFilter method in the LanguageService class to return an instance of your own ViewFilter class. Consultez la section « L’instanciation des Classes personnalisées » pour plus d’informations.See the "Instantiating Custom Classes" section for more details.

    Votre service de langage peut également fournir ses propres icônes, qui sont utilisées dans de nombreux endroits.Your language service can also supply its own icons, which are used in many places. Par exemple, lorsqu’une liste de saisie semi-automatique IntelliSense est affichée, chaque élément dans la liste peut avoir une icône associée, marquer l’élément comme méthode, classe, espace de noms, propriété, ou tout ce qui est nécessaire pour votre langue.For example, when an IntelliSense completion list is shown, each item in the list can have an icon associated with it, marking the item as a method, class, namespace, property, or whatever is necessary for your language. Ces icônes sont utilisées dans les listes IntelliSense, la barre de Navigationet dans le liste d’erreurs fenêtre des tâches.These icons are used in all IntelliSense lists, the Navigation bar, and in the Error List task window. Consultez la section « Images du Service de langage » ci-dessous pour plus d’informations.See the "Language Service Images" section below for details.

GetLanguagePreferences (méthode)GetLanguagePreferences Method

Le GetLanguagePreferences méthode retourne toujours la même instance d’un LanguagePreferences classe.The GetLanguagePreferences method always returns the same instance of a LanguagePreferences class. Vous pouvez utiliser la base LanguagePreferences classe si vous n’avez pas besoin de toutes les préférences supplémentaires pour votre service de langage.You can use the base LanguagePreferences class if you do not need any additional preferences for your language service. Les classes de service de langage MPF supposent la présence d’au moins la base LanguagePreferences classe.The MPF language service classes assume the presence of at least the base LanguagePreferences class.

ExempleExample

Cet exemple illustre une implémentation standard de le GetLanguagePreferences (méthode).This example shows a typical implementation of the GetLanguagePreferences method. Cet exemple utilise la base de LanguagePreferences classe.This example uses the base LanguagePreferences class.

using Microsoft.VisualStudio.Package;  
using Microsoft.VisualStudio.TextManager.Interop;  

namespace TestLanguagePackage  
{  
    public class TestLanguageService : LanguageService  
    {  
        private LanguagePreferences m_preferences;  

        public override LanguagePreferences GetLanguagePreferences()  
        {  
            if (m_preferences == null)  
            {  
                m_preferences = new LanguagePreferences(this.Site,  
                                                        typeof(TestLanguageService).GUID,  
                                                        this.Name );  
                m_preferences.Init();  
            }  
            return m_preferences;  
        }  
    }  
}  

GetScanner (méthode)GetScanner Method

Cette méthode retourne une instance d’un IScanner objet qui implémente un analyseur d’orientée ligne ou l’analyseur utilisé pour obtenir des jetons et leurs types et les déclencheurs.This method returns an instance of an IScanner object that implements a line-oriented parser or scanner used for obtaining tokens and their types and triggers. Cet analyseur est utilisé dans la Colorizer classe pour la colorisation, mais l’analyseur peut aussi être utilisé pour obtenir les types de jetons et de déclencheurs comme une étape préliminaire à une opération d’analyse plus complexe.This scanner is used in the Colorizer class for colorization although the scanner can also be used for getting token types and triggers as a prelude to a more complex parsing operation. Vous devez fournir à la classe qui implémente le IScanner interface et que vous devez implémenter toutes les méthodes sur le IScanner interface.You must supply the class that implements the IScanner interface and you must implement all the methods on the IScanner interface.

ExempleExample

Cet exemple illustre une implémentation standard de le GetScanner (méthode).This example shows a typical implementation of the GetScanner method. Le TestScanner la classe implémente le IScanner interface (non affichée).The TestScanner class implements the IScanner interface (not shown).

using Microsoft.VisualStudio.Package;  
using Microsoft.VisualStudio.TextManager.Interop;  

namespace TestLanguagePackage  
{  
    public class TestLanguageService : LanguageService  
    {  
        private TestScanner m_scanner;  

        public override IScanner GetScanner(IVsTextLines buffer)  
        {  
            if (m_scanner == null)  
            {  
                m_scanner = new TestScanner(buffer);  
            }  
            return m_scanner;  
        }  
    }  
}  
    internal class TestScanner : IScanner  
    {  
        private IVsTextBuffer m_buffer;  
        string m_source;  

        public TestScanner(IVsTextBuffer buffer)  
        {  
            m_buffer = buffer;  
        }  

        bool IScanner.ScanTokenAndProvideInfoAboutIt(TokenInfo tokenInfo, ref int state)  
        {  
            tokenInfo.Type = TokenType.Unknown;  
            tokenInfo.Color = TokenColor.Text;  
            return true;  
        }  

        void IScanner.SetSource(string source, int offset)  
        {  
            m_source = source.Substring(offset);  
        }  
    }  

ParseSource (méthode)ParseSource Method

Analyse le fichier source selon un certain nombre de raisons.Parses the source file based on a number of different reasons. Cette méthode reçoit un ParseRequest objet qui décrit ce qui est attendu à partir d’une opération d’analyse spécifique.This method is given a ParseRequest object that describes what is expected from a particular parsing operation. Le ParseSource méthode appelle un analyseur plus complexe qui détermine la fonctionnalité du jeton et l’étendue.The ParseSource method invokes a more complex parser that determines token functionality and scope. Le ParseSource méthode est utilisée dans la prise en charge pour les opérations d’IntelliSense, ainsi que la correspondance des accolades.The ParseSource method is used in support for IntelliSense operations as well as brace matching. Même si vous ne prennent pas en charge les ces opérations avancées, vous devez retourner encore valide AuthoringScope objet et qui vous oblige à créer une classe qui implémente le AuthoringScope de l’interface et l’implémenter toutes les méthodes de cette interface.Even if you do not support such advanced operations, you still must return a valid AuthoringScope object and that requires you to create a class that implements the AuthoringScope interface and implement all methods on that interface. Vous pouvez retourner des valeurs null à partir de toutes les méthodes, mais le AuthoringScope objet lui-même ne doit pas être une valeur null.You can return null values from all methods but the AuthoringScope object itself must not be a null value.

ExempleExample

Cet exemple montre une implémentation minimale de la ParseSource (méthode) et le AuthoringScope (classe), suffisante pour permettre au service de langage compiler et fonctionner sans réellement prenant en charge les fonctionnalités plus avancées.This example shows a minimal implementation of the ParseSource method and the AuthoringScope class, sufficient to allow the language service to compile and function without actually supporting any of the more advanced features.

using Microsoft.VisualStudio.Package;  
using Microsoft.VisualStudio.TextManager.Interop;  

namespace TestLanguagePackage  
{  
    public class TestLanguageService : LanguageService  
    {  
        public override AuthoringScope ParseSource(ParseRequest req)  
        {  
            return new TestAuthoringScope();  
        }  
    }  

    internal class TestAuthoringScope : AuthoringScope  
    {  
        public override string GetDataTipText(int line, int col, out TextSpan span)  
        {  
            span = new TextSpan();  
            return null;  
        }  

        public override Declarations GetDeclarations(IVsTextView view,  
                                                     int line,  
                                                     int col,  
                                                     TokenInfo info,  
                                                     ParseReason reason)  
        {  
            return null;  
        }  

        public override string Goto(VSConstants.VSStd97CmdID cmd, IVsTextView textView, int line, int col, out TextSpan span)  
        {  
            span = new TextSpan();  
            return null;  
        }  

        public override Methods GetMethods(int line, int col, string name)  
        {  
            return null;  
        }  
}  

Propriété NameName Property

Cette propriété retourne le nom du service de langage.This property returns the name of the language service. Cela doit être le même nom que celui fourni lorsque le service de langage a été inscrit.This must be the same name given when the language service was registered. Ce nom est utilisé dans plusieurs emplacements, est le plus important dont la LanguagePreferences classe où le nom est utilisé pour accéder au Registre.This name is used in a number of places, the most prominent of which is the LanguagePreferences class where the name is used to access the registry. Le nom retourné par cette propriété ne doit pas être localisé qu’il est utilisé dans le Registre pour l’entrée de Registre et les noms de clés.The name returned by this property must not be localized as it is used in the registry for registry entry and key names.

ExempleExample

Cet exemple montre une implémentation possible du Name propriété.This example shows one possible implementation of the Name property. Notez que le nom est codé en dur : le nom réel doit être obtenu à partir d’un fichier de ressources afin qu’il peut être utilisé lors de l’inscription d’un service de langage (consultez l’inscription d’un Service de langage hérité).Note that the name here is hard-coded: the actual name should be obtained from a resource file so it can be used in registering a language service (see Registering a Legacy Language Service).

using Microsoft.VisualStudio.Package;  
using Microsoft.VisualStudio.TextManager.Interop;  

namespace TestLanguagePackage  
{  
    public class TestLanguageService : LanguageService  
    {  
        public override string Name  
        {  
            get { return "Test Language"; }  
        }  
    }  
}  

L’instanciation des Classes personnaliséesInstantiating Custom Classes

Les méthodes suivantes dans les classes spécifiées peuvent être substituées pour fournir des instances de vos propres versions de chaque classe.The following methods in the specified classes can be overridden to provide instances of your own versions of each class.

Dans la classe LanguageServiceIn the LanguageService Class

MéthodeMethod Classe retournéeClass Returned DescriptionDescription
CreateCodeWindowManager CodeWindowManager Pour prendre en charge les ajouts personnalisés à la vue de texte.To support custom additions to the text view.
CreateDocumentProperties DocumentProperties Pour prendre en charge les propriétés de document personnalisées.To support custom document properties.
CreateDropDownHelper TypeAndMemberDropdownBars Pour prendre en charge la barre de Navigation.To support the Navigation bar.
CreateExpansionFunction ExpansionFunction Pour prendre en charge les fonctions dans les modèles d’extrait de code.To support functions in code snippet templates.
CreateExpansionProvider ExpansionProvider Pour prendre en charge des extraits de code (cette méthode n’est généralement pas substituée).To support code snippets (this method is typically not overridden).
CreateParseRequest ParseRequest Pour prendre en charge la personnalisation de la ParseRequest structure (cette méthode n’est généralement pas substituée).To support customization of the ParseRequest structure (this method is typically not overridden).
CreateSource Source Pour prendre en charge la mise en forme code source, en spécifiant les caractères de commentaire et la personnalisation des signatures de méthode.To support formatting source code, specifying comment characters, and customizing method signatures.
CreateViewFilter ViewFilter Pour prendre en charge les commandes de menu supplémentaires.To support additional menu commands.
GetColorizer Colorizer Pour prendre en charge la mise en surbrillance de syntaxe (cette méthode n’est généralement pas substituée).To support syntax highlighting (this method is typically not overridden).
GetLanguagePreferences LanguagePreferences Pour prendre en charge l’accès aux préférences de langue.To support access to language preferences. Cette méthode doit être implémentée, mais peut retourner une instance de la classe de base.This method must be implemented but can return an instance of the base class.
GetScanner IScanner Pour fournir un analyseur utilisé pour identifier les types de jetons sur une ligne.To provide a parser used for identifying types of tokens on a line. Cette méthode doit être implémentée et IScanner doit être dérivé.This method must be implemented and IScanner must be derived from.
ParseSource AuthoringScope Pour fournir un analyseur utilisé pour identifier les fonctionnalités et l’étendue dans un fichier source entier.To provide a parser used for identifying functionality and scope throughout an entire source file. Cette méthode doit être implémentée et doit retourner une instance de votre version de la AuthoringScope classe.This method must be implemented and must return an instance of your version of the AuthoringScope class. Si vous souhaitez prendre en charge est mise en évidence (ce qui nécessite le IScanner analyseur a retourné à partir de la GetScanner (méthode)), vous ne pouvez rien faire dans cette méthode que le retour d’une version de la AuthoringScope classe dont toutes les méthodes retournent des valeurs null.If all you want to support is syntax highlighting (which requires the IScanner parser returned from the GetScanner method), you can do nothing in this method other than return a version of the AuthoringScope class whose methods all return null values.

Dans la classe SourceIn the Source Class

MéthodeMethod Classe retournéeClass Returned DescriptionDescription
CreateCompletionSet CompletionSet Pour personnaliser l’affichage des listes de saisie semi-automatique IntelliSense (cette méthode n’est généralement pas substituée).For customizing the display of IntelliSense completion lists (this method is typically not overridden).
CreateErrorTaskItem DocumentTask Pour prendre en charge des marqueurs dans la liste des tâches liste d’erreurs ; plus précisément, prise en charge des fonctionnalités au-delà de l’ouverture du fichier et le moment du saut à la ligne qui a provoqué l’erreur.For supporting markers in the Error List task list; specifically, support for features beyond opening the file and jumping to the line that caused the error.
CreateMethodData MethodData Pour personnaliser l’affichage des info-bulles des informations de paramètre IntelliSense.For customizing the display of IntelliSense Parameter Info ToolTips.
GetCommentFormat CommentInfo Pour prendre en charge les commentaires de code.For supporting commenting code.
CreateAuthoringSink AuthoringSink Pour recueillir des informations pendant l’opération d’analyse.For gathering information during the parse operation.

Dans la classe AuthoringScopeIn the AuthoringScope Class

MéthodeMethod Classe retournéeClass Returned DescriptionDescription
GetDeclarations Declarations Fournit une liste des déclarations telles que les membres ou types.Provides a list of declarations such as members or types. Cette méthode doit être implémentée, mais peut retourner une valeur null.This method must be implemented but can return a null value. Si cette méthode retourne un objet valide, l’objet doit être une instance de votre version de la Declarations classe.If this method returns a valid object, the object must be an instance of your version of the Declarations class.
GetMethods Methods Fournit une liste des signatures de méthode pour un contexte donné.Provides a list of method signatures for a given context. Cette méthode doit être implémentée, mais peut retourner une valeur null.This method must be implemented but can return a null value. Si cette méthode retourne un objet valide, l’objet doit être une instance de votre version de la Methods classe.If this method returns a valid object, the object must be an instance of your version of the Methods class.

Images de Service de langageLanguage Service Images

Pour fournir une liste d’icônes à utiliser dans le service de langage, substituer la GetImageList méthode dans le LanguageService de classe et de retourner un ImageList contenant les icônes.To provide a list of icons to be used throughout the language service, override the GetImageList method in the LanguageService class and return an ImageList containing the icons. La base de LanguageService classe charge un ensemble par défaut des icônes.The base LanguageService class loads a default set of icons. Étant donné que vous spécifiez l’index d’image exacte dans les emplacements qui doivent les icônes, comment vous organiser votre propre liste d’images dépend entièrement de vous.Since you specify the exact image index in those places that need icons, how you arrange your own image list is entirely up to you.

Images utilisées dans les listes de saisie semi-automatique IntelliSenseImages Used In IntelliSense Completion Lists

Pour les listes de saisie semi-automatique IntelliSense, l’index de l’image est spécifié pour chaque élément de la GetGlyph méthode de la Declarations (classe), que vous devez remplacer si vous souhaitez fournir un index d’image.For IntelliSense completion lists, the image index is specified for each item in the GetGlyph method of the Declarations class, which you must override if you want to supply an image index. La valeur retournée par la GetGlyph méthode est un index dans la liste des images fournie à la CompletionSet constructeur de classe et de la même liste d’images qui est retourné à partir de la GetImageList méthode dans la LanguageService classe (vous pouvez modifier le liste d’images pour utiliser pour le CompletionSet si vous remplacez le CreateCompletionSet méthode dans la Source classe pour fournir une liste d’images différents).The value returned from the GetGlyph method is an index into the image list supplied to the CompletionSet class constructor and that is the same image list returned from the GetImageList method in the LanguageService class (you can change which image list to use for the CompletionSet if you override the CreateCompletionSet method in the Source class to supply a different image list).

Images utilisées dans la barre de NavigationImages Used in the Navigation Bar

Le barre de Navigation affiche les listes de types et membres et est utilisée pour la navigation rapide peut afficher des icônes.The Navigation bar displays lists of types and members and is used for quick navigation can show icons. Ces icônes sont obtenues à partir de la GetImageList méthode dans le LanguageService de classe et ne peut pas être substituée spécifiquement pour le barre de Navigation.These icons are obtained from the GetImageList method in the LanguageService class and cannot be overridden specifically for the Navigation bar. Les index utilisés pour chaque élément dans les zones de liste déroulante sont spécifiées lorsque les listes de zones de liste déroulante sont remplis le OnSynchronizeDropdowns méthode dans le TypeAndMemberDropdownBars classe (voir prise en charge de la barre de Navigation dans un Service de langagehérité).The indices used for each item in the combo-boxes are specified when the lists representing the combo-boxes are filled in the OnSynchronizeDropdowns method in the TypeAndMemberDropdownBars class (see Support for the Navigation Bar in a Legacy Language Service). Ces index image proviennent d’une certaine manière à partir de l’analyseur, généralement par le biais de votre version de la Declarations classe.These image indices are obtained somehow from the parser, typically through your version of the Declarations class. Comment les indices sont obtenus dépend entièrement de vous.How the indices are obtained is entirely up to you.

Images utilisées dans la fenêtre tâches liste d’erreursImages Used in the Error List Task Window

Chaque fois que le ParseSource Analyseur de la méthode (consultez Analyseur de Service de langage hérité et l’analyseur) rencontre une erreur et passe cette erreur pour le AddError méthode dans le AuthoringSink (classe), l’erreur est signalée dans le Liste d’erreurs fenêtre des tâches.Whenever the ParseSource method parser (see Legacy Language Service Parser and Scanner) encounters an error and passes that error to the AddError method in the AuthoringSink class, the error is reported in the Error List task window. Une icône peut être associée à chaque élément qui apparaît dans la fenêtre de la tâche et que cette icône proviennent de la même liste d’images retournée à partir de la GetImageList méthode dans la LanguageService classe.An icon can be associated with each item that appears in the task window and that icon comes from the same image list returned from the GetImageList method in the LanguageService class. Le comportement par défaut des classes MPF est de ne pas afficher une image avec le message d’erreur.The default behavior of the MPF classes is to not show an image with the error message. Toutefois, vous pouvez substituer ce comportement en dérivant une classe à partir de la Source classe et en remplaçant le CreateErrorTaskItem (méthode).However, you can override this behavior by deriving a class from the Source class and overriding the CreateErrorTaskItem method. Dans cette méthode, vous créez un DocumentTask objet.In that method, you create a new DocumentTask object. Avant de retourner un objet, vous pouvez utiliser la ImageIndex propriété sur le DocumentTask objet pour définir l’index d’image.Before returning that object, you can use the ImageIndex property on the DocumentTask object to set the image index. Cela ressemblerait à l’exemple suivant.This would look something like the following example. Notez que TestIconImageIndex est une énumération qui répertorie toutes les icônes et est spécifique à cet exemple.Note that TestIconImageIndex is an enumeration that lists all icons and is specific to this example. Vous avez peut-être une autre façon d’identifier les icônes dans votre service de langage.You may have a different way of identifying icons in your language service.

using Microsoft.VisualStudio.Package;  
using Microsoft.VisualStudio.Shell;  
using Microsoft.VisualStudio.TextManager.Interop;  

namespace TestLanguagePackage  
{  
    class TestSource : Source  
    {  
        public override DocumentTask CreateErrorTaskItem(  
            TextSpan          span,  
            string            filename,  
            string            message,  
            TastPriority      priority,  
            TaskCategory      category,  
            MARKERTYPE        markerType,  
            TaskErrorCategory errorCategory)  
        {  
            DocumentTask taskItem = base.CreateErrorTaskItem(  
                                           span,  
                                           filename,  
                                           message,  
                                           priority,  
                                           category,  
                                           markerType,  
                                           errorCategory);  
            if (errorCategory == TaskErrorCategory.Error)  
            {  
                taskItem.ImageIndex = TestIconImageIndex.Error;  
            }  
            return taskItem;  
        }  
    }  
}  

La liste d’images par défaut pour un Service de langageThe Default Image List for a Language Service

La liste d’images par défaut fournie avec les classes de service de langage MPF base contient un nombre d’icônes associées avec les éléments de langage plus courants.The default image list supplied with the base MPF language service classes contains a number of icons associated with the more common language elements. La majeure partie de ces icônes sont organisées en ensembles de six variations, correspondant aux concepts de l’accès d’accès public, interne, friend, protected, privé et contextuel.The bulk of these icons are arranged in sets of six variations, corresponding to the access concepts of public, internal, friend, protected, private, and shortcut. Par exemple, vous pouvez avoir des icônes différentes pour une méthode selon qu’il est public, protégé ou privé.For example, you can have different icons for a method depending on whether it is public, protected or private.

L’énumération suivante spécifie les noms par défaut pour chaque jeu d’icônes et spécifie l’index associé.The following enumeration specifies typical names for each icon set and specifies the associated index. Par exemple, en fonction de l’énumération, vous pouvez spécifier l’index d’image pour une méthode protégée en tant que (int)IconImageIndex.Method + (int)IconImageIndex.AccessProtected.For example, based on the enumeration, you can specify the image index for a protected method as (int)IconImageIndex.Method + (int)IconImageIndex.AccessProtected. Vous pouvez modifier les noms de cette énumération comme vous le souhaitez.You can change the names in this enumeration as desired.

public enum IconImageIndex  
        {  
            // access types  
            AccessPublic = 0,  
            AccessInternal = 1,  
            AccessFriend = 2,  
            AccessProtected = 3,  
            AccessPrivate = 4,  
            AccessShortcut = 5,  

            Base = 6,  
            // Each of the following icon type has 6 versions,  
            //corresponding to the access types  
            Class = Base + 0,  
            Constant = Base + 1,  
            Delegate = Base + 2,  
            Enumeration = Base + 3,  
            EnumMember = Base + 4,  
            Event = Base + 5,  
            Exception = Base + 6,  
            Field = Base + 7,  
            Interface = Base + 8,  
            Macro = Base + 9,  
            Map = Base + 10,  
            MapItem = Base + 11,  
            Method = Base + 12,  
            OverloadedMethod = Base + 13,  
            Module = Base + 14,  
            Namespace = Base + 15,  
            Operator = Base + 16,  
            Property = Base + 17,  
            Struct = Base + 18,  
            Template = Base + 19,  
            Typedef = Base + 20,  
            Type = Base + 21,  
            Union = Base + 22,  
            Variable = Base + 23,  
            ValueType = Base + 24,  
            Intrinsic = Base + 25,  
            JavaMethod = Base + 26,  
            JavaField = Base + 27,  
            JavaClass = Base + 28,  
            JavaNamespace = Base + 29,  
            JavaInterface = Base + 30,  
            // Miscellaneous icons with one icon for each type.  
            Error = 187,  
            GreyedClass = 188,  
            GreyedPrivateMethod = 189,  
            GreyedProtectedMethod = 190,  
            GreyedPublicMethod = 191,  
            BrowseResourceFile = 192,  
            Reference = 193,  
            Library = 194,  
            VBProject = 195,  
            VBWebProject = 196,  
            CSProject = 197,  
            CSWebProject = 198,  
            VB6Project = 199,  
            CPlusProject = 200,  
            Form = 201,  
            OpenFolder = 202,  
            ClosedFolder = 203,  
            Arrow = 204,  
            CSClass = 205,  
            Snippet = 206,  
            Keyword = 207,  
            Info = 208,  
            CallBrowserCall = 209,  
            CallBrowserCallRecursive = 210,  
            XMLEditor = 211,  
            VJProject = 212,  
            VJClass = 213,  
            ForwardedType = 214,  
            CallsTo = 215,  
            CallsFrom = 216,  
            Warning = 217,  
        }  

Voir aussiSee Also

Implémentation d’un Service de langage hérité Implementing a Legacy Language Service
Vue d’ensemble du Service de langage hérité Legacy Language Service Overview
L’inscription d’un Service de langage hérité Registering a Legacy Language Service
Scanneur et analyseur du service de langage héritéLegacy Language Service Parser and Scanner