Table of content
WholeTomato

Find Symbol in Solution

Visual Assist provides two efficient methods to locate symbols in your solution:

  1. Symbols in the Solution drop-down in the VA View, which is often visible when editing
  2. Find Symbol dialog that is opened on demand and is more powerful than the drop-down

You can use the keyboard or mouse to navigate both methods.

Visual Assist versus Visual Studio

Visual Studio 2017 provides Go-to-Symbol, which is similar to Find Symbol in Solution. Both implementations provide access to all symbols in a solution, but Visual Assist offers the feature in large solutions and supports advanced filtering and sorting.

Symbols in Solution Drop-down

The Symbol in Solution drop-down is the second component of the VA View. The interface to the drop-down is simple and fast, and sufficient if you have reasonable knowledge of the symbol you need.

If the VA View is not open, open it with VAssistX | Tools | VA View or via a shortcut assigned to VAssistX.VAView.

Put focus in the Symbols in Solution drop-down, and type one or more strings to filter the list of all symbols in your solution to include only those containing the strings. Filtering in the drop-down is always case-insensitive.

Hover over entries in the drop-down to see definitions and file locations.

Navigate the drop-down with the keyboard or mouse.

Select a symbol using Enter, or click, to jump to its definition.

Copy a symbol from your source and paste (Ctrl+V) it into the drop-down to quickly find symbols whose names contain the content of your clipboard.

When the drop-down list is open, Copy (Ctrl+C) places the name of the element with focus in the clipboard.

Find Symbol Dialog

Open the Find Symbol dialog via the default shortcut (Shift+Alt+S) or toolbar button to see the same list of symbols with their definitions.

Double-Click a symbol to jump to its implementation.

Settings in the Dialog

Open the gear menu in the dialog to change how symbols are searched and what the dialog displays. The settings are split into Search Behavior and Display Options. To change them from the keyboard, see the Keyboard Access section.

Search Behavior

Enable "Show only symbols defined in current solution" (Alt+S) to restrict the list to those symbols defined in the current solution. When the setting is off, the list includes system symbols.

Enable "Only classes, structs & namespaces" (Alt+C) to restrict content types and improve responsiveness of the dialog in very large projects.

Enable "Use fuzzy search" (Alt+F) to find symbols whose names approximately match your filter.

Enable "Initialize search with editor selection" (Alt+I) to make the Find Symbol dialog open with selected text as the current filter. Press Undo (Ctrl-Z) to restore the previous filter(s). If there is no selection, the File Symbol Find Symbol dialog will open with the previous filter.

Enable "Match case of search strings that contain uppercase letters" (Alt+M) to restrict searches to symbols that match the case of a filter string if the string contains any uppercase letters. Without the setting enabled, "foo" matches "foo" and "Foo". With the setting enabled, "foo" matches "foo" and "Foo" but "Foo" matches only "Foo". If you need to find only "foo" with the setting enabled, search for "foo -F"; the negative filter will eliminate "Foo".

Display Options

Enable "Quick toggles" to show a strip of toggles above the list: Solution only, Fuzzy search, and Classes/structs/namespaces. The strip is on by default; disable "Quick toggles" to hide it. See Keyboard Access to Settings.

Disable "Tooltips" (Alt+L) to prevent the opening of hovering tooltips that identify the file, surrounding code, and directory of the symbol definition. (Tooltips will still open to identify values in partially hidden cells).

Enable "File columns" (Alt+E) to show columns containing files and directories. These columns are especially useful if your solution has numerous like-named symbols defined in different locations. Display of the columns does not affect sorting or filtering within the dialog. When the columns are shown, consider disabling the hovering tooltips that contain identical information. The dialog reopens when you change this setting.

Keyboard Shortcuts

Use Alt shortcuts to turn the options in the quick toggles strip and the gear menu on or off. They work while the dialog has focus, so you can change an option without leaving the filter field or using the mouse. The gear menu shows the shortcut for each option beside its name.

  • Alt+S - Show only symbols defined in current solution
  • Alt+C - Only classes, structs & namespaces
  • Alt+F - Use Fuzzy search
  • Alt+I - Initialize search with editor selection
  • Alt+M - Match case of search strings that contain uppercase letters
  • Alt+L - Tooltips
  • Alt+E - File columns

If two settings share the same letter, a small menu asks which setting to toggle.

A status line below the list names the changed setting for a few seconds.

Quick Toggles Strip

The quick-toggles strip above the list has clickable Solution only, Fuzzy search, and Classes/structs/namespaces toggles, and the hint "Alt: open settings". The strip is on by default. To hide it, disable "Quick toggles" in the gear menu.

Filtering in the Dialog

Type a string in the edit field of the dialog to filter the list. By default, Visual Assist selects a symbol whose name begins with the filter. If no symbol begins with the filter, Visual Assist selects the first symbol containing the filter.

Type unique filters to locate symbols quickly. Type multiple strings to find symbols whose names contain all of the strings.

Precede a filter with a hyphen to exclude symbols (negative filtering).

Begin a filter with a dot to find symbols that begin with the filter, or contain the dot and substring. A filter that ends with a dot matches ends of symbols.

Context Menu in the Dialog

Right-Click a symbol in the Find Symbol dialog to expose a context menu.

Select "Find References" (Ctrl+F) to launch Find References, integral to Visual Assist for the selected symbol.

The gear menu settings and the context menu commands are not available in the Symbols in Solution drop-down.

Scrolling in the Dialog

Scroll the list with standard techniques when focus is in the list.

When focus is in the filter edit control, scrolling works differently, which is non-standard behavior for a dialog. If no filter is present, Home and End scroll the list. Once you start typing a filter, Home and End move the text caret in the filter edit control. Up, Down, PgUp, PgDn, Ctrl-Home, and Ctrl-End continue to scroll the list.

Sorting in the Dialog

Symbols are always sorted alphabetically by name. Clicking column headers does not change the sort order

Symbols Included in the Drop-down and Dialog

Visual Assist includes in the drop-down and dialog all symbols likely to be the target of a search, and excludes inconsequential symbols. Symbols included vary by type, language, and location.

Symbol type Located in
C# file
Located in
C/C++
header file
Located in
C/C++
source file
Global and namespace symbols (variables, functions, classes, class members, enum names and their items, etc.) Yes Yes Yes
#defines Yes Yes No
typedefs N/A Yes No
Local variables No No No

Overloaded methods and symbols defined more than once, particularly within #define directives in C/C++, correctly appear multiple times in the drop-down and dialog.

Directory-Based Parsing

If you use directory-based parsing, a file need not belong to a solution to have its symbols exposed to Find Symbol in Solution.

Registry Settings

Value Name Meaning
ParseLocalTypesForGotoNav Exclude locally defined classes and typedefs from FSIS dialog