## Objective Markdown preview appearance settings are split between root theme settings and `markdown_preview`, and Markdown files always open as source editors even when a user primarily wants the rendered preview. ## Solution - Group the Markdown preview font settings under `markdown_preview`, migrate their legacy keys across supported settings scopes, and update defaults, Settings UI, and documentation. - Add `markdown_preview.open_markdown_files_in_preview`, defaulting to false. When enabled, clean Markdown opens are replaced by a rendered preview while preserving dirty editors, temporary-tab behavior, pane activation and focus, targeted navigation, workspace restoration, and the escape back to source. ## Testing - Manually verified on macOS that enabling the setting opens Markdown files as preview-only. - `cargo test -p markdown_preview` (three consecutive runs) - `cargo test -p migrator nest_markdown_preview` - `cargo test -p settings_content` - `cargo check -p markdown -p markdown_preview -p migrator -p settings -p settings_content -p settings_ui -p theme_settings -p workspace` - `./script/clippy -p gpui_apple -p markdown -p markdown_preview -p migrator -p settings -p settings_content -p settings_ui -p theme_settings -p workspace --features gpui_apple/runtime_shaders` - `cargo fmt --all -- --check` - `git diff --check` ## Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content adheres to Zed's UI standards ([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) and [icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md) guidelines) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable ## Recordings https://github.com/user-attachments/assets/032ab36d-f934-4ef7-aa18-53f3955a7df8 https://github.com/user-attachments/assets/dc872265-2fe0-45ac-95eb-ff820d3a8164 Release Notes: - Added a setting to open Markdown files directly in preview mode and grouped Markdown preview settings together.
28 lines
989 B
Rust
28 lines
989 B
Rust
use gpui::Pixels;
|
|
use settings::{IntoGpui, RegisterSetting, Settings};
|
|
|
|
/// The settings for the markdown preview.
|
|
#[derive(Clone, Copy, Debug, Default, RegisterSetting)]
|
|
pub struct MarkdownPreviewSettings {
|
|
/// Whether to automatically open Markdown files in the preview.
|
|
pub open_markdown_files_in_preview: bool,
|
|
/// The maximum width of the rendered markdown content, or `None` to render
|
|
/// content edge to edge.
|
|
pub max_width: Option<Pixels>,
|
|
}
|
|
|
|
impl Settings for MarkdownPreviewSettings {
|
|
fn from_settings(content: &settings::SettingsContent) -> Self {
|
|
let content = content.markdown_preview.clone().unwrap_or_default();
|
|
let max_width = if content.limit_content_width.unwrap_or(true) {
|
|
content.max_width.map(IntoGpui::into_gpui)
|
|
} else {
|
|
None
|
|
};
|
|
Self {
|
|
open_markdown_files_in_preview: content.open_markdown_files_in_preview.unwrap_or(false),
|
|
max_width,
|
|
}
|
|
}
|
|
}
|