LilyPond Notation Reference: 5.1.4 Modifying context plug-ins

### 5.1.4 Modifying context plug-ins

Notation contexts (like `Score` and `Staff`) not only store properties, they also contain plug-ins called ‘engravers’ that create notation elements. For example, the `Voice` context contains a `Note_heads_engraver` and the `Staff` context contains a `Key_engraver`.

For a full a description of each plug-in, see Engravers and Performers. Every context described in Contexts lists the engravers used for that context.

It can be useful to shuffle around these plug-ins. This is done by starting a new context with `\new` or `\context`, and modifying it,

>     \new context \with {
>       \consists …
>       \consists …
>       \remove …
>       \remove …
>       etc.
>     }
>     {
>       …music…
>     }

where each … should be the name of an engraver. Here is a simple example which removes `Time_signature_engraver` and `Clef_engraver` from a `Staff` context,

>     <<
>       \new Staff \relative {
>         f'2 g
>       }
>       \new Staff \with {
>          \remove Time_signature_engraver
>          \remove Clef_engraver
>       } \relative {
>         f'2 g2
>       }
>     >>

In the second staff there are no time signature or clef symbols. This is a rather crude method of making objects disappear since it will affect the entire staff. This method also influences the spacing, which may or may not be desirable. More sophisticated methods of blanking objects are shown in Visibility and color of objects.

#### Known issues and warnings

The order in which the engravers are specified is the order in which they are called to carry out their processing. Usually the order in which the engravers are specified does not matter, but in a few special cases the order is important, for example where one engraver writes a property and another reads it, or where one engraver creates a grob and another must process it.

The following orderings are important:

- the `Bar_engraver` must normally be first,
- the `New_fingering_engraver` must come before the `Script_column_engraver`,
- the `Timing_translator` must come before the `Bar_number_engraver`.

#### See also

Installed Files: ‘`ly/engraver-init.ly`’.

#### LilyPond — Notation Reference v2.24.4 (stable-branch).