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