nu_protocol/config/
ls.rs

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}