From 16fbf516e3b28d19570dd6e93e63b0efb9c249ff Mon Sep 17 00:00:00 2001 From: Ben Morrison Date: Tue, 26 May 2020 20:20:36 -0400 Subject: moved check for val of $EDITOR into ed::call() Also removed some allocations from call() in the form of unnecessary string clones. --- src/ed.rs | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/ed.rs b/src/ed.rs index fa6d43b..0e1c4c8 100644 --- a/src/ed.rs +++ b/src/ed.rs @@ -7,22 +7,6 @@ use chrono::prelude::*; use crate::error; use crate::user; -lazy_static! { - static ref VAR: String = match env::var("EDITOR") { - Ok(ed) => { - if &ed == "" { - "nano".into() - } else { - ed - } - } - Err(err) => { - log::warn!("{:?}", err); - "nano".into() - } - }; -} - fn create_tmp_file<'a>() -> Result { let the_time = Utc::now().to_rfc3339(); let file_name = format!("/tmp/clinte_ed_{}_{}", *user::NAME, the_time); @@ -36,17 +20,33 @@ fn create_tmp_file<'a>() -> Result { } pub fn call() -> String { + // If they don't have $EDITOR set, just default to nano + // instead of assuming vim or emacs. + let editor = match env::var("EDITOR") { + Ok(ed) => { + if &ed == "" { + "nano".into() + } else { + ed + } + } + Err(_) => { + log::warn!("Couldn't get value of $EDITOR, defaulting to nano"); + "nano".into() + } + }; + let tmp_loc = error::helper(create_tmp_file()); error::helper( - process::Command::new(VAR.clone()) - .arg(tmp_loc.clone()) + process::Command::new(editor) + .arg(&tmp_loc) .stdin(process::Stdio::inherit()) .stdout(process::Stdio::inherit()) .output(), ); - let body = error::helper(fs::read_to_string(tmp_loc.clone())); + let body = error::helper(fs::read_to_string(&tmp_loc)); error::helper(fs::remove_file(tmp_loc)); body } -- cgit 1.4.1-2-gfad0