
The language::markdown crate had been superceded by markdown::Mardown. After #25117, the only two remaining use-cases were rendering git commit messages (which are arguably not really markdown) and the signature help (which is definitely not markdown). Updated the former to use the new markdown component, and the latter to do syntax highlighting manually. Release Notes: - Allow selecting the commit message in git commits
116 lines
4.5 KiB
Rust
116 lines
4.5 KiB
Rust
use assets::Assets;
|
|
use gpui::{rgb, Application, Entity, KeyBinding, Length, StyleRefinement, WindowOptions};
|
|
use language::{language_settings::AllLanguageSettings, LanguageRegistry};
|
|
use markdown::{Markdown, MarkdownStyle};
|
|
use node_runtime::NodeRuntime;
|
|
use settings::SettingsStore;
|
|
use std::sync::Arc;
|
|
use theme::LoadThemes;
|
|
use ui::div;
|
|
use ui::prelude::*;
|
|
|
|
const MARKDOWN_EXAMPLE: &str = r#"
|
|
this text should be selectable
|
|
|
|
wow so cool
|
|
|
|
## Heading 2
|
|
"#;
|
|
pub fn main() {
|
|
env_logger::init();
|
|
|
|
Application::new().with_assets(Assets).run(|cx| {
|
|
let store = SettingsStore::test(cx);
|
|
cx.set_global(store);
|
|
language::init(cx);
|
|
SettingsStore::update(cx, |store, cx| {
|
|
store.update_user_settings::<AllLanguageSettings>(cx, |_| {});
|
|
});
|
|
cx.bind_keys([KeyBinding::new("cmd-c", markdown::Copy, None)]);
|
|
|
|
let node_runtime = NodeRuntime::unavailable();
|
|
let language_registry = Arc::new(LanguageRegistry::new(cx.background_executor().clone()));
|
|
languages::init(language_registry.clone(), node_runtime, cx);
|
|
theme::init(LoadThemes::JustBase, cx);
|
|
Assets.load_fonts(cx).unwrap();
|
|
|
|
cx.activate(true);
|
|
let _ = cx.open_window(WindowOptions::default(), |_, cx| {
|
|
cx.new(|cx| {
|
|
let markdown_style = MarkdownStyle {
|
|
base_text_style: gpui::TextStyle {
|
|
font_family: "Zed Mono".into(),
|
|
color: cx.theme().colors().text,
|
|
..Default::default()
|
|
},
|
|
code_block: StyleRefinement {
|
|
text: Some(gpui::TextStyleRefinement {
|
|
font_family: Some("Zed Mono".into()),
|
|
background_color: Some(cx.theme().colors().editor_background),
|
|
..Default::default()
|
|
}),
|
|
margin: gpui::EdgesRefinement {
|
|
top: Some(Length::Definite(rems(4.).into())),
|
|
left: Some(Length::Definite(rems(4.).into())),
|
|
right: Some(Length::Definite(rems(4.).into())),
|
|
bottom: Some(Length::Definite(rems(4.).into())),
|
|
},
|
|
..Default::default()
|
|
},
|
|
inline_code: gpui::TextStyleRefinement {
|
|
font_family: Some("Zed Mono".into()),
|
|
background_color: Some(cx.theme().colors().editor_background),
|
|
..Default::default()
|
|
},
|
|
rule_color: Color::Muted.color(cx),
|
|
block_quote_border_color: Color::Muted.color(cx),
|
|
block_quote: gpui::TextStyleRefinement {
|
|
color: Some(Color::Muted.color(cx)),
|
|
..Default::default()
|
|
},
|
|
link: gpui::TextStyleRefinement {
|
|
color: Some(Color::Accent.color(cx)),
|
|
underline: Some(gpui::UnderlineStyle {
|
|
thickness: px(1.),
|
|
color: Some(Color::Accent.color(cx)),
|
|
wavy: false,
|
|
}),
|
|
..Default::default()
|
|
},
|
|
syntax: cx.theme().syntax().clone(),
|
|
selection_background_color: {
|
|
let mut selection = cx.theme().players().local().selection;
|
|
selection.fade_out(0.7);
|
|
selection
|
|
},
|
|
heading: Default::default(),
|
|
};
|
|
let markdown = cx.new(|cx| {
|
|
Markdown::new(MARKDOWN_EXAMPLE.into(), markdown_style, None, None, cx)
|
|
});
|
|
|
|
HelloWorld { markdown }
|
|
})
|
|
});
|
|
});
|
|
}
|
|
struct HelloWorld {
|
|
markdown: Entity<Markdown>,
|
|
}
|
|
|
|
impl Render for HelloWorld {
|
|
fn render(&mut self, _window: &mut Window, _cx: &mut Context<Self>) -> impl IntoElement {
|
|
div()
|
|
.flex()
|
|
.bg(rgb(0x2e7d32))
|
|
.size(Length::Definite(Pixels(700.0).into()))
|
|
.justify_center()
|
|
.items_center()
|
|
.shadow_lg()
|
|
.border_1()
|
|
.border_color(rgb(0x0000ff))
|
|
.text_xl()
|
|
.text_color(rgb(0xffffff))
|
|
.child(div().child(self.markdown.clone()).p_20())
|
|
}
|
|
}
|