Share via


ProvideLanguageServiceAttribute Class

Informs Visual Studio that a VSPackage provides a language service. Used with the managed package framework (MPF).

Inheritance Hierarchy

System.Object
  System.Attribute
    Microsoft.VisualStudio.Shell.RegistrationAttribute
      Microsoft.VisualStudio.Shell.ProvideLanguageServiceAttribute

Namespace:  Microsoft.VisualStudio.Shell
Assembly:  Microsoft.VisualStudio.Shell.11.0 (in Microsoft.VisualStudio.Shell.11.0.dll)

Syntax

'Declaration
<AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple := True, Inherited := True)> _
Public NotInheritable Class ProvideLanguageServiceAttribute _
    Inherits RegistrationAttribute
[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public sealed class ProvideLanguageServiceAttribute : RegistrationAttribute
[AttributeUsageAttribute(AttributeTargets::Class, AllowMultiple = true, Inherited = true)]
public ref class ProvideLanguageServiceAttribute sealed : public RegistrationAttribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = true, Inherited = true)>]
type ProvideLanguageServiceAttribute =  
    class 
        inherit RegistrationAttribute 
    end
public final class ProvideLanguageServiceAttribute extends RegistrationAttribute

The ProvideLanguageServiceAttribute type exposes the following members.

Constructors

  Name Description
Public method ProvideLanguageServiceAttribute Initializes a new instance of the Shell.ProvideLanguageServiceAttribute class.

Top

Properties

  Name Description
Public property AutoOutlining Determines if the language service supports automatic outlining.
Public property CodeSense Determines if the language service supports IntelliSense operations.
Public property CodeSenseDelay Determines the amount of time before a parse operation is started to support an IntelliSense operation.
Public property DebuggerLanguageExpressionEvaluator Determines the expression evaluator that is used for evaluating expressions.
Public property DefaultToInsertSpaces Determines the default setting for the Insert spaces option in the Options dialog box for a language service.
Public property DefaultToNonHotURLs Determines the initial setting of the Enable single-click URL navigation option in the Options dialog box.
Public property EnableAdvancedMembersOption Determines whether the Hide Advanced Members option is enabled in the Options dialog box.
Public property EnableAsyncCompletion Determines whether the language supports background parsing.
Public property EnableCommenting Determines whether the language service can comment and uncomment source code using a single command.
Public property EnableFormatSelection Determines if the language service supports automatic formatting of the source code.
Public property EnableLineNumbers Determines if the Line numbers option can be selected in the Options dialog box.
Public property HideAdvancedMembersByDefault Determines the initial state of the Hide Advanced Members option in the Options dialog box.
Public property LanguageName Infrastructure. Returns the name of the language.
Public property LanguageResourceID Infrastructure. Returns the resource ID used to obtain the localized version of the language name.
Public property LanguageServiceSid Infrastructure. Returns the GUID of the language service.
Public property MatchBraces Determines if the language service supports matching language pairs.
Public property MatchBracesAtCaret Determines if a language service supports matching language pairs while typing.
Public property MaxErrorMessages Determines the maximum number of errors message that a language service can report for a parsing operation.
Public property QuickInfo Determines if the language service supports the IntelliSense Quick Info.
Public property RequestStockColors Determines if the language service is using the built-in colorable items as supplied by Visual Studio.
Public property ShowCompletion Determines if the Statement completion options are enabled in the Options dialog box.
Public property ShowDropDownOptions Determines if the Navigation bar option is enabled in the Options dialog box.
Public property ShowHotURLs Determines if URLs are displayed in such a way as to show they can be clicked. This option is not used.
Public property ShowMatchingBrace Determines if the matching language pair is shown in the status bar.
Public property ShowSmartIndent Determines if the Smart Indenting option is enabled in the Options dialog box.
Public property SingleCodeWindowOnly Determines if the Window -> New Window command is disabled for a language service.
Public property SupportCopyPasteOfHTML Determines if the language service supports the clipboard format HTML for copy and paste operations.
Public property TypeId Gets the current instance of this attribute. (Inherited from RegistrationAttribute.)

Top

Methods

  Name Description
Public method Equals Infrastructure. Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.)
Public method GetHashCode Returns the hash code for this instance. (Inherited from Attribute.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Public method IsDefaultAttribute When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class. (Inherited from Attribute.)
Public method Match When overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.)
Public method Register Infrastructure. Creates all of the registry keys and entries as specified by the class constructor. (Overrides RegistrationAttribute.Register(RegistrationAttribute.RegistrationContext).)
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Public method Unregister Removes all of the registry keys and entries as specified by the class constructor. (Overrides RegistrationAttribute.Unregister(RegistrationAttribute.RegistrationContext).)

Top

Explicit Interface Implementations

  Name Description
Explicit interface implemetationPrivate method _Attribute.GetIDsOfNames Maps a set of names to a corresponding set of dispatch identifiers. (Inherited from Attribute.)
Explicit interface implemetationPrivate method _Attribute.GetTypeInfo Retrieves the type information for an object, which can be used to get the type information for an interface. (Inherited from Attribute.)
Explicit interface implemetationPrivate method _Attribute.GetTypeInfoCount Retrieves the number of type information interfaces that an object provides (either 0 or 1). (Inherited from Attribute.)
Explicit interface implemetationPrivate method _Attribute.Invoke Provides access to properties and methods exposed by an object. (Inherited from Attribute.)

Top

Remarks

This user-defined attribute (which is specific to Visual C#) is used to provide information necessary to register a language service with Visual Studio. The values specified by this attribute are stored as metadata in the assembly. This metadata is later used by a program such as regpkg.exe (part of the VSIP SDK) to create the corresponding registry keys and entries that tell Visual Studio about the language service.

The registry entries affected by the ProvideLanguageServiceAttribute are found under the following registry key:

HKEY_LOCAL_MACHINE\
  SOFTWARE\
    Microsoft\
      VisualStudio\
        [X.Y]\
          Languages\
            Language Services\
              [language name]\
                (Default) = reg_sz: [Language Service GUID]
                Package   = reg_sz: [Package GUID]
                LangResID = reg_dword: [language name resource ID]

Where [X.Y] is the version of Visual Studio, for example, 8.0Exp, and [language name] is the name of the language (as specified in the second parameter to the ProvideLanguageServiceAttribute class constructor).

Note

Each property specifies the exact registry entry it affects so those entries are not shown in the above example. Those additional entries appear at the same level as the three entries shown.

The class constructor specifies the minimum required parameters. A user-defined attribute class also supports optional named parameters. These named parameters are specified in the constructor's parameter list after the required parameters. All of the properties on this class that support both get and set operators can be specified as a named parameter. The Example shows how named parameters are used.

Note

Some of the named parameters are specific to the managed package framework (MPF) and these are noted in each property description.

The following user-defined attributes are used for language services:

Attribute

Description

ProvideLanguageServiceAttribute

Registers the language service with Visual Studio and specifies what features are supported.

ProvideLanguageExtensionAttribute

Associates a file extension with the language service.

ProvideLanguageEditorOptionPageAttribute

Specifies a property node or page for the Options dialog box specific to the language service.

ProvideLanguageCodeExpansionAttribute

Specifies location information to support code snippets in the language service.

ProvideServiceAttribute

Registers a language service as a Visual Studio service. All services supplied in managed code use this attribute.

Notes to Implementers

This attribute class cannot be inherited from so there is nothing to implement.

Notes to Callers

This attribute class is typically applied to your primary VSPackage class, although it can appear on any class. This class should appear only once for each language service your VSPackage supports.

Examples

This example shows how this user-defined attribute is used to register a language service that supports IntelliSense operations, brace matching, asynchronous (background) parsing, and custom colorable items.

Note

Visual C# allows for a shorthand form of a user-defined attribute by dropping the "Attribute" part of the name. This shorthand form is used in this and all other examples throughout this class.

using Microsoft.VisualStudio.Shell;

namespace MyLanguagePackage
{
    internal class MyConstants
    {
        public const string languageName           = "MyLanguage";
        public const int    languageNameResourceID = 106;
    }

    [ProvideLanguageService(typeof(MyLanguageService),
                            MyConstants.languageName,
                            MyConstants.languageNameResourceID,
        // Optional language service properties
        CodeSense             = true,  // General IntelliSense support
        RequestStockColors    = false, // Custom colorable items
        EnableASyncCompletion = true,  // supports background parsing
        MatchBraces           = true,  // Match braces on command
        MatchBracesAtCaret    = true   // Match braces while typing
                           )]

    class MyLanguagePackage
    {
    }
}

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Reference

Microsoft.VisualStudio.Shell Namespace