Partager via


LanguageService Class

This is the base class for a language service that supplies language features including syntax highlighting, brace matching, auto-completion, IntelliSense support, and code snippet expansion.

This API is not CLS-compliant. 

Inheritance Hierarchy

Object
  Microsoft.VisualStudio.Package.LanguageService

Namespace:  Microsoft.VisualStudio.Package
Assemblies:   Microsoft.VisualStudio.Package.LanguageService.9.0 (in Microsoft.VisualStudio.Package.LanguageService.9.0.dll)
  Microsoft.VisualStudio.Package.LanguageService (in Microsoft.VisualStudio.Package.LanguageService.dll)
  Microsoft.VisualStudio.Package.LanguageService.10.0 (in Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.12.0 (in Microsoft.VisualStudio.Package.LanguageService.12.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.11.0 (in Microsoft.VisualStudio.Package.LanguageService.11.0.dll)

Syntax

'Declaration
<CLSCompliantAttribute(False)> _
<ComVisibleAttribute(True)> _
Public MustInherit Class LanguageService _
    Implements IDisposable, IVsLanguageInfo, IVsLanguageDebugInfo, IVsProvideColorableItems,  _
    IVsLanguageContextProvider, IServiceProvider, IObjectWithSite, ISynchronizeInvoke, IVsDebuggerEvents,  _
    IVsFormatFilterProvider
[CLSCompliantAttribute(false)]
[ComVisibleAttribute(true)]
public abstract class LanguageService : IDisposable, 
    IVsLanguageInfo, IVsLanguageDebugInfo, IVsProvideColorableItems, IVsLanguageContextProvider, IServiceProvider, 
    IObjectWithSite, ISynchronizeInvoke, IVsDebuggerEvents, IVsFormatFilterProvider
[CLSCompliantAttribute(false)]
[ComVisibleAttribute(true)]
public ref class LanguageService abstract : IDisposable, 
    IVsLanguageInfo, IVsLanguageDebugInfo, IVsProvideColorableItems, IVsLanguageContextProvider, IServiceProvider, 
    IObjectWithSite, ISynchronizeInvoke, IVsDebuggerEvents, IVsFormatFilterProvider
[<AbstractClass>]
[<CLSCompliantAttribute(false)>]
[<ComVisibleAttribute(true)>]
type LanguageService =  
    class 
        interface IDisposable 
        interface IVsLanguageInfo 
        interface IVsLanguageDebugInfo 
        interface IVsProvideColorableItems 
        interface IVsLanguageContextProvider 
        interface IServiceProvider 
        interface IObjectWithSite 
        interface ISynchronizeInvoke 
        interface IVsDebuggerEvents 
        interface IVsFormatFilterProvider 
    end
public abstract class LanguageService implements IDisposable, IVsLanguageInfo, IVsLanguageDebugInfo, IVsProvideColorableItems, IVsLanguageContextProvider, IServiceProvider, IObjectWithSite, ISynchronizeInvoke, IVsDebuggerEvents, IVsFormatFilterProvider

The LanguageService type exposes the following members.

Constructors

  Name Description
Protected method LanguageService Initializes a new instance of the LanguageService class.

Top

Properties

  Name Description
Public property InvokeRequired Determines if a method must be invoked across a thread boundary.
Public property IsActive Determines whether the language service is connected to the current view and therefore is active.
Public property IsDebugging Determines if the debugger is active.
Public property IsParsing Determines if a background parse is in progress.
Public property LastActiveTextView Returns the last active text view associated with this language service.
Public property MainThreadId Returns the id of the thread this language service is running on.
Public property Name Returns the name of the language (for example, "C++" or "HTML").
Protected property ParseThreadIsAlive Determines whether the parse thread is alive.
Public property ParseThreadPaused Determines whether the parse thread is alive.
Public property Preferences Provides access to the language service preferences.
Public property Site Returns the service provider given to this language service.

Top

Methods

  Name Description
Public method AbortBackgroundParse Stops the parse thread.
Public method AddCodeWindowManager Adds a code window manager to the language service.
Public method BeginInvoke Invokes a method on another thread.
Public method BeginParse Starts a parse operation on a background thread.
Public method CanStopThread Determines whether the thread can be stopped.
Public method CreateCodeWindowManager Instantiates a CodeWindowManager class.
Public method CreateDocumentProperties Instantiates a DocumentProperties class.
Public method CreateDropDownHelper Instantiates a TypeAndMemberDropdownBars class.
Public method CreateExpansionFunction Instantiates an ExpansionFunction class.
Public method CreateExpansionProvider Instantiates an ExpansionProvider class.
Public method CreateParseRequest Creates a request to satisfy the given reason for parsing that is then passed on to the parser.
Public method CreateSource Instantiates a Source class.
Public method CreateViewFilter Instantiates a ViewFilter class.
Public method CurFileExtensionFormat Returns the index into the file extension list that matches the extension of the specified file name.
Public method DispatchCommand(Guid, UInt32, IntPtr, IntPtr) Called to execute the specified command.
Public method DispatchCommand(Guid, UInt32, UInt32, IntPtr, IntPtr) Called to execute the specified command.
Public method Dispose Called when the language service object is being destroyed.
Public method EndInvoke Retrieves the result of an asynchronous call started by LanguageService.BeginInvoke.
Public method Equals Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetCodeWindowManager Instantiates a CodeWindowManager class.
Public method GetCodeWindowManagerForSource Returns the CodeWindowManager object associated with the specified Source object.
Public method GetCodeWindowManagerForView Returns the CodeWindowManager associated with the specified IVsTextView object.
Public method GetColorableItem Returns the requested IVsColorableItem object.
Public method GetColorizer(IVsTextLines) Iinstantiates a Colorizer class.
Public method GetColorizer(IVsTextLines, IVsColorizer%) Returns the colorizer associated with a Source object that contains the given IVsTextLines object.
Public method GetFileExtensions Returns a string containing the file extensions associated with this language.
Public method GetFormatFilterList Returns a list of file extension filters suitable for a Save As dialog box.
Public method GetHashCode Serves as the default hash function. (Inherited from Object.)
Public method GetImageList Returns an image list containing glyphs associated with the language service.
Public method GetItemCount Returns the number of custom colorable items supported by the language service.
Public method GetIVsDebugger Returns an IVsDebugger object representing the currently available debugger in order to listen for debugger events.
Public method GetIVsTextMacroHelperIfRecordingOn Returns an IVsTextMacroHelper object if macro recording is turned on.
Public method GetLanguageID Returns the language GUID of the language service.
Public method GetLanguageName Returns the name of the language this language service handles.
Public method GetLanguagePreferences Returns a LanguagePreferences object for this language service.
Public method GetLanguageServiceGuid Returns the GUID of the language service.
Public method GetLocationOfName Obsolete method that always returns E_NOTIMPL.
Public method GetNameOfLocation Returns the name of the enclosing element that contains the given position.
Public method GetOrCreateSource Gets the source if it is available, otherwise creates one.
Public method GetParseResult Gets the result of the parse operation.
Public method GetPrimaryViewForSource Calls GetPrimaryView on the code window manager for the source.
Public method GetProximityExpressions Returns a list of expressions to be evaluated and shown in the Autos window, for a given span of lines.
Public method GetScanner Returns a single instantiation of a parser.
Public method GetService Returns a service object that can be cast to a specific interface.
Public method GetSite Returns an unmarshaled pointer to a requested interface.
Public method GetSource(IVsTextLines) Returns an existing Source object that contains the specified buffer of source.
Public method GetSource(IVsTextView) Returns an existing Source object that contains the source file shown in the specified text view.
Public method GetSource(String) Returns an existing Source object given a file name.
Public method GetSources Returns a collection of Source objects maintained by the language service.
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Public method Initialize Called to initialize the language service.
Public method Invoke Called to invoke a task specified by the given delegate.
Public method IsMacroRecordingOn Called to determine if macro recording is turned on.
Public method IsMappedLocation Called to determine if the specified location in the given source file references code in another file.
Public method IsSourceOpen Determines whether or not the source file is open.
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method OnActiveViewChanged Called when the current view has changed to a different view.
Public method OnCaretMoved Called when the caret has moved.
Protected method OnChangesCommitted Called when changes generated by an auto-complete or code snippet expansion operation is committed to the buffer.
Public method OnCloseSource Called to close the specified Source object.
Public method OnIdle Called when no other events need to be handled.
Public method OnModeChange Called whenever the debug mode has changed while debugging.
Public method OnParseAborted Does nothing.
Public method OnParseComplete Called when a background parse has been completed.
Public method OpenDocument Opens the specified file.
Public method ParseSource Parses the source based on the specified ParseRequest object.
Public method QueryInvalidEncoding Determines if the specified source format is valid or not.
Public method QueryService Returns the request interface from the specified service.
Public method QueryWaitForAutoOutliningCallback Determines whether to wait for the auto-outlining callback to finish.
Public method RemoveCodeWindowManager Called when the view associated with the specified CodeWindowManager is closed.
Public method ResolveName Returns a list of method names that match the given name modified by the specified flags.
Public method ScrollToEnd(IVsTextView) Updates the specified view to show the end of the source file.
Public method ScrollToEnd(IVsWindowFrame) Updates the view in the specified window frame to show the end of the source file.
Public method SetSite Called to set or site the service provider for this language service.
Public method SetUserContextDirty Marks the user context as dirty in the specified source buffer.
Public method SynchronizeDropdowns Called to update a drop-down bar based on the current caret position.
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Public method UpdateLanguageContext Updates the current user help context in a selected region of the given source.
Public method ValidateBreakpointLocation Called to determine if the given location can have a breakpoint applied to it.

Top

Explicit Interface Implementations

  Name Description
Explicit interface implemetationPrivate method IVsFormatFilterProvider.CurFileExtensionFormat Returns the index into the file extension list that matches the extension of the specified file name.
Explicit interface implemetationPrivate method IVsFormatFilterProvider.GetFormatFilterList Returns a list of file extension filters suitable for a Save As dialog box.
Explicit interface implemetationPrivate method IVsFormatFilterProvider.QueryInvalidEncoding Determines if the specified source format is valid or not.
Explicit interface implemetationPrivate method IVsLanguageContextProvider.UpdateLanguageContext Updates the current user help context given a selected region of the given source.

Top

Remarks

Visual Studio uses language services to provide support for code languages. A language service is registered with Visual Studio when the language service package is installed. Part of this registration process associates a file extension with a language service so any time a file with that extension is loaded, the language service is also loaded.

The LanguageService class is the base class for your language service. Visual Studio instantiates the VSPackage implementing your language service and calls the SetSite method on the VSPackage. In the implementation of this method, the Initialize method on the Package base class is called. Override the Initialize method to instantiate your language service. Remember to call the SetSite method on your language service after instantiation.

Notes to Implementers

Derive a class from this class to create your own language service. You must also, at the very least, implement a parser that implements the IScanner interface. All features of a language service are based on this parser.

The following methods and property are marked as abstract and must be implemented in a class derived tom the LanguageService class:

Method/Property to be Implemented

Description

GetLanguagePreferences

A method that returns a LanguagePreferences object.

GetScanner

A method that returns an IScanner object.

ParseSource

A method that parses the source.

Name

A read-only property that returns the language name

If you do not intend to support the ValidateBreakpointLocation but your language does support breakpoints, you must override the ValidateBreakpointLocation method and return a span that contains the specified line and column; otherwise, breakpoints cannot be set anywhere except line 1. You can return E_NOTIMPL to indicate that you do not otherwise support this method but the span must always be set. The example in the ValidateBreakpointLocation method shows how this can be done.

Notes to Callers

Register your language service when installing your VSPackage (this could be a package dedicated to your language service or it could be a project package that also supplies a language service). You instantiate your own language service during your package initialization. Visual Studio interacts with your language service to display code written in the language supported by your language service. See the example below for how this language registration can be done.

Examples

The following example shows how to register and initialize your language service for your package. Note: MyLanguageService is derived from the LanguageService class.

using System.ComponentModel.Design;
using Microsoft.VisualStudio.Shell;

namespace MyLanguagePackage
{
    /////////////////////////////////////////////
    // Other package registration details go here
    /////////////////////////////////////////////

    // Offer a new language service
    [ProvideServiceAttribute(typeof(MyLanguageService),
                                       ServiceName = "My Language Service")]

    // Register the language service with Visual Studio.
    // "106" is the resource ID in the satellite DLL to the localized language name.
    [ProvideLanguageServiceAttribute(typeof(MyLanguageService),"My Language",106)]

    // Associate a file extension with our language service.
    [ProvideLanguageExtensionAttribute(typeof(MyLanguageService), ".myext")]

    class MyLanguagePackage : Package
    {
        protected override void Initialize()
        {
            base.Initialize();

            IServiceContainer serviceContainer = this as IServiceContainer;
            MyLanguageService languageService = new MyLanguageService();
            languageService.SetSite(this);
            serviceContainer.AddService(typeof(MyLanguageService),
                                        languageService,
                                        true);
        }
    }
}

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.Package Namespace

Other Resources

Language Service Overview (Managed Package Framework)