Skip to content

Settings

Change almost everything without opening the configuration file.

Press ; to open the settings. Every change applies to the running app, and stage writes it to the configuration file for you.

This is the front door. The file is the escape hatch behind it, not the other way round.

The list on the left holds them. Each row shows the number that goes to it.

Section Holds
Theme The colors, and the light and dark pair
Options The toggles and the values
Keys Every binding, and the key it uses
About What stage found on this machine

Press 1, 2, 3, or 4 to go straight to a section. Press tab for the next one. Press ] or [ for the same move. Press esc to close the settings.

The diff gains a line of context while the settings are still open.

Move to a row with j or k. Press h or l to change the value. Only the selected row shows its value in ‹ ›, because the keys act on that row alone.

The rows come in four groups.

Group Row What it changes
Diff Diff layout Side by side, stacked, or by the width of the pane
Diff Wrap lines Long lines wrap instead of being cut
Diff Diff context The unchanged lines around each hunk
Diff Rename similarity How alike two files must be to count as a rename
Interface Sidebar width The share of the terminal the panels take
Interface Sidebar side The side of the terminal the panels sit on
Interface File tree The files panel as a tree instead of a flat list
Interface Commit graph The lanes beside the commits
Interface Command log The strip that shows the git commands
Interface Ignored files Files git ignores appear in the explorer
Interface Transparency stage stops painting its own background
Interface Scroll speed The rows one j scrolls in the diff
Git Auto fetch A fetch runs on a timer
Git Pull mode How pull brings work in
Git Branch sort The order of the local branches
Git Remote branch sort The order of the remote branches
Behavior Confirm on quit q asks first
Behavior Code navigation Go-to-definition and hover
Find the binding, then press the key. The row then marks it with *.
  1. Press / and type part of the binding name.
  2. Press enter on the binding.
  3. Press enter again. stage waits for one key.
  4. Press the key you want.

The row then shows your key and a *.

The filter also matches the words stage uses for a binding. Type rebase to find op.menu.

Two answers are worth knowing:

  • A key that the binding uses by default removes your override, and the * goes away. stage does that rather than write an override that quietly loses the other keys of that binding.
  • A key that has no spelling in the configuration file cannot be recorded. stage says so and keeps waiting. esc cancels.

If the key is already bound somewhere else, stage still takes it, and the notice names the other bindings.

The About section answers “what does stage think it has”:

Row Answer
version The version you are running
github token Where the forge token came from
fff Whether the search engine loaded
code nav Whether language servers are available
agent host Which terminal stage detected
config The path of the configuration file
identity (repo) user.name and user.email for this repository
identity (global) The same, for every repository

Both identity rows are editable here, which is the fastest answer to a commit that git refuses.

Read this tab first when a feature is missing. It separates “this machine does not have it” from “you turned it off”.

Press e to open the configuration file in $EDITOR. Read Configuration for what it holds.