Skip to main content

Theme

Struct Theme 

Source
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: Style

Per-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: Style

Per-pane status line style for inactive panes. Default dim + dark-gray foreground so the line is visible but clearly secondary.

§inactive_pane_overlay: Style

Style 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: bool

Whether 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: Style

Style for the vertical-split separator column (│ between side-by-side panes). Default: dark gray foreground, no bg.

§pane_separator_vertical: char

Character drawn in the vertical-split separator column. Default: │ (U+2502, BOX DRAWINGS LIGHT VERTICAL).

§pane_separator_horizontal: char

Character 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: Style

Active pane’s modeline bar base (background only).

§modeline_inactive: Style

Inactive pane’s modeline bar (uniform muted; applied to every span on an inactive pane, no per-role colour).

§modeline_mode: Style

Active-pane foreground for the modal-state label ([NORMAL]).

§modeline_path: Style

Active-pane foreground for the buffer-path segment.

§modeline_position: Style

Active-pane foreground for the cursor line:column segment.

§modeline_lang: Style

Active-pane foreground for the language-label segment.

§modeline_mode_item: Style

Active-pane foreground for mode-contributed items (LSP / diff).

§popup_title: Style

Popup header title (bold accent) — ui.popup.title. Shared with the GPUI peer so the accent is themeable + identical across peers.

§popup_hint: Style

Popup header hint (dim — e.g. “Esc to dismiss”) — ui.popup.hint.

§file_tree_dir_style: Style

Style for directory entries in file-tree and oil buffers.

§file_tree_hidden_style: Style

Style for hidden files (names starting with .).

§file_tree_file_style: Style

Base style for regular file entries.

§nerd_fonts: bool

Whether 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: char

Glyph + 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: char

Warning severity.

§diagnostic_warning_style: Style§diagnostic_info_glyph: char

Information severity.

§diagnostic_info_style: Style§diagnostic_hint_glyph: char

Hint severity.

§diagnostic_hint_style: Style§whitespace_style: Style

Style 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: Style

Style for trailing-whitespace glyphs. Default: red, no modifier – “this shouldn’t be here” without shouting.

§cursor_line_bg: Color

Background 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: Style

Style 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: Style

Style 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: Style

Style for the DEBUG level token. Cyan: distinct from info but not alarming.

§messages_info_style: Style

Style for the INFO level token. Default: terminal- default fg, no modifier — neutral.

§messages_warn_style: Style

Style for the WARN level token. Yellow + bold.

§messages_error_style: Style

Style for the ERROR level token. Red + bold.

§diff_add_sign_style: Style

Glyph 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: Style

Glyph color for the ~ sign in the diff gutter column.

§diff_remove_sign_style: Style

Glyph 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: Style

D.6.f (2026-05-31): glyph colour for the ? sign in the diff gutter — three-way Conflict hunks.

§diff_add_line_bg: Color

Background tint applied to lines added in the current side (D.3.e).

§diff_change_line_bg: Color

Background tint applied to lines changed in the current side (D.3.e).

§code_block_bg: Color

MC.3: full-width background tint for lines inside a fenced/indented code block (syntax.code_block).

§diff_remove_line_bg: Color

D-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: Color

Background 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: Color

D.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: Color

CM.3d (2026-07-22): background tint for compilation file-location lines (whole-line compilation.location bg).

§compilation_location_fg: Color

CM.3d (2026-07-22): link-like foreground for the file-path portion of compilation location lines.

Implementations§

Source§

impl Theme

Source

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§

Source§

impl Clone for Theme

Source§

fn clone(&self) -> Theme

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Theme

Source§

impl Debug for Theme

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Theme

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for Theme

Source§

impl PartialEq for Theme

Source§

fn eq(&self, other: &Theme) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> IntoMaybeUndefined<T> for T

§

fn into_maybe_undefined(self) -> MaybeUndefined<T>

Converts this value into a three-state builder argument.
§

impl<T> IntoOption<T> for T

§

fn into_option(self) -> Option<T>

Converts this value into an optional builder argument.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> Pointee for T

§

type Pointer = u32

§

fn debug( pointer: <T as Pointee>::Pointer, f: &mut Formatter<'_>, ) -> Result<(), Error>

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

§

impl<T> ResetDiscriminant<T> for T
where T: Copy,

§

fn discriminant(&self) -> T

Value based on which equality for the reset will be determined.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more