Add more preview tab settings and fix janky behavior (#43921)

Closes #41495

Known issues:
- File path links always open as non-preview tabs. Fixing this is not
technically too difficult but requires more invasive changes and so
should be done in a future PR.

Release Notes:

- Fixed strange behavior when reopening closed preview tabs
- Overhauled preview tabs settings:
- Added setting `preview_tabs.enable_preview_from_project_panel`
(default `true`)
- Kept setting `preview_tabs.enable_preview_from_file_finder` (default
`false`)
- Added setting `preview_tabs.enable_preview_from_multibuffer` (default
`true`)
- Added setting
`preview_tabs.enable_preview_multibuffer_from_code_navigation` (default
`false`)
- Added setting `preview_tabs.enable_preview_file_from_code_navigation`
(default `true`)
- Renamed setting `preview_tabs.enable_preview_from_code_navigation` to
`preview_tabs.enable_keep_preview_on_code_navigation` (default `false`)

---------

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Co-authored-by: Cole Miller <cole@zed.dev>
This commit is contained in:
Andrew Farkas
2025-12-03 21:56:39 +00:00
committed by GitHub
co-authored by Smit Barmase Cole Miller
parent 290a1550aa
commit 87976e91cf
14 changed files with 495 additions and 152 deletions
@@ -152,14 +152,31 @@ pub struct PreviewTabsSettingsContent {
///
/// Default: true
pub enabled: Option<bool>,
/// Whether to open tabs in preview mode when opened from the project panel with a single click.
///
/// Default: true
pub enable_preview_from_project_panel: Option<bool>,
/// Whether to open tabs in preview mode when selected from the file finder.
///
/// Default: false
pub enable_preview_from_file_finder: Option<bool>,
/// Whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
/// Whether to open tabs in preview mode when opened from a multibuffer.
///
/// Default: true
pub enable_preview_from_multibuffer: Option<bool>,
/// Whether to open tabs in preview mode when code navigation is used to open a multibuffer.
///
/// Default: false
pub enable_preview_from_code_navigation: Option<bool>,
pub enable_preview_multibuffer_from_code_navigation: Option<bool>,
/// Whether to open tabs in preview mode when code navigation is used to open a single file.
///
/// Default: true
pub enable_preview_file_from_code_navigation: Option<bool>,
/// Whether to keep tabs in preview mode when code navigation is used to navigate away from them.
/// If `enable_preview_file_from_code_navigation` or `enable_preview_multibuffer_from_code_navigation` is also true, the new tab may replace the existing one.
///
/// Default: false
pub enable_keep_preview_on_code_navigation: Option<bool>,
}
#[derive(
+5 -1
View File
@@ -619,9 +619,13 @@ impl VsCodeSettings {
fn preview_tabs_settings_content(&self) -> Option<PreviewTabsSettingsContent> {
skip_default(PreviewTabsSettingsContent {
enabled: self.read_bool("workbench.editor.enablePreview"),
enable_preview_from_project_panel: None,
enable_preview_from_file_finder: self
.read_bool("workbench.editor.enablePreviewFromQuickOpen"),
enable_preview_from_code_navigation: self
enable_preview_from_multibuffer: None,
enable_preview_multibuffer_from_code_navigation: None,
enable_preview_file_from_code_navigation: None,
enable_keep_preview_on_code_navigation: self
.read_bool("workbench.editor.enablePreviewFromCodeNavigation"),
})
}