Next: Prompts, Previous: Templates, Up: Template Writing [Index]

### 5.3 Context

Each template belongs to a context. When prompting for a template by name, such as with `C-c / /`, the name is prefixed by the current context. If there is no context, it defaults to `declaration`.

You can change context like this:

    context NAME

where name is some symbol that represents any context.

A context resides over all templates that come after it until the next context statement. Thus:

    context C1

    template foo
    "Foo template in C1"
    ----
    ----

    context C2

    template foo
    "Foo template in C2"
    ----
    ----

creates two `foo` templates. The first one is when in context C1. The second is available in context C2.

This is useful if there are multiple ways to declare something like a function or variable that differ only by where it is in the syntax of the language. The name `foo` is not ambiguous because each is in a different context.