on 2158366 help sign in
helix/helix-term/src/config.rs
53 lines 1.4 kB history raw
1use serde::Deserialize;
3use crate::keymap::Keymaps;
5#[derive(Debug, Default, Clone, PartialEq, Deserialize)]
6pub struct Config {
7 pub theme: Option<String>,
8 #[serde(default)]
9 pub lsp: LspConfig,
10 #[serde(default)]
11 pub keys: Keymaps,
12 #[serde(default)]
13 pub editor: helix_view::editor::Config,
16#[derive(Debug, Default, Clone, PartialEq, Deserialize)]
17#[serde(rename_all = "kebab-case")]
18pub struct LspConfig {
19 pub display_messages: bool,
22#[test]
23fn parsing_keymaps_config_file() {
24 use crate::keymap;
25 use crate::keymap::Keymap;
26 use helix_core::hashmap;
27 use helix_view::document::Mode;
29 let sample_keymaps = r#"
30 [keys.insert]
31 y = "move_line_down"
32 S-C-a = "delete_selection"
34 [keys.normal]
35 A-F12 = "move_next_word_end"
36 "#;
38 assert_eq!(
39 toml::from_str::<Config>(sample_keymaps).unwrap(),
40 Config {
41 keys: Keymaps(hashmap! {
42 Mode::Insert => Keymap::new(keymap!({ "Insert mode"
43 "y" => move_line_down,
44 "S-C-a" => delete_selection,
45 })),
46 Mode::Normal => Keymap::new(keymap!({ "Normal mode"
47 "A-F12" => move_next_word_end,
48 })),
49 }),
50 ..Default::default()
51 }
52 );