settings: Use a derive macro for refine (#38451)

When we refactored settings to not pass JSON blobs around, we ended up
needing
to write *a lot* of code that just merged things (like json merge used
to do).

Use a derive macro to prevent typos in this logic.

Release Notes:

- N/A
This commit is contained in:
Conrad Irwin
2025-09-18 21:13:49 +00:00
committed by GitHub
parent 5f4f0a873e
commit b09764c54a
74 changed files with 1089 additions and 2818 deletions
@@ -16,16 +16,10 @@ pub fn init(cx: &mut App) {
pub struct VimModeSetting(pub bool);
impl Settings for VimModeSetting {
fn from_defaults(content: &SettingsContent, _cx: &mut App) -> Self {
fn from_settings(content: &SettingsContent, _cx: &mut App) -> Self {
Self(content.vim_mode.unwrap())
}
fn refine(&mut self, content: &SettingsContent, _cx: &mut App) {
if let Some(vim_mode) = content.vim_mode {
self.0 = vim_mode;
}
}
fn import_from_vscode(_vscode: &settings::VsCodeSettings, _content: &mut SettingsContent) {
// TODO: could possibly check if any of the `vim.<foo>` keys are set?
}
@@ -34,15 +28,9 @@ impl Settings for VimModeSetting {
pub struct HelixModeSetting(pub bool);
impl Settings for HelixModeSetting {
fn from_defaults(content: &SettingsContent, _cx: &mut App) -> Self {
fn from_settings(content: &SettingsContent, _cx: &mut App) -> Self {
Self(content.helix_mode.unwrap())
}
fn refine(&mut self, content: &SettingsContent, _cx: &mut App) {
if let Some(helix_mode) = content.helix_mode {
self.0 = helix_mode;
}
}
fn import_from_vscode(_vscode: &settings::VsCodeSettings, _current: &mut SettingsContent) {}
}