From b8ad1e7febe48678186c5bf606c6844affb9f324 Mon Sep 17 00:00:00 2001 From: ChristianVisintin Date: Sat, 19 Dec 2020 21:49:53 +0100 Subject: [PATCH] edit file method --- .../filetransfer_activity/session.rs | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/ui/activities/filetransfer_activity/session.rs b/src/ui/activities/filetransfer_activity/session.rs index e22ce39..ba438d4 100644 --- a/src/ui/activities/filetransfer_activity/session.rs +++ b/src/ui/activities/filetransfer_activity/session.rs @@ -761,12 +761,13 @@ impl FileTransferActivity { // Read let mut buff: [u8; 2048] = [0; 2048]; match f.read(&mut buff) { - Ok(_) => { - if content_inspector::inspect(&buff).is_binary() { + Ok(size) => { + if content_inspector::inspect(&buff[0..size]).is_binary() { self.log_and_alert( LogLevel::Error, format!("Could not open file in editor: file is binary"), ); + return; } } Err(err) => { @@ -785,9 +786,29 @@ impl FileTransferActivity { } // Put input mode back to normal let _ = disable_raw_mode(); + // Leave alternate mode + if let Some(ctx) = self.context.as_mut() { + ctx.leave_alternate_screen(); + } // Open editor - if let Err(err) = edit::edit_file(path) { - self.log_and_alert(LogLevel::Error, format!("Could not open editor: {}", err)); + match edit::edit_file(path) { + Ok(_) => self.log( + LogLevel::Info, + format!( + "Changes performed through editor saved to \"{}\"!", + path.display() + ) + .as_str(), + ), + Err(err) => { + self.log_and_alert(LogLevel::Error, format!("Could not open editor: {}", err)) + } + } + if let Some(ctx) = self.context.as_mut() { + // Clear screen + ctx.clear_screen(); + // Enter alternate mode + ctx.enter_alternate_screen(); } // Re-enable raw mode let _ = enable_raw_mode();