Skip to main content

Shell Script

Below are visualizations of all our scope tests for this language. These were created primarily for testing purposes rather than as documentation. There are quite a few, and they may feel a bit overwhelming from a documentation standpoint.

Scopes

Argument list

1. Argument list: Actual empty

An empty list of arguments in a function call. Insertion delimiter should be empty.

2. Argument list: Actual multi line

A multi-line list of arguments in a function call. Insertion delimiter should include a newline.

3. Argument list: Actual single line

A single-line list of arguments in a function call

Argument or parameter

1. Argument: Actual multi line

A multi-line argument in a function call. Insertion delimiter should include a newline.

2. Argument: Actual single line

A single-line argument in a function call

3. Argument: Actual (iteration)

Iteration scope for arguments in a function call: the argument list. The domain should be the entire function call.

Branch

1. Branch: If

An if branch

2. Branch: If elif else

An if-elif-else branch. The removal range for the if branch should include the trailing else keyword.

3. Branch: If else

An if-else branch

4. Branch: Switch case

A case/default branch in a switch statement

5. Branch: Ternary

A branch in a ternary expression

6. Branch: If (iteration)

Iteration scope for if/elif/else branches: the if/elif/else statement.

7. Branch: Switch case (iteration)

Iteration scope for case/default branches in a switch statement: the switch statement body.

8. Branch: Ternary (iteration)

Iteration scope for ternary expression branches: the ternary expression.

Collection key

1. Key: Map pair

Key (LHS) of a key-value pair in a map

2. Key: Map pair (iteration)

Iteration scope for keys of key-value pairs in a map: should be between the braces.

Comment

1. Comment: Line

A line comment

Condition

1. Condition: For

A condition in a for loop

2. Condition: If

A condition in an if statement

3. Condition: Switch case

A condition in a switch statement

4. Condition: Ternary

A condition in a ternary expression

5. Condition: While

A condition in a while loop

6. Condition: Switch case (iteration)

Iteration scope for conditions in a switch statement: the switch statement body.

Function call

1. Function call

A function call

Function callee

1. Function callee

The function being called in a function call

If statement

1. If statement

An if statement

Interior

1. Interior: For

The body of a for loop

2. Interior: Foreach

The body of a for-each loop

3. Interior: Function

The body of a function declaration

4. Interior: If

The body of an if/elif/else branch

5. Interior: Switch

The body of a switch statement

6. Interior: Switch case

The body of a case/default branch in a switch statement

7. Interior: While

The body of a while loop

List

1. List

A list/array

Map

1. Map

A map/dictionary

Name

1. Name: Assignment

Name (LHS) of an assignment statement

2. Name: Assignment compound

Name (LHS) of a compound assignment statement, eg +=/-=

3. Name: Constant

Name (LHS) of a constant declaration

4. Name: Foreach

Iteration variable name in a for-each loop

5. Name: Function

Name of a function declaration

6. Name: Variable initialized

Name (LHS) of an initialized variable declaration

7. Name: Variable uninitialized

Name (LHS) of an uninitialized variable declaration

8. Name (iteration block)

Iteration scope for names: statement blocks (body of functions/if-statements/for-loops/etc).

9. Name (iteration document)

Iteration scope for names: the entire document including leading and trailing empty lines.

Named function

1. Named function

A named function declaration

2. Named function (iteration document)

Iteration scope for named functions: the entire document including leading and trailing empty lines.

Regular expression

1. Regular expression

A regular expression

Statement

1. Statement: Assignment

An assignment statement

2. Statement: Assignment compound

A compound assignment statement, eg +=/-=

3. Statement: Break

A break statement

4. Statement: Constant

A constant declaration

5. Statement: Continue

A continue statement

6. Statement: For

A for loop

7. Statement: Foreach

A for-each loop

8. Statement: Function

A named function declaration

9. Statement: Function call

A function call statement

10. Statement: If

An if/elif/else statement

11. Statement: Import

An import statement

12. Statement: Return

A return statement

13. Statement: Switch

A switch statement

14. Statement: Update

An update statement, eg ++/--

15. Statement: Variable initialized

An initialized variable declaration

16. Statement: Variable uninitialized

An uninitialized variable declaration

17. Statement: While

A while loop

18. Statement (iteration block)

Iteration scope for statements: statement blocks (body of functions/if-statements/for-loops/etc).

19. Statement (iteration document)

Iteration scope for statements: the entire document including leading and trailing empty lines.

Value

1. Value: Assignment

Value (RHS) of an assignment statement

2. Value: Assignment compound

Value (RHS) of a compound assignment statement, eg +=/-=

3. Value: Constant

Value (RHS) of a constant declaration

4. Value: Foreach

Iterable in a for-each loop

5. Value: Map pair

Value (RHS) of a key-value pair in a map

6. Value: Return

Return value of a function

7. Value: Switch

Value / subject of a switch statement

8. Value: Variable

Value (RHS) of a variable declaration

9. Value (iteration block)

Iteration scope for values: statement blocks (body of functions/if-statements/for-loops/etc).

10. Value (iteration document)

Iteration scope for values: the entire document including leading and trailing empty lines.

11. Value: Map pair (iteration)

Iteration scope for values of key-value pairs in a map: should be between the braces.

Internal scopes

The following are internal scopes. They are not intended for user interaction or spoken use. These scopes exist solely for internal Cursorless functionality.

String

1. String: Multi line

A multi-line string

2. String: Single line

A single-line string

Text fragment

1. Text fragment: Comment line

Internally used text fragment consisting of a line comment

2. Text fragment: Regular expression

Internally used text fragment consisting of a regular expression literal pattern

3. Text fragment: String multi line

Internally used text fragment consisting of a multi-line string

4. Text fragment: String single line

Internally used text fragment consisting of a single-line string