language_settings: Add whitespace_map setting (#37704)

This setting controls which visible characters are used to render
whitespace when the show_whitespace setting is enabled.

Release Notes:

- Added `whitespace_map` setting to control which visible characters are
used to render whitespace when the `show_whitespace` setting is enabled.

---------

Co-authored-by: Nia Espera <nia@zed.dev>
This commit is contained in:
Ilija Tovilo
2025-09-10 18:19:24 +00:00
committed by GitHub
co-authored by Nia Espera
parent 22e31a0d41
commit b28c979aae
3 changed files with 53 additions and 5 deletions
+17 -4
View File
@@ -9259,11 +9259,21 @@ impl Element for EditorElement {
});
let invisible_symbol_font_size = font_size / 2.;
let whitespace_map = &self
.editor
.read(cx)
.buffer
.read(cx)
.language_settings(cx)
.whitespace_map;
let tab_char = whitespace_map.tab();
let tab_len = tab_char.len();
let tab_invisible = window.text_system().shape_line(
"→".into(),
tab_char,
invisible_symbol_font_size,
&[TextRun {
len: "→".len(),
len: tab_len,
font: self.style.text.font(),
color: cx.theme().colors().editor_invisible,
background_color: None,
@@ -9272,11 +9282,14 @@ impl Element for EditorElement {
}],
None,
);
let space_char = whitespace_map.space();
let space_len = space_char.len();
let space_invisible = window.text_system().shape_line(
"•".into(),
space_char,
invisible_symbol_font_size,
&[TextRun {
len: "•".len(),
len: space_len,
font: self.style.text.font(),
color: cx.theme().colors().editor_invisible,
background_color: None,