on master help sign in
Support XDG_CONFIG_HOME git config files
commit31acbe20d38d33b442a3ee0abf785b85d028f91f authorAhmed El Gabri <ahmed@gabri.me> dateWed 23 Sep 2020, 21:08 (6 years ago) parentfd52c01
1 file changed+54
src/syntax_mapping.rs+54
src/syntax_mapping.rs+54
@@ -103,6 +103,43 @@ impl<'a> SyntaxMapping<'a> {
103103 .insert("*.hook", MappingTarget::MapTo("INI"))
104104 .unwrap();
105105
106+ if let Some(xdg_config_home) = std::env::var_os("XDG_CONFIG_HOME") {
107+ let git_config_path = Path::new(&xdg_config_home).join("git");
108+
109+ mapping
110+ .insert(
111+ &git_config_path
112+ .join("config")
113+ .into_os_string()
114+ .to_str()
115+ .unwrap(),
116+ MappingTarget::MapTo("Git Config"),
117+ )
118+ .unwrap();
119+
120+ mapping
121+ .insert(
122+ &git_config_path
123+ .join("ignore")
124+ .into_os_string()
125+ .to_str()
126+ .unwrap(),
127+ MappingTarget::MapTo("Git Ignore"),
128+ )
129+ .unwrap();
130+
131+ mapping
132+ .insert(
133+ &git_config_path
134+ .join("attributes")
135+ .into_os_string()
136+ .to_str()
137+ .unwrap(),
138+ MappingTarget::MapTo("Git Attributes"),
139+ )
140+ .unwrap();
141+ }
142+
106143 mapping
107144 }
108145
@@ -155,6 +192,23 @@ fn basic() {
155192 );
156193}
157194
195+#[test]
196+fn git_xdg_config_home() {
197+ use assert_cmd::Command;
198+ let mut cmd = Command::cargo_bin("bat").unwrap();
199+ let mut map = SyntaxMapping::builtin();
200+
201+ cmd.env("XDG_CONFIG_HOME", "/foo/bar");
202+
203+ map.insert("/foo/bar/git/config", MappingTarget::MapTo("Git Config"))
204+ .ok();
205+
206+ assert_eq!(
207+ map.get_syntax_for("/foo/bar/git/config"),
208+ Some(MappingTarget::MapTo("Git Config"))
209+ );
210+}
211+
158212#[test]
159213fn user_can_override_builtin_mappings() {
160214 let mut map = SyntaxMapping::builtin();