Settings/keymap backup path next to files + update notification messages (#24517)

Before:


![image](https://github.com/user-attachments/assets/5b7d8677-b0db-4a66-ac30-e4751ba4182d)

After:


![image](https://github.com/user-attachments/assets/94743bc2-2902-43a3-8d6e-e0e0e6e469ec)

Release Notes:

- N/A
This commit is contained in:
Michael Sloan 2025-02-09 16:51:37 -07:00 committed by GitHub
parent cf74d653bd
commit 1a133ab9d8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 116 additions and 62 deletions

View file

@ -588,24 +588,24 @@ impl KeymapFile {
let Some(new_text) = migrate_keymap(&old_text) else {
return Ok(());
};
let initial_path = paths::keymap_file().as_path();
if fs.is_file(initial_path).await {
let backup_path = paths::home_dir().join(".zed_keymap_backup");
fs.atomic_write(backup_path, old_text)
let keymap_path = paths::keymap_file().as_path();
if fs.is_file(keymap_path).await {
fs.atomic_write(paths::keymap_backup_file().to_path_buf(), old_text)
.await
.with_context(|| {
"Failed to create settings backup in home directory".to_string()
})?;
let resolved_path = fs.canonicalize(initial_path).await.with_context(|| {
format!("Failed to canonicalize keymap path {:?}", initial_path)
})?;
let resolved_path = fs
.canonicalize(keymap_path)
.await
.with_context(|| format!("Failed to canonicalize keymap path {:?}", keymap_path))?;
fs.atomic_write(resolved_path.clone(), new_text)
.await
.with_context(|| format!("Failed to write keymap to file {:?}", resolved_path))?;
} else {
fs.atomic_write(initial_path.to_path_buf(), new_text)
fs.atomic_write(keymap_path.to_path_buf(), new_text)
.await
.with_context(|| format!("Failed to write keymap to file {:?}", initial_path))?;
.with_context(|| format!("Failed to write keymap to file {:?}", keymap_path))?;
}
Ok(())

View file

@ -415,11 +415,11 @@ impl SettingsStore {
let new_text = cx.read_global(|store: &SettingsStore, cx| {
store.new_text_for_update::<T>(old_text, |content| update(content, cx))
})?;
let initial_path = paths::settings_file().as_path();
if fs.is_file(initial_path).await {
let settings_path = paths::settings_file().as_path();
if fs.is_file(settings_path).await {
let resolved_path =
fs.canonicalize(initial_path).await.with_context(|| {
format!("Failed to canonicalize settings path {:?}", initial_path)
fs.canonicalize(settings_path).await.with_context(|| {
format!("Failed to canonicalize settings path {:?}", settings_path)
})?;
fs.atomic_write(resolved_path.clone(), new_text)
@ -428,10 +428,10 @@ impl SettingsStore {
format!("Failed to write settings to file {:?}", resolved_path)
})?;
} else {
fs.atomic_write(initial_path.to_path_buf(), new_text)
fs.atomic_write(settings_path.to_path_buf(), new_text)
.await
.with_context(|| {
format!("Failed to write settings to file {:?}", initial_path)
format!("Failed to write settings to file {:?}", settings_path)
})?;
}
@ -1011,17 +1011,16 @@ impl SettingsStore {
let Some(new_text) = migrate_settings(&old_text) else {
return anyhow::Ok(());
};
let initial_path = paths::settings_file().as_path();
if fs.is_file(initial_path).await {
let backup_path = paths::home_dir().join(".zed_settings_backup");
fs.atomic_write(backup_path, old_text)
let settings_path = paths::settings_file().as_path();
if fs.is_file(settings_path).await {
fs.atomic_write(paths::settings_backup_file().to_path_buf(), old_text)
.await
.with_context(|| {
"Failed to create settings backup in home directory".to_string()
})?;
let resolved_path =
fs.canonicalize(initial_path).await.with_context(|| {
format!("Failed to canonicalize settings path {:?}", initial_path)
fs.canonicalize(settings_path).await.with_context(|| {
format!("Failed to canonicalize settings path {:?}", settings_path)
})?;
fs.atomic_write(resolved_path.clone(), new_text)
.await
@ -1029,10 +1028,10 @@ impl SettingsStore {
format!("Failed to write settings to file {:?}", resolved_path)
})?;
} else {
fs.atomic_write(initial_path.to_path_buf(), new_text)
fs.atomic_write(settings_path.to_path_buf(), new_text)
.await
.with_context(|| {
format!("Failed to write settings to file {:?}", initial_path)
format!("Failed to write settings to file {:?}", settings_path)
})?;
}
anyhow::Ok(())