Change summary
crates/settings/src/keymap_file.rs | 10 +++++++---
crates/settings_ui/src/keybindings.rs | 5 ++++-
2 files changed, 11 insertions(+), 4 deletions(-)
Detailed changes
@@ -992,13 +992,17 @@ impl KeybindSource {
}
pub fn from_meta(index: KeyBindingMetaIndex) -> Self {
- match index {
+ Self::try_from_meta(index).unwrap()
+ }
+
+ pub fn try_from_meta(index: KeyBindingMetaIndex) -> Result<Self> {
+ Ok(match index {
Self::USER => KeybindSource::User,
Self::BASE => KeybindSource::Base,
Self::DEFAULT => KeybindSource::Default,
Self::VIM => KeybindSource::Vim,
- _ => unreachable!(),
- }
+ _ => anyhow::bail!("Invalid keybind source {:?}", index),
+ })
}
}
@@ -567,7 +567,10 @@ impl KeymapEditor {
let mut string_match_candidates = Vec::new();
for key_binding in key_bindings {
- let source = key_binding.meta().map(settings::KeybindSource::from_meta);
+ let source = key_binding
+ .meta()
+ .map(settings::KeybindSource::try_from_meta)
+ .and_then(|source| source.log_err());
let keystroke_text = ui::text_for_keystrokes(key_binding.keystrokes(), cx);
let ui_key_binding = Some(