diff options
author | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2018-12-22 22:33:31 -0500 |
---|---|---|
committer | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2018-12-22 22:33:31 -0500 |
commit | bace975a6ba24e46eea04ebe86fbb97e15e0bc04 (patch) | |
tree | b8b3c450edb12cf0ea7c42d47d7234a186eb7a97 /src/main.rs | |
parent | 118630f5d4451fcaa3fb85fcbed087765b2c2a9a (diff) |
add preliminary support for keymapping configuration
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index 0b54d25..74670cf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,8 +9,9 @@ use std::fs; mod joshuto; -const PROGRAM_NAME : &str = "joshuto"; -const CONFIG_FILE : &str = "joshuto.toml"; +const PROGRAM_NAME: &str = "joshuto"; +const CONFIG_FILE: &str = "joshuto.toml"; +const KEYMAP_FILE: &str = "keymap.toml"; fn read_config() -> Option<joshuto::config::JoshutoRawConfig> { @@ -50,15 +51,54 @@ fn get_config() -> joshuto::config::JoshutoConfig } } +fn read_keymaps() -> Option<joshuto::keymap::JoshutoRawKeymaps> +{ + let dirs = xdg::BaseDirectories::with_profile(PROGRAM_NAME, "").unwrap(); + + let config_path = dirs.find_config_file(KEYMAP_FILE)?; + println!("config_path: {:?}", config_path); + match fs::read_to_string(&config_path) { + Ok(config_contents) => { + match toml::from_str(&config_contents) { + Ok(config) => { + println!("rawconfig:\n{:?}", config); + Some(config) + }, + Err(e) => { + eprintln!("{}", e); + None + }, + } + }, + Err(e) => { + eprintln!("{}", e); + None + }, + } +} + +fn get_keymap() -> joshuto::keymap::JoshutoKeymaps +{ + match read_keymaps() { + Some(config) => { + config.flatten() + } + None => { + joshuto::keymap::JoshutoKeymaps::new() + } + } +} + fn main() { let args: Vec<String> = env::args().collect(); - println!("args: {:?}", args); let config = get_config(); - println!("config:\n{:#?}", config); + let keymap = get_keymap(); + println!("keymap:\n{:#?}", keymap); + joshuto::run(config); } |