summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/ed.rs38
1 files changed, 19 insertions, 19 deletions
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<String, &'a str> {
     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<String, &'a str> {
 }
 
 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
 }