1use super::prelude::*;
2use crate as nu_protocol;
3
4#[derive(Clone, Copy, Debug, IntoValue, PartialEq, Eq, Serialize, Deserialize)]
5pub struct LsConfig {
6 pub use_ls_colors: bool,
7 pub clickable_links: bool,
8}
9
10impl Default for LsConfig {
11 fn default() -> Self {
12 Self {
13 use_ls_colors: true,
14 clickable_links: true,
15 }
16 }
17}
18
19impl UpdateFromValue for LsConfig {
20 fn update<'a>(
21 &mut self,
22 value: &'a Value,
23 path: &mut ConfigPath<'a>,
24 errors: &mut ConfigErrors,
25 ) {
26 let Value::Record { val: record, .. } = value else {
27 errors.type_mismatch(path, Type::record(), value);
28 return;
29 };
30
31 for (col, val) in record.iter() {
32 let path = &mut path.push(col);
33 match col.as_str() {
34 "use_ls_colors" => self.use_ls_colors.update(val, path, errors),
35 "clickable_links" => self.clickable_links.update(val, path, errors),
36 _ => errors.unknown_option(path, val),
37 }
38 }
39 }
40}