pub struct Theme {Show 49 fields
pub pane_status_active: Style,
pub pane_status_inactive: Style,
pub inactive_pane_overlay: Style,
pub dim_inactive_panes: bool,
pub pane_separator: Style,
pub pane_separator_vertical: char,
pub pane_separator_horizontal: char,
pub modeline_active: Style,
pub modeline_inactive: Style,
pub modeline_mode: Style,
pub modeline_path: Style,
pub modeline_position: Style,
pub modeline_lang: Style,
pub modeline_mode_item: Style,
pub popup_title: Style,
pub popup_hint: Style,
pub file_tree_dir_style: Style,
pub file_tree_hidden_style: Style,
pub file_tree_file_style: Style,
pub nerd_fonts: bool,
pub diagnostic_error_glyph: char,
pub diagnostic_error_style: Style,
pub diagnostic_warning_glyph: char,
pub diagnostic_warning_style: Style,
pub diagnostic_info_glyph: char,
pub diagnostic_info_style: Style,
pub diagnostic_hint_glyph: char,
pub diagnostic_hint_style: Style,
pub whitespace_style: Style,
pub whitespace_trailing_style: Style,
pub cursor_line_bg: Color,
pub messages_timestamp_style: Style,
pub messages_trace_style: Style,
pub messages_debug_style: Style,
pub messages_info_style: Style,
pub messages_warn_style: Style,
pub messages_error_style: Style,
pub diff_add_sign_style: Style,
pub diff_change_sign_style: Style,
pub diff_remove_sign_style: Style,
pub diff_conflict_sign_style: Style,
pub diff_add_line_bg: Color,
pub diff_change_line_bg: Color,
pub code_block_bg: Color,
pub diff_remove_line_bg: Color,
pub diff_deletion_block_bg: Color,
pub diff_conflict_line_bg: Color,
pub compilation_location_bg: Color,
pub compilation_location_fg: Color,
}Expand description
One full UI theme. Cheap to clone (Style + char fields are all
Copy); the App holds it directly and :set ui.* writes
through.
Fields§
§pane_status_active: StylePer-pane status line style for the active pane. Default reverse-video + bold so focus is unambiguous regardless of the user’s terminal palette.
pane_status_inactive: StylePer-pane status line style for inactive panes. Default dim + dark-gray foreground so the line is visible but clearly secondary.
inactive_pane_overlay: StyleStyle applied to every span in an inactive document pane
when Self::dim_inactive_panes is true. Composes with
the existing syntax-highlight style. Default: DIM
modifier only – preserves color, just reduces intensity.
dim_inactive_panes: boolWhether inactive panes get Self::inactive_pane_overlay
applied on top of their syntax highlights. Off → inactive
panes look identical to active (just no terminal cursor).
pane_separator: StyleStyle for the vertical-split separator column (│ between
side-by-side panes). Default: dark gray foreground, no bg.
pane_separator_vertical: charCharacter drawn in the vertical-split separator column.
Default: │ (U+2502, BOX DRAWINGS LIGHT VERTICAL).
pane_separator_horizontal: charCharacter drawn in the horizontal-split separator row.
Default: ─ (U+2500). Currently unused – horizontal
splits are visually delimited by the per-pane status line
at the bottom of the upper pane. Reserved for layouts
that disable per-pane status lines.
modeline_active: StyleActive pane’s modeline bar base (background only).
modeline_inactive: StyleInactive pane’s modeline bar (uniform muted; applied to every span on an inactive pane, no per-role colour).
modeline_mode: StyleActive-pane foreground for the modal-state label ([NORMAL]).
modeline_path: StyleActive-pane foreground for the buffer-path segment.
modeline_position: StyleActive-pane foreground for the cursor line:column segment.
modeline_lang: StyleActive-pane foreground for the language-label segment.
modeline_mode_item: StyleActive-pane foreground for mode-contributed items (LSP / diff).
popup_title: StylePopup header title (bold accent) — ui.popup.title. Shared with
the GPUI peer so the accent is themeable + identical across peers.
popup_hint: StylePopup header hint (dim — e.g. “Esc to dismiss”) — ui.popup.hint.
file_tree_dir_style: StyleStyle for directory entries in file-tree and oil buffers.
Style for hidden files (names starting with .).
file_tree_file_style: StyleBase style for regular file entries.
nerd_fonts: boolWhether to render file-type icons as Nerd Fonts v3 glyphs.
When false, the icons module emits the BMP-block fallback
palette (◆ ≡ ◇ ■ ♪ ▶ ·) that works in every modern monospace
font. Synced from the ui.nerd_fonts typed option in
App::sync_theme_from_config.
diagnostic_error_glyph: charGlyph + color for an Error-severity diagnostic. Rendered in the gutter’s severity column; also drives the inline underline color when an error range overlaps text.
diagnostic_error_style: Style§diagnostic_warning_glyph: charWarning severity.
diagnostic_warning_style: Style§diagnostic_info_glyph: charInformation severity.
diagnostic_info_style: Style§diagnostic_hint_glyph: charHint severity.
diagnostic_hint_style: Style§whitespace_style: StyleStyle applied to “neutral” whitespace glyphs (tab,
leading, mid-text space, EOL). Default: dim dark-gray –
visible enough to read structure, quiet enough to not
fight the syntax highlight. Trailing whitespace gets a
louder style (Self::whitespace_trailing_style); they
split because trailing is a lint signal where the others
are structural.
whitespace_trailing_style: StyleStyle for trailing-whitespace glyphs. Default: red, no modifier – “this shouldn’t be here” without shouting.
cursor_line_bg: ColorBackground applied to the cursor’s row when
current-line-highlight-mode is active (M.7.2 minor /
:set cursorline). Default: a subtle dark gray
(Color::Indexed(236) – the conventional darker-than-
background row tint in 256-color palettes). Active pane
only; selection bg wins per-cell when the two overlap.
messages_timestamp_style: StyleStyle for the timestamp prefix (HH:MM:SS.mmm) at the
start of every *messages* row. Dim by default so the
time doesn’t compete with the level + body for
attention.
messages_trace_style: StyleStyle for the TRACE level token. Dim — trace-class
records are firehose-y; the user opts in via
messages.filter and shouldn’t have them shout.
messages_debug_style: StyleStyle for the DEBUG level token. Cyan: distinct from
info but not alarming.
messages_info_style: StyleStyle for the INFO level token. Default: terminal-
default fg, no modifier — neutral.
messages_warn_style: StyleStyle for the WARN level token. Yellow + bold.
messages_error_style: StyleStyle for the ERROR level token. Red + bold.
diff_add_sign_style: StyleGlyph color for the + sign in the diff gutter column
(D.3.d.1). The glyph itself is hardcoded +; this style
supplies its colour.
diff_change_sign_style: StyleGlyph color for the ~ sign in the diff gutter column.
diff_remove_sign_style: StyleGlyph color for the - sign in the diff gutter column.
D.3.d.0 doesn’t currently emit Remove on the current
side (deletion blocks surface removes), but the entry
is reserved for future renderers.
diff_conflict_sign_style: StyleD.6.f (2026-05-31): glyph colour for the ? sign in
the diff gutter — three-way Conflict hunks.
diff_add_line_bg: ColorBackground tint applied to lines added in the current side (D.3.e).
diff_change_line_bg: ColorBackground tint applied to lines changed in the current side (D.3.e).
code_block_bg: ColorMC.3: full-width background tint for lines inside a fenced/indented
code block (syntax.code_block).
diff_remove_line_bg: ColorD-fix.3b: background tint for lines removed on the baseline (left) side of a side-by-side diff. Reuses the deletion-block palette role (red).
diff_deletion_block_bg: ColorBackground tint applied to deletion-block virtual rows (D.3.b.1 / D.3.b.2). Sits behind the baseline-text cells in the deletion block.
diff_conflict_line_bg: ColorD.6.f (2026-05-31): background tint for three-way conflict regions. Visually distinct from Add/Change/Remove tints so users spot conflicts at a glance even when the gutter glyph is off-screen.
compilation_location_bg: ColorCM.3d (2026-07-22): background tint for compilation
file-location lines (whole-line compilation.location bg).
compilation_location_fg: ColorCM.3d (2026-07-22): link-like foreground for the file-path portion of compilation location lines.
Implementations§
Source§impl Theme
impl Theme
Sourcepub fn modeline_style(&self, role: Option<&str>, is_active: bool) -> Style
pub fn modeline_style(&self, role: Option<&str>, is_active: bool) -> Style
Resolve a modeline span’s style from its ModelineRole and the
pane’s active state (ML.1b). Inactive panes render uniformly muted
(the modeline.inactive bar); active panes compose the per-role
foreground over the modeline.active bar background. Unknown roles
and padding (None) get the bar base only — so a plugin’s
not-yet-themed role still sits on the bar rather than vanishing.
Trait Implementations§
impl Copy for Theme
impl Eq for Theme
impl StructuralPartialEq for Theme
Auto Trait Implementations§
impl Freeze for Theme
impl RefUnwindSafe for Theme
impl Send for Theme
impl Sync for Theme
impl Unpin for Theme
impl UnsafeUnpin for Theme
impl UnwindSafe for Theme
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more