Registering a Language Service

The following sections provide lists of registry entries for the various language service options available in Visual Studio.

Registry Entries for Language Service Options

The following list of registry entries provides default paths and data where applicable. <VS Reg Root> is equal to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\<X.Y>, where <X.Y> is the Visual Studio version number.

 <VS Reg Root>\Languages\Language Services\<Language Name>\
   (Default)                    = reg_sz:<Language GUID>
   LangResID                    = reg_dword:0x00000000
   Package                      = reg_sz:<Package GUID>
   ShowCompletion               = reg_dword:0x00000000
   ShowSmartIndent              = reg_dword:0x00000000
   RequestStockColors           = reg_dword:0x00000000
   ShowHotURLs                  = reg_dword:0x00000000
   Default to Non Hot URLs      = reg_dword:0x00000000
   DefaultToInsertSpaces        = reg_dword:0x00000000
   ShowDropdownBarOption        = reg_dword:0x00000000
   Single Code Window Only      = reg_dword:0x00000000
   EnableAdvancedMembersOption  = reg_dword:0x00000000
   Support CF_HTML              = reg_dword:0x00000000
   EnableLineNumbersOption      = reg_dword:0x00000000
   HideAdvancedMembersByDefault = reg_dword:0x00000000

The following table contains registry script and additional information for each entry.

Name

Type

Range

Description

(Default)

REG_SZ

<GUID>

GUID of the language service.

LangResID

REG_DWORD

0x0-0xffff

String resource identifier (ResID) for the localized text name of the language.

Package

REG_SZ

<GUID>

GUID of the VSPackage.

ShowCompletion

REG_DWORD

0-1

Specifies whether the Statement completion options in the Options dialog box are enabled.

ShowSmartIndent

REG_DWORD

0-1

Specifies whether the option to select Smart indenting in the Options dialog box is enabled.

RequestStockColors

REG_DWORD

0-1

Specifies whether custom or default colors are used to color keywords.

ShowHotURLs

REG_DWORD

0-1

Specifies whether the user can click URLs.

Default to Non Hot URLs

REG_DWORD

0-1

Specifies the initial setting for the Enable single-click URL navigation option in the Options dialog box.

DefaultToInsertSpaces

REG_DWORD

0-1

Specifies whether the language service has "insert spaces" as its default tab option.

ShowDropdownBarOption

REG_DWORD

0-1

Enables or disables the Navigation bar option in the Options dialog box that shows or hides the Navigation bar.

Single Code Window Only

REG_DWORD

0-1

Enables or disables the New Window choice in the Window menu for a language service.

EnableAdvancedMembersOption

REG_DWORD

0-1

Enables or disables an Options dialog box setting for Hide Advanced Members.

Support CF_HTML

REG_DWORD

0-1

Specifies whether the editor enables copying and pasting of HTML data.

EnableLineNumbersOption

REG_DWORD

0-1

Specifies whether the Line numbers options in the Options dialog box is enabled for a language service.

HideAdvancedMembersByDefault

REG_DWORD

0-1

Specifies whether advanced members such as private fields are hidden in completion lists.

Example

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\
  Languages\
    Language Services\
      C/C++\
        (Default)             = reg_sz:{B2F072B0-ABC1-11D0-9D62-00C04FD9DFD9}
        LangResID             = reg_dword:0x00000000
        Package               = reg_sz:{8C2EA640-ABC1-11D0-9D62-00C04FD9DFD9}
        ShowCompletion        = reg_dword:0x00000001
        ShowSmartIndent       = reg_dword:0x00000001
        ShowDropdownBarOption = reg_dword:0x00000001

Registry Entries for Debugger Languages Options

 <VS Reg Root>\Languages\Language Services\<Language Name>\Debugger Languages\<GUID>\
   (Default) = reg_sz:<Language Name>

Name

Type

Range

Description

(Default)

REG_SZ

text

The default value can be used to document the name of the language. The name of this key is a GUID of an expression evaluator that has a corresponding entry in <VS Reg Root>\AD7Metrics\Expression Evaluator.

Example

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\
  Languages\
    Language Services\
      C/C++\
        Debugger Languages\
          {3A12D0B7-C26C-11D0-B442-00A0244A1DD2}\
            (Default) = reg_sz:C++

Registry Entries for Editor Tools Options

You can add registry keys of the form \EditorToolsOptions\<Page or Node Name> that each share the same format. These keys and their entries identify property pages in the Options dialog box that are used to configure the language service. The property pages are available from Options in the Tools menu. A <Page Name> is the name of a property page, whereas a <Node Name> is a name of a node in the tree on the Options dialog box. A node does not specify the Page registry entry.

 <VS Reg Root>\Languages\Language Services\<Language Name>\EditorToolsOptions\
   <Page Name>\
     (Default) = <localized name to display>
     Package   = <PackageGuid>
     Page      = <PropertyPageGuid>
   <Node Name>\
     (Default) = <localized name to display>
     Package   = <PackageGuid>
     <Page Name>\
       (Default) = <localized name to display>
       Package   = <PackageGuid>
       Page      = <PropertyPageGuid>
     <Node Name>\
       (Default) = <localized name to display>
       Package   = <PackageGuid>
       <Page Name>\
         (Default) = <localized name to display>
         Package   = <PackageGuid>
         Page      = <PropertyPageGuid>

Name

Type

Range

Description

(Default)

REG_SZ

ResID

The localized display name of this option page. The name can be literal text, or #nnn, where nnn is a string resource ID in the satellite DLL of the specified VSPackage.

Package

REG_SZ

<GUID>

VSPackage GUID of the VSPackage that implements this options page.

Page

REG_SZ

<GUID>

Page GUID of the property page to request from the VSPackage by calling the GetPropertyPage method. If this registry entry is not present, the registry key describes a node, not a page.

Example

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\
  Languages\
    Language Services\
      CSharp\
        EditorToolsOptions\
          Formatting\
            (Default) = reg_sz:#242
            Package   = reg_sz:{A066E284-DCAB-11D2-B551-00C04F68D4DB}
            General\
              (Default) = reg_sz:#255
              Package   = reg_sz:{A066E284-DCAB-11D2-B551-00C04F68D4DB}
              Page      = reg_sz:{3EB2CC0B-033E-4D75-B26A-B2362C25227E}
            Indentation\
              (Default) = reg_sz:#250
              Package   = reg_sz:{A066E284-DCAB-11D2-B551-00C04F68D4DB}
              Page      = reg_sz:{5E21D017-6D2A-4114-A1F1-C923F001CBBB}
            Newlines\
              (Default) = reg_sz:#253
              Package   = reg_sz:{A066E284-DCAB-11D2-B551-00C04F68D4DB}
              Page      = reg_sz:{607D8062-68D1-41E4-9A35-B5E7F14D0481}

Registry Entries for File Name Extension Options

The <File Extension> always contains the leading period, such as ".myext".

 <VS Reg Root>\Languages\File Extensions\
   <File Extension>\
     (Default) = <Language service Guid>

Name

Type

Range

Description

(Default)

REG_SZ

<GUID>

Service GUID for the default language service for this file name extension type.

Example

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\
  Languages\
    File Extensions\
      .cpp\
        (Default) = {B2F072B0-ABC1-11D0-9D62-00C04FD9DFD9}

Registry Entries for Editor Options

 <VS Reg Root>\Editors\
   <Editor GUID>\
     (Default)            = reg_sz:<Editor Name>
     DefaultToolboxTab    = reg_sz:<Name of Toolbox Tab>
     DisplayName          = reg_sz:<Editor Display Name>
     ExcludeDefTextEditor = reg_dword:0x00000000
     LinkedEditorGUID     = reg_sz:<Editor Factory GUID>
     Package              = reg_sz:<Package GUID>

Name

Type

Range

Description

(Default)

REG_SZ

""

Unused; you can put your name here for documentation.

DefaultToolboxTab

REG_SZ

""

Name of the toolbox tab to make default when the editor is active.

DisplayName

REG_SZ

ResID

Name to display in the Open With dialog box. The name is the string resource ID or a name in standard format.

ExcludeDefTextEditor

REG_DWORD

0-1

Used for the Open With menu command. If you do not want to list the default text editor in the list of available editors for a specific file type, set this value to 1.

LinkedEditorGUID

REG_SZ

<GUID>

Used for any language service that can open a file with codepage support. For example, when you open a .txt file by using the Open With command, options are provided for using the source code editor with and without encoding.

The GUID specified in the name of the subkey is for the codepage editor factory; the linked GUID specified in this specific registry entry is for the regular editor factory. The purpose of this entry is that if the IDE does not open a file by using the default editor, the IDE will try to use the next editor in the list. This next editor should not be the codepage editor factory because this editor factory is basically the same as the editor factory that failed.

Package

REG_SZ

<GUID>

VSPackage GUID for the display name's ResID.

Example

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\
  \Editors\
    {8281C572-2171-45AA-A642-7D8BC1662F1C}\
      (Default)            = reg_sz:Html Editor with Encoding
      DefaultToolboxTab    = reg_sz:HTML
      DisplayName          = reg_sz:#20101
      LinkedEditorGUID     = reg_sz:{C76D83F8-A489-11D0-8195-00A0C91BBEE3}
      Package              = reg_sz:{1B437D20-F8FE-11D2-A6AE-00104BCC7269}

Registry Entries for Logical View Options

 <VS Reg Root>\Editors\<Editor GUID>\LogicalViews\
   (Default) = reg_sz:
   <Logical View GUID> = reg_sz:""

Name

Type

Range

Description

(Default)

REG_SZ

 

Unused.

<GUID>

REG_SZ

""

Key to the logical views supported. You can have as many of these as you need. The name of the registry entry is what is important, not the value, which is always an empty string.

Example

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\
  \Editors\
    {8281C572-2171-45AA-A642-7D8BC1662F1C}\
      LogicalViews\
       (Default) = reg_sz:
       {7651a700-06e5-11d1-8ebd-00a0c90f26ea} = reg_sz:
       {7651a701-06e5-11d1-8ebd-00a0c90f26ea} = reg_sz:
       {7651a702-06e5-11d1-8ebd-00a0c90f26ea} = reg_sz:
       {7651a703-06e5-11d1-8ebd-00a0c90f26ea} = reg_sz:

Registry Entries for Editor Extension Options

The file name extension used here as a registry entry name does not include the leading period.

 <VS Reg Root>\Editors\<Editor GUID>\Extensions\
   (Default) = reg_sz:
   <ext>    = reg_reg_dword:0x00000000

Name

Type

Range

Description

(Default)

REG_SZ

 

Unused.

<ext>

REG_DWORD

0-0xffffffff

Relative priority. This determines what preference is given to two or more languages that claim the same file name extension.

For example, the HTML editor registers the "*" file name extension with a priority of 0x18 and the "xslt" file name extension with a priority of 0x27. Your language must claim a higher priority (larger number) for the "xslt" file name extension to claim that file type. You can have as many <ext> entries as you need.

Additionally, the current user's default selection for an editor is stored in HKEY_Current_User\Software\Microsoft\VisualStudio\<X.Y>\Default Editors\<ext>. The GUID of the selected language service is stored under a REG_SZ registry entry that is named Custom. This takes precedence for the current user.

Example

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\
  \Editors\
    {8281C572-2171-45AA-A642-7D8BC1662F1C}\
      Extensions\
       (Default) = reg_sz:
       *         = reg_dword:0x00000018
       html      = reg_dword:0x00000027
       shtm      = reg_dword:0x00000027
       shtml     = reg_dword:0x00000027

Registry Entries for Managed Package Framework Language Service Options

The following registry entries are specific to the managed package framework (MPF) language service classes. These registry entries indicate support in the language service for various IntelliSense features and for other advanced editing features.

These registry entries are accessed through the LanguagePreferences class.

 <VS Reg Root>\Languages\Language Services\<Language Name>\
   CodeSense             = reg_dword:0x00000000
   MatchBraces           = reg_dword:0x00000000
   QuickInfo             = reg_dword:0x00000000
   ShowMatchingBrace     = reg_dword:0x00000000
   MatchBracesAtCaret    = reg_dword:0x00000000
   MaxErrorMessages      = reg_dword:0x00000000
   CodeSenseDelay        = reg_dword:0x00000000
   EnableAsyncCompletion = reg_dword:0x00000000
   EnableCommenting      = reg_dword:0x00000000
   EnableFormatSelection = reg_dword:0x00000000
   AutoOutlining         = reg_dword:0x00000000
   MaxRegions            = reg_dword:0x00000000

Name

Type

Range

Description

CodeSense

REG_DWORD

0-1

Indicates support for IntelliSense operations.

MatchBraces

REG_DWORD

0-1

Indicates support for matching language pairs such as braces, parentheses, and brackets.

QuickInfo

REG_DWORD

0-1

Indicates support for the IntelliSense Quick Info operation.

ShowMatchingBrace

REG_DWORD

0-1

Indicates support for displaying the matching language pair in the status bar.

MatchBracesAtCaret

REG_DWORD

0-1

Indicates support for displaying matching language pairs, typically through highlighting the two elements.

MaxErrorMessages

REG_DWORD

0-n

Specifies how many parser errors can be displayed in the Error List window.

CodeSenseDelay

REG_DWORD

0-n

Specifies the number of milliseconds to delay before initiating any background parsing for an IntelliSense operation.

EnableAsyncCompletion

REG_DWORD

0-1

Indicates support for background parsing.

EnableCommenting

REG_DWORD

0-1

Indicates support for commenting out selected blocks of text, and also implies support for uncommenting selected text.

EnableFormatSelection

REG_DWORD

0-1

Indicates support for formatting text such as auto-indentation or adjusting the position of braces.

AutoOutlining

REG_DWORD

0-1

Indicates support for outlining (regions of code that can optionally be collapsed behind a single line of text).

MaxRegions

REG_DWORD

0-n

Specifies maximum number of error messages that should be sent to the Error List task window from the language service parser.

ExampleHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\
  Languages\
    Language Services\
      XML\
        (Default)             = reg_sz:{f6819a78-a205-47b5-be1c-675b3c7f0b8e}
        MatchBraces           = reg_dword:0x00000001
        QuickInfo             = reg_dword:0x00000001
        ShowMatchingBrace     = reg_dword:0x00000001
        MatchBracesAtCaret    = reg_dword:0x00000000
        MaxErrorMessages      = reg_dword:0x00000064
        CodeSenseDelay        = reg_dword:0x000001f4
        MaxRegions            = reg_dword:0x0000000a

See Also

Concepts

Developing a Language Service