# Rework third-party themes \(\#3254\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/0d95410634b044262462500cc76b393750b8ac80)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 0d95410634b044262462500cc76b393750b8ac80

Requested commit: 0d95410634b044262462500cc76b393750b8ac80

Commit: 0d95410634b044262462500cc76b393750b8ac80

Tree: 05458af0a7eea55b308b545d9be7a32cebe54dcf

Author: Marshall Bowers

Committer: GitHub

## Message

```
Rework third-party themes (#3254)

This PR reworks the way we define our third-party themes to make them
work as overlays on top of a base theme.

We introduce the concept of a `UserThemeFamily` that contains
`UserTheme`s. Rather than being an entire theme definition on their own,
a `UserTheme` just contains optional overrides for the values in a
`Theme`.

When resolving a `UserTheme`, we apply it on top of the base theme. Any
values not overridden in the `UserTheme` will fall back to the `Theme`
defaults.

Right now we are just using `UserTheme` to model third-party themes that
we distribute with the Zed binary. However, this same structure can also
be used to import arbitrary user themes (such as from a theme registry,
or even a theme blob from the settings file).

Release Notes:

- N/A
```

## Parents

- [9582a6f317f3641b618437aaf483b46f580007c1](https://git.cafe/gitcafe/zed/commit/9582a6f317f3641b618437aaf483b46f580007c1?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/0d95410634b044262462500cc76b393750b8ac80?format=markdown)
