From afa74ccfb59739ad3db156e7558bcb6500d6103a Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Sat, 24 Oct 2020 14:33:52 +0300 Subject: [PATCH] compose: add From text entry autocomplete --- src/components/mail/compose.rs | 44 ++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/components/mail/compose.rs b/src/components/mail/compose.rs index 34fc70dce..ba0b96af1 100644 --- a/src/components/mail/compose.rs +++ b/src/components/mail/compose.rs @@ -431,6 +431,50 @@ impl Composer { .collect::>() }), )); + } else if k == "From" { + self.form.push_cl(( + k.into(), + headers[k].to_string().into(), + Box::new(move |c, _term| { + let results: Vec<(String, String)> = c + .accounts + .values() + .map(|acc| { + let addr = if let Some(display_name) = + acc.settings.account.display_name() + { + format!( + "{} <{}>", + display_name, + acc.settings.account.identity() + ) + } else { + acc.settings.account.identity().to_string() + }; + let desc = + match account_settings!(c[acc.hash()].composing.send_mail) { + crate::conf::composing::SendMail::ShellCommand(ref cmd) => { + let mut cmd = cmd.as_str(); + cmd.truncate_at_boundary(10); + format!("{} [exec: {}]", acc.name(), cmd) + } + #[cfg(feature = "smtp")] + crate::conf::composing::SendMail::Smtp(ref inner) => { + let mut hostname = inner.hostname.as_str(); + hostname.truncate_at_boundary(10); + format!("{} [smtp: {}]", acc.name(), hostname) + } + }; + + (addr, desc) + }) + .collect::>(); + results + .into_iter() + .map(|r| AutoCompleteEntry::from(r)) + .collect::>() + }), + )); } else { self.form.push((k.into(), headers[k].to_string().into())); }