Split diagnostics markdown style out (#29637)

Closes #29572

Release Notes:

- Fixed paragraph spacing in git commit messages
This commit is contained in:
Conrad Irwin 2025-04-29 22:08:06 -06:00 committed by GitHub
parent c8685dc90f
commit 747a029487
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 66 additions and 14 deletions

View file

@ -3,7 +3,7 @@ use std::{ops::Range, sync::Arc};
use editor::{ use editor::{
Anchor, Editor, EditorSnapshot, ToOffset, Anchor, Editor, EditorSnapshot, ToOffset,
display_map::{BlockContext, BlockPlacement, BlockProperties, BlockStyle}, display_map::{BlockContext, BlockPlacement, BlockProperties, BlockStyle},
hover_markdown_style, hover_popover::diagnostics_markdown_style,
scroll::Autoscroll, scroll::Autoscroll,
}; };
use gpui::{AppContext, Entity, Focusable, WeakEntity}; use gpui::{AppContext, Entity, Focusable, WeakEntity};
@ -215,16 +215,19 @@ impl DiagnosticBlock {
.border_color(border_color) .border_color(border_color)
.max_w(max_width) .max_w(max_width)
.child( .child(
MarkdownElement::new(self.markdown.clone(), hover_markdown_style(bcx.window, cx)) MarkdownElement::new(
.on_url_click({ self.markdown.clone(),
move |link, window, cx| { diagnostics_markdown_style(bcx.window, cx),
editor )
.update(cx, |editor, cx| { .on_url_click({
Self::open_link(editor, &diagnostics_editor, link, window, cx) move |link, window, cx| {
}) editor
.ok(); .update(cx, |editor, cx| {
} Self::open_link(editor, &diagnostics_editor, link, window, cx)
}), })
.ok();
}
}),
) )
.into_any_element() .into_any_element()
} }

View file

@ -23,6 +23,7 @@ use language::{
Bias, Buffer, BufferRow, BufferSnapshot, DiagnosticEntry, Point, ToTreeSitterPoint, Bias, Buffer, BufferRow, BufferSnapshot, DiagnosticEntry, Point, ToTreeSitterPoint,
}; };
use lsp::DiagnosticSeverity; use lsp::DiagnosticSeverity;
use project::{DiagnosticSummary, Project, ProjectPath, project_settings::ProjectSettings}; use project::{DiagnosticSummary, Project, ProjectPath, project_settings::ProjectSettings};
use settings::Settings; use settings::Settings;
use std::{ use std::{
@ -521,7 +522,7 @@ impl ProjectDiagnosticsEditor {
markdown::MarkdownElement::rendered_text( markdown::MarkdownElement::rendered_text(
markdown.clone(), markdown.clone(),
cx, cx,
editor::hover_markdown_style, editor::hover_popover::diagnostics_markdown_style,
) )
}, },
); );

View file

@ -622,6 +622,55 @@ pub fn hover_markdown_style(window: &Window, cx: &App) -> MarkdownStyle {
let buffer_font_family = settings.buffer_font.family.clone(); let buffer_font_family = settings.buffer_font.family.clone();
let buffer_font_fallbacks = settings.buffer_font.fallbacks.clone(); let buffer_font_fallbacks = settings.buffer_font.fallbacks.clone();
let mut base_text_style = window.text_style();
base_text_style.refine(&TextStyleRefinement {
font_family: Some(ui_font_family.clone()),
font_fallbacks: ui_font_fallbacks,
color: Some(cx.theme().colors().editor_foreground),
..Default::default()
});
MarkdownStyle {
base_text_style,
code_block: StyleRefinement::default().my(rems(1.)).font_buffer(cx),
inline_code: TextStyleRefinement {
background_color: Some(cx.theme().colors().background),
font_family: Some(buffer_font_family),
font_fallbacks: buffer_font_fallbacks,
..Default::default()
},
rule_color: cx.theme().colors().border,
block_quote_border_color: Color::Muted.color(cx),
block_quote: TextStyleRefinement {
color: Some(Color::Muted.color(cx)),
..Default::default()
},
link: TextStyleRefinement {
color: Some(cx.theme().colors().editor_foreground),
underline: Some(gpui::UnderlineStyle {
thickness: px(1.),
color: Some(cx.theme().colors().editor_foreground),
wavy: false,
}),
..Default::default()
},
syntax: cx.theme().syntax().clone(),
selection_background_color: { cx.theme().players().local().selection },
heading: StyleRefinement::default()
.font_weight(FontWeight::BOLD)
.text_base()
.mt(rems(1.))
.mb_0(),
..Default::default()
}
}
pub fn diagnostics_markdown_style(window: &Window, cx: &App) -> MarkdownStyle {
let settings = ThemeSettings::get_global(cx);
let ui_font_family = settings.ui_font.family.clone();
let ui_font_fallbacks = settings.ui_font.fallbacks.clone();
let buffer_font_family = settings.buffer_font.family.clone();
let buffer_font_fallbacks = settings.buffer_font.fallbacks.clone();
let mut base_text_style = window.text_style(); let mut base_text_style = window.text_style();
base_text_style.refine(&TextStyleRefinement { base_text_style.refine(&TextStyleRefinement {
font_family: Some(ui_font_family.clone()), font_family: Some(ui_font_family.clone()),
@ -659,7 +708,6 @@ pub fn hover_markdown_style(window: &Window, cx: &App) -> MarkdownStyle {
heading: StyleRefinement::default() heading: StyleRefinement::default()
.font_weight(FontWeight::BOLD) .font_weight(FontWeight::BOLD)
.text_base() .text_base()
.mt(rems(1.))
.mb_0(), .mb_0(),
..Default::default() ..Default::default()
} }
@ -951,7 +999,7 @@ impl DiagnosticPopover {
.child( .child(
MarkdownElement::new( MarkdownElement::new(
self.markdown.clone(), self.markdown.clone(),
hover_markdown_style(window, cx), diagnostics_markdown_style(window, cx),
) )
.on_url_click(move |link, window, cx| { .on_url_click(move |link, window, cx| {
if let Some(renderer) = GlobalDiagnosticRenderer::global(cx) { if let Some(renderer) = GlobalDiagnosticRenderer::global(cx) {