diff options
author | Dan Davison <dandavison7@gmail.com> | 2020-07-18 15:34:43 -0400 |
---|---|---|
committer | Dan Davison <dandavison7@gmail.com> | 2020-07-22 17:57:57 -0400 |
commit | b2257cfae7eacc73e47299d90d9a8d479b3e362c (patch) | |
tree | 56b60ad41ce689042ce64c4793eec35100d8c322 /src/parse.rs | |
parent | 29bf022218f72157e1921412ae6ede598733b6fb (diff) |
Format files and commits as OSC 8 hyperlinks
Closes #257
Diffstat (limited to 'src/parse.rs')
-rw-r--r-- | src/parse.rs | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/src/parse.rs b/src/parse.rs index 6899345b..1e221b45 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -1,8 +1,10 @@ use lazy_static::lazy_static; use regex::Regex; +use std::borrow::Cow; use std::path::Path; use crate::config::Config; +use crate::features; // https://git-scm.com/docs/git-config#Documentation/git-config.txt-diffmnemonicPrefix const DIFF_PREFIXES: [&str; 6] = ["a/", "b/", "c/", "i/", "o/", "w/"]; @@ -67,23 +69,34 @@ pub fn get_file_change_description_from_file_paths( "".to_string() } }; + let format_file = |file| { + if config.hyperlinks { + features::hyperlinks::format_osc8_file_hyperlink(file, None, file, config) + } else { + Cow::from(file) + } + }; match (minus_file, plus_file) { (minus_file, plus_file) if minus_file == plus_file => format!( "{}{}", format_label(&config.file_modified_label), - minus_file + format_file(minus_file) + ), + (minus_file, "/dev/null") => format!( + "{}{}", + format_label(&config.file_removed_label), + format_file(minus_file) + ), + ("/dev/null", plus_file) => format!( + "{}{}", + format_label(&config.file_added_label), + format_file(plus_file) ), - (minus_file, "/dev/null") => { - format!("{}{}", format_label(&config.file_removed_label), minus_file) - } - ("/dev/null", plus_file) => { - format!("{}{}", format_label(&config.file_added_label), plus_file) - } (minus_file, plus_file) => format!( "{}{} ⟶ {}", format_label(&config.file_renamed_label), - minus_file, - plus_file + format_file(minus_file), + format_file(plus_file) ), } } |