A Neovim theme.
Contains the name, appearance, and a map of highlight Lumis.Theme.Style's.
Lumis bundles the most popular themes from the Neovim community,
you can see the full list with Lumis.available_themes/0 and
then fetch one of the bundled themes with Lumis.Theme.get/1.
Or check out all the available themes.
Example
%Lumis.Theme{
name: "github_light",
appearance: :light,
revision: "fe70a27afefa6e10db4a59262d31f259f702fd6a",
highlights: %{
"function.macro" => %Lumis.Theme.Style{
fg: "#6639ba",
bg: nil,
bold: false,
italic: false,
text_decoration: %Lumis.Theme.TextDecoration{
underline: :solid,
strikethrough: false
}
},
...
}
}
Summary
Types
A Neovim theme with name, appearance (:light or :dark), revision, and highlight styles.
Functions
Builds CSS for a Lumis theme.
Builds CSS for a Lumis theme, raising on errors.
Load a theme from a JSON file.
Load a theme from a JSON string.
Get a theme by name.
Types
@type appearance() :: :light | :dark
@type t() :: %Lumis.Theme{ appearance: appearance(), highlights: %{required(String.t()) => Lumis.Theme.Style.t()}, name: String.t(), revision: String.t() }
A Neovim theme with name, appearance (:light or :dark), revision, and highlight styles.
Functions
Builds CSS for a Lumis theme.
Accepts a bundled theme name or a Lumis.Theme struct. Use this with the
:html_linked formatter when you need to embed CSS, scope selectors, or
customize the container code block rule.
Options
:enable_italic(boolean/0) - Whether italic theme styles should be emitted. The default value istrue.:scope(String.t/0) - Parent selector prepended to every generated selector. The default value is"".:container_selector(String.t/0) - Selector used for the container code block rule. Defaults to.lumis. The default value is".lumis".:container_style(list of tuple ofString.t/0,String.t/0values) - Extra{property, value}declarations for the container code block rule. A property that matches one that the theme already sets (color,background-color) replaces that value. The default value is[].
Examples
Lumis.Theme.build_css!("github_dark")Produces CSS shaped like this:
/* github_dark
* revision: ...
*/
.lumis {
color: #e6edf3;
background-color: #0d1117;
}
.l-keyword {
color: #ff7b72;
}Scope the generated stylesheet under a parent selector:
Lumis.Theme.build_css!("github_dark",
scope: ~s(html[data-theme="dark"]),
container_style: [
{"background-color", "var(--code-background)"},
{"border-radius", "0.375rem"}
]
)That produces selectors like:
html[data-theme="dark"] .lumis {
color: #e6edf3;
background-color: var(--code-background);
border-radius: 0.375rem;
}
html[data-theme="dark"] .l-keyword {
color: #ff7b72;
}
Builds CSS for a Lumis theme, raising on errors.
See build_css/2 for options.
Load a theme from a JSON file.
Load a theme from a JSON string.
Get a theme by name.