aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src/config.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-term/src/config.rs')
-rw-r--r--helix-term/src/config.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/helix-term/src/config.rs b/helix-term/src/config.rs
index bcba8d8e..ace10821 100644
--- a/helix-term/src/config.rs
+++ b/helix-term/src/config.rs
@@ -20,6 +20,8 @@ pub struct Config {
#[serde(deny_unknown_fields)]
pub struct ConfigRaw {
pub theme: Option<String>,
+ #[serde(default)]
+ pub unbind_default_keys: bool,
pub keys: Option<HashMap<Mode, KeyTrie>>,
pub editor: Option<toml::Value>,
}
@@ -66,7 +68,10 @@ impl Config {
local.and_then(|file| toml::from_str(&file).map_err(ConfigLoadError::BadConfig));
let res = match (global_config, local_config) {
(Ok(global), Ok(local)) => {
- let mut keys = keymap::default();
+ let mut keys = match local.unbind_default_keys {
+ true => HashMap::default(),
+ false => keymap::default(),
+ };
if let Some(global_keys) = global.keys {
merge_keys(&mut keys, global_keys)
}
@@ -96,7 +101,10 @@ impl Config {
return Err(ConfigLoadError::BadConfig(err))
}
(Ok(config), Err(_)) | (Err(_), Ok(config)) => {
- let mut keys = keymap::default();
+ let mut keys = match config.unbind_default_keys {
+ true => HashMap::default(),
+ false => keymap::default(),
+ };
if let Some(keymap) = config.keys {
merge_keys(&mut keys, keymap);
}