diff --git a/src/main.rs b/src/main.rs index d1a65ad..d19a1b9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -347,7 +347,12 @@ impl State { fn write_buffer(&mut self, file: OsString) -> Result<()> { self.last_saved = self.buffer.as_ref().clone(); let out = self.buffer.as_ref().bytes().collect::>(); - let mut handle = OpenOptions::new().write(true).open(file)?; + let mut handle = OpenOptions::new() + .create(true) + .truncate(true) + .write(true) + .open(file)?; + handle.write_all(out.as_slice())?; Ok(()) } @@ -356,7 +361,11 @@ impl State { let handle = match self.file.clone() { Some(handle) => handle, None => match args.get(0) { - Some(part) => OsString::from(part), + Some(part) => { + let file = OsString::from(part); + self.file = Some(file.clone()); + file + }, None => { return Err(format!("{}: No file name.", command)); }