IVsSymbolicNavigationManager Interface

 

Manages the list of IVsSymbolicNavigationNotify handlers that are registered on a project-scoped basis. Obtain an IVsSymbolicNavigationManager interface by calling QueryService for the SVsSymbolicNavigationManager service.

Namespace:   Microsoft.VisualStudio.Shell.Interop
Assembly:  Microsoft.VisualStudio.Shell.Interop.9.0 (in Microsoft.VisualStudio.Shell.Interop.9.0.dll)

[GuidAttribute("C4D4F197-941E-43B1-9D42-BE527F9D5D00")]
[InterfaceTypeAttribute(1)]
public interface IVsSymbolicNavigationManager

NameDescription
System_CAPS_pubmethodOnBeforeNavigateToSymbol(IVsHierarchy, UInt32, String, Int32)

Determines if there is an alternative source file to navigate to for a code symbol (a Goto Definition operation).

System_CAPS_pubmethodQueryNavigateToSymbol(IVsHierarchy, UInt32, String, IVsHierarchy, UInt32, TextSpan[], Int32)

Retrieves the alternative navigation target for the symbol if there is one (this method does not do the actual navigation).

System_CAPS_pubmethodRegisterSymbolicNavigationNotify(IVsSymbolicNavigationNotify, UInt32)

Registers the symbolic navigation notify implementation in the project.

System_CAPS_pubmethodUnregisterSymbolicNavigationNotify(UInt32)

Unregisters the symbolic navigation notify implementation.

The language service of a code language should call OnBeforeNavigateToSymbol on this service before performing a "Goto Definition" type of navigation to a symbol in code. This allows an advanced code generator system to overtake the normal navigation, and instead causes the navigation to the definition of the symbol in the source document that generated the code definition (for example, an XAML file).

IVsSymbolicNavigationManager will loop through all of the registered objects and call OnBeforeNavigateToSymbol and QueryNavigateToSymbol until the first one returns that it handled the symbol. The order of these calls is undefined. It is expected that implementations of these methods will be able to quickly respond false for files they do not care about based on checking the naming pattern (file extension) of the input code file. Further quick checks should be able to be made if the input IVsHierarchy is supported.

Return to top
Show: