<type>documentation</type>
<domain>edit</domain>
<id>navigating-source</id>
<title>Navigating Source</title>
<date>$Date$</date>
<version>$Revision$</version>
<product>all</product>

The editor provides a number of features designed to make it easier to navigate Python
code.

**Source Index Menus**

The menus at the top of the editor provide an index of the classes, methods, and functions
in the current file. These can be used to navigate within the
top-level scope and within any sub-scopes present at the current position. The menus
update as you move the editor caret to other scopes or files.

~~~if WINGPER or WINGPRO:
For an index of all code in the Project, see the `Source Browser <ref:browser/index>`__ tool.
~~~

**Goto Definition**

You can visit the point of definition of any Python symbol by right-clicking on it
and selecting ``Goto Definition`` from the editor's context menu.

Alternatively, place the cursor or selection on a symbol and use ``Goto Selected Symbol
Defn`` in the ``Source`` menu, or its keyboard equivalent.

``Control-click`` (or ``Command-click`` on macOS) also jumps to the point of definition.

~~~if WINGPRO:
**Find Points of Use**

In Wing Pro, to view all points of use of a symbol, right click on it and select ``Find
Points of Use`` or use the item of the same name in the ``Source`` menu. The points of use
are shown in the ``Uses`` tool, from which you can visit each point of use. 

Alt-click (or Option-click on macOS) on a symbol in the editor also displays points of use.

For more information, see `Find Uses <ref:edit/points-of-use>`__.
~~~

**Visit History**

The history buttons in the top left of the editor area move forward and backward through
recently visited places and editors in a manner similar to the forward and back buttons in
a web browser.  This is a good way to return from a point of 
~~~if WINGPRO:
definition or after visiting points of use.
~~~
~~~if not WINGPRO:
definition.
~~~

~~~if not WING101:
**Finding Symbols by Name**

``Find Symbol`` in the ``Source`` menu provides a way to find a symbol defined 
in the current Python scope, by typing a fragment of its name.
~~~

~~~if WINGPRO:
``Find Symbol in Project`` in Wing Pro works the same way but searches all files in 
the project for any symbol matching a fragment.
~~~

~~~if not WING101:
When a symbol is visited in the editor, Wing highlights it briefly with a callout,
as configured from the ``Editor > Callouts`` preferences group.
~~~
