---
schema_version: "1"
id: 2a775916cd025b72fc58b7cf82b17ce972a426bde1a4d5545dfff1eab128f0d1
title: Helpful Features in the Text Editor
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/design-center/design-helpful-features-text-editor.md
canonical_url: https://docs.mulesoft.com/design-center/design-helpful-features-text-editor
source_site: docs.mulesoft.com
content_type: documentation
content_hash: e5c1c6c3b715c51df98fc0ce2ebb84b4917e5d748c6640a088b6c483379b5bd3
description: MuleSoft Documentation Site
latest: true
---
---
product: Design Center
---

# Helpful Features in the Text Editor

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

The text editor makes it easy to perform the following:

- Rename declarable objects

- Find the names of declarable objects by highlighting them

- Find locations where a definition is referenced

- Select code ranges

- Navigate to a symbol

- Extract an element to a declaration

## Rename Declarable Objects

Using only one action, you can rename declarable objects everywhere they are used in a project.

You can right-click the name of an object where it is declared, select **Rename Symbol**, and
provide a new name. The object is thereby renamed wherever it is used in all of the files of the
current project that are associated with the root file of the project, but the object is not renamed
where only mentioned.

For example, in the following example API specification `product_name` is declared as a type on line
5 at callout 1, mentioned at callout 2, and used on line 17 at callout 3. If you right-click
`product_name` at callout 1 and use the **Rename Symbol** option to change its name, `product_name`
is changed only at callout 3.

#%RAML 1.0 title: Test Renaming

types: product\_name: **(1)** type: object properties: name: string

/test: get: responses: 200: description: product\_name **(2)** body: application/json: type:
product\_name **(3)**

## Highlight the Names of Declarable Objects

You can highlight the names of declarable objects where they are used in a file.

To see all of the locations in a file where an object is used, click the cursor in the name of the
object where that object is declared.

For example, the type `person` is declared on line 5 at the first callout in the following example
API specification. That type is subsequently used on line 16 at the second callout. If you click
`person` on line 5, the text editor highlights `person` on line 16.

#%RAML 1.0 title: Test Highlighting

types: person: **(1)** type: object properties: name: string

/test: get: responses: 200: body: application/json: type: person **(2)**

This highlighting works for all declarable objects, such as types, security schemes, resource types,
and traits.

Highlighting appears only where the object is used, not every location where its name appears. For
example, in the following example API specification, `person` is declared as a type on line 5 at
callout 1, mentioned on line 14 at callout 2, and used on line 17 at callout 3. When you click in
`person` at callout 1, `person` is highlighted only at callout 3.

#%RAML 1.0 title: Test Highlighting

types: person: **(1)** type: object properties: name: string

/test: get: responses: 200: description: person **(2)** body: application/json: type: person **(3)**

## Find Locations Where a Definition is Referenced

You can navigate to locations where a given definition is referenced by right-clicking the
definition and selecting **Go to References**.

For example, the type `person` is declared on line 5 at the first callout in the following example
API specification. That type is subsequently used on line 14 at the second callout, and on line 22
at the third callout.

#%RAML 1.0 title: Test References

uses: lib: library.raml

types: person: **(1)** description: this is person's description properties: firstname: string
manager: type: lib.manager Alertable: manager | person **(2)**

/person: get: responses: 200: body: application/json: type: person\[\] **(3)**

If you right-click `person` on line 5 and select **Go to References**, a list of the `person`
locations (callouts two and three) appears. Double clicking a listed location navigates you to the
relevant line.

**Go to References** also supports the following:

- RAML resource types and traits

- RAML type expressions

- Library aliases

- References linked in JSON path navigation

- References to nodes that apply macros, such as `annotationTypes`, `securitySchemes`,
  `resourceTypes`, and `traits`

## Select Code Ranges

“Selection Ranges” enable you to select and to expand the selection of code blocks.

To select a range, click an element and press Control + Shift + \[Left Arrow | Right Arrow\]. The
Right Arrow key increases the range. The Left Arrow key decreases the range.

For example, clicking `body:` in the following code, and pressing Control + Shift + Right Arrow
creates a selection range that includes only `body:`:

![Example of a JSON response containing a person’s first name.](/mulesoft/current/en-us/design-center/_images/apid-helpful-text-editor-1.png)

Pressing Control + Shift + Right Arrow again results in the following selection range:

![A code snippet that demonstrates a JSON object with a key named firstname.](/mulesoft/current/en-us/design-center/_images/apid-helpful-text-editor-2.png)

Pressing Control + Shift + Left Arrow collapses the selection range, leaving only `body:` selected
again.

## Navigate to a Symbol

You can right-click anywhere in the document and select **Go to Symbol**, which presents the list of
defined symbols:

![A RAML code that defines a type and resource for a person.](/mulesoft/current/en-us/design-center/_images/apid-helpful-text-editor-3.png)

Selecting a symbol navigates you to its location in the document.

## Extract an Element to a Declaration

You can take advantage of refactoring helpers to ease the continuous improvement of the design. One
such helper is the ability to extract an inline declarable element to a top-level declaration, with
the result being reusability.

When you select a range that matches an inline declarable element, an icon appears to the left of
the element:

![A code that shows the definition of a ](/mulesoft/current/en-us/design-center/_images/apid-helpful-text-editor-4.png)

Click the icon and select **Extract to Declaration**, which results in the following two changes to
the document:

![Code showcasing RAML for a test refactoring project.](/mulesoft/current/en-us/design-center/_images/apid-helpful-text-editor-5.png)

The first callout shows that `type: lib.manager` is replaced with `type: newtype`. A `newtype`
declaration now exists outside of the `manager` scope (as shown at the second callout), thereby
making `newtype` reusable.

The extracted declaration name is based on the original name. If the name is already being used by
another declaration of the same kind, an automatically incremented number is added at the end of the
name. You can rename the declaration.

Along with `types` declarations, you can also extract `resourceTypes` declarations and `traits`
declarations.
