diff --git a/CHANGELOG.md b/CHANGELOG.md index 13a03ac..7849c31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Config option `signature-delimiter` to customize the signature delimiter (default to `-- \n`) [[#114](https://github.com/soywod/himalaya/pull/114)] + ### Fixed - New/reply/forward from Vim plugin since Tpl refactor [#176] diff --git a/src/config/model.rs b/src/config/model.rs index b25647b..5cfe717 100644 --- a/src/config/model.rs +++ b/src/config/model.rs @@ -26,6 +26,7 @@ pub struct Account { // Override pub name: Option, pub downloads_dir: Option, + pub signature_delimiter: Option, pub signature: Option, pub default_page_size: Option, pub watch_cmds: Option>, @@ -114,6 +115,7 @@ impl Default for Account { Self { name: None, downloads_dir: None, + signature_delimiter: None, signature: None, default_page_size: None, default: None, @@ -143,6 +145,7 @@ pub struct Config { pub name: String, pub downloads_dir: Option, pub notify_cmd: Option, + pub signature_delimiter: Option, pub signature: Option, pub default_page_size: Option, pub watch_cmds: Option>, @@ -251,6 +254,12 @@ impl Config { } pub fn signature(&self, account: &Account) -> Option { + let default_sig_delim = String::from("-- \n"); + let sig_delim = account + .signature_delimiter + .as_ref() + .or_else(|| self.signature_delimiter.as_ref()) + .unwrap_or(&default_sig_delim); let sig = account .signature .as_ref() @@ -258,6 +267,7 @@ impl Config { sig.and_then(|sig| fs::read_to_string(sig).ok()) .or_else(|| sig.map(|sig| sig.to_owned())) + .map(|sig| String::new() + sig_delim + sig.as_ref()) } pub fn default_page_size(&self, account: &Account) -> usize { @@ -297,6 +307,7 @@ impl Default for Config { name: String::new(), downloads_dir: None, notify_cmd: None, + signature_delimiter: None, signature: None, default_page_size: None, watch_cmds: None, diff --git a/src/msg/tpl/model.rs b/src/msg/tpl/model.rs index 0b506f1..ea1ba7c 100644 --- a/src/msg/tpl/model.rs +++ b/src/msg/tpl/model.rs @@ -319,7 +319,7 @@ mod tests { let account = Account { name: Some(String::from("Test")), email: String::from("test@localhost"), - signature: Some(String::from("-- \nCordialement,")), + signature: Some(String::from("Cordialement,")), ..Account::default() }; let config = Config { @@ -374,7 +374,8 @@ mod tests { let account = Account { name: Some(String::from("Test")), email: String::from("test@localhost"), - signature: Some(String::from("-- \nCordialement,")), + signature_delimiter: Some(String::from("~~\n")), + signature: Some(String::from("Cordialement,")), ..Account::default() }; let config = Config { @@ -394,7 +395,7 @@ mod tests { let tpl = Tpl::reply(&ctx, &parsed_mail); assert_eq!( - "From: Test \nTo: Sender \nSubject: Re: Test\n\n>Hello, world!\n\n-- \nCordialement,", + "From: Test \nTo: Sender \nSubject: Re: Test\n\n>Hello, world!\n\n~~\nCordialement,", tpl.to_string() ); } @@ -446,7 +447,7 @@ Subject: Re: Test let account = Account { name: Some(String::from("Test")), email: String::from("test@localhost"), - signature: Some(String::from("-- \nCordialement,")), + signature: Some(String::from("Cordialement,")), ..Account::default() }; let config = Config { @@ -505,7 +506,7 @@ Subject: Re: Test let account = Account { name: Some(String::from("Test")), email: String::from("test@localhost"), - signature: Some(String::from("-- \nCordialement,")), + signature: Some(String::from("Cordialement,")), ..Account::default() }; let config = Config { diff --git a/tests/imap_test.rs b/tests/imap_test.rs index bee0664..fbbb6b8 100644 --- a/tests/imap_test.rs +++ b/tests/imap_test.rs @@ -8,6 +8,7 @@ fn get_account(addr: &str) -> Account { Account { name: None, downloads_dir: None, + signature_delimiter: None, signature: None, default_page_size: None, default: Some(true),