diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/fail.rs | 7 | ||||
-rw-r--r-- | src/file_browser.rs | 94 | ||||
-rw-r--r-- | src/mediaview.rs | 92 | ||||
-rw-r--r-- | src/preview.rs | 20 | ||||
-rw-r--r-- | src/proclist.rs | 33 | ||||
-rw-r--r-- | src/quick_actions.rs | 11 | ||||
-rw-r--r-- | src/term.rs | 23 | ||||
-rw-r--r-- | src/widget.rs | 40 |
8 files changed, 183 insertions, 137 deletions
diff --git a/src/fail.rs b/src/fail.rs index 519de19..503c766 100644 --- a/src/fail.rs +++ b/src/fail.rs @@ -5,9 +5,10 @@ use failure::Fail; use termion::event::Key; +use parking_lot::Mutex; use std::path::PathBuf; -use std::sync::{Arc, Mutex}; +use std::sync::Arc; use crate::foldview::LogEntry; use crate::mediaview::MediaError; @@ -191,12 +192,12 @@ lazy_static! { } pub fn get_logs() -> HResult<Vec<LogEntry>> { - let logs = LOG.lock()?.drain(..).collect(); + let logs = LOG.lock().drain(..).collect(); Ok(logs) } pub fn put_log<L: Into<LogEntry>>(log: L) -> HResult<()> { - LOG.lock()?.push(log.into()); + LOG.lock().push(log.into()); Ok(()) } diff --git a/src/file_browser.rs b/src/file_browser.rs index f3cec19..1ff263a 100644 --- a/src/file_browser.rs +++ b/src/file_browser.rs @@ -1,10 +1,12 @@ use termion::event::Key; +use parking_lot::{Mutex, RwLock}; + use pathbuftools::PathBufTools; use osstrtools::OsStrTools; use async_value::Stale; use std::io::Write; -use std::sync::{Arc, Mutex, RwLock}; +use std::sync::Arc; use std::path::PathBuf; use std::ffi::OsString; use std::os::unix::ffi::OsStringExt; @@ -193,8 +195,15 @@ impl Tabbable for TabView<FileBrowser> { dirs }); - self.active_tab_mut_().fs_cache.watch_only(open_dirs).log(); - self.active_tab_mut_().fs_stat.write()?.refresh().log(); + self.active_tab_mut_() + .fs_cache + .watch_only(open_dirs) + .log(); + self.active_tab_mut_() + .fs_stat + .write() + .refresh() + .log(); Ok(()) } @@ -461,7 +470,9 @@ impl FileBrowser { tab_paths: None }; - self.proc_view.lock()?.run_proc_raw(cmd)?; + self.proc_view + .lock() + .run_proc_raw(cmd)?; Ok(()) } @@ -618,10 +629,15 @@ impl FileBrowser { None => &self.cwd }.path.to_string_lossy().to_string(); - self.bookmarks.lock()?.set_coordinates(&self.core.coordinates).log(); + self.bookmarks + .lock() + .set_coordinates(&self.core.coordinates) + .log(); loop { - let bookmark = self.bookmarks.lock()?.pick(cwd.to_string()); + let bookmark = self.bookmarks + .lock() + .pick(cwd.to_string()); if let Err(HError::TerminalResizedError) = bookmark { self.core.screen.clear().log(); @@ -633,7 +649,10 @@ impl FileBrowser { if let Err(HError::WidgetResizedError) = bookmark { let coords = &self.core.coordinates; - self.bookmarks.lock()?.set_coordinates(&coords).log(); + self.bookmarks + .lock() + .set_coordinates(&coords) + .log(); self.core.screen.clear().log(); self.refresh().log(); self.draw().log(); @@ -660,8 +679,14 @@ impl FileBrowser { pub fn add_bookmark(&mut self) -> HResult<()> { let cwd = self.cwd.path.to_string_lossy().to_string(); let coords = &self.core.coordinates; - self.bookmarks.lock()?.set_coordinates(&coords).log(); - self.bookmarks.lock()?.add(&cwd)?; + + self.bookmarks + .lock() + .set_coordinates(&coords) + .log(); + self.bookmarks + .lock() + .add(&cwd)?; Ok(()) } @@ -1074,10 +1099,11 @@ impl FileBrowser { fn external_select(&mut self) -> HResult<()> { let shell = std::env::var("SHELL").unwrap_or("bash".into()); let cmd = self.core - .config.read()? - .get()? - .select_cmd - .clone(); + .config + .read() + .get()? + .select_cmd + .clone(); self.core.get_sender().send(Events::InputEnabled(false))?; self.core.screen.suspend().log(); @@ -1182,10 +1208,11 @@ impl FileBrowser { fn external_cd(&mut self) -> HResult<()> { let shell = std::env::var("SHELL").unwrap_or("bash".into()); let cmd = self.core - .config.read()? - .get()? - .cd_cmd - .clone(); + .config + .read() + .get()? + .cd_cmd + .clone(); self.core.get_sender().send(Events::InputEnabled(false))?; self.core.screen.suspend().log(); @@ -1272,7 +1299,9 @@ impl FileBrowser { tab_paths: Some(tab_dirs) }; - self.proc_view.lock()?.run_proc_subshell(cmd)?; + self.proc_view + .lock() + .run_proc_subshell(cmd)?; Ok(()) } @@ -1309,7 +1338,7 @@ impl FileBrowser { self.preview_widget().map(|preview| preview.cancel_animation()).log(); let procview = self.proc_view.clone(); loop { - match procview.lock()?.popup() { + match procview.lock().popup() { // Ignore refresh Err(HError::RefreshParent) => continue, Err(HError::TerminalResizedError) | @@ -1323,7 +1352,9 @@ impl FileBrowser { pub fn show_log(&mut self) -> HResult<()> { self.preview_widget().map(|preview| preview.cancel_animation()).log(); loop { - let res = self.log_view.lock()?.popup(); + let res = self.log_view + .lock() + .popup(); if let Err(HError::RefreshParent) = res { continue @@ -1382,7 +1413,10 @@ impl FileBrowser { let count_xpos = xsize - file_count.len() as u16; let count_ypos = ypos + self.get_coordinates()?.ysize(); - let fs = self.fs_stat.read()?.find_fs(&file.path)?.clone(); + let fs = self.fs_stat + .read() + .find_fs(&file.path)? + .clone(); let dev = fs.get_dev().unwrap_or(String::from("")); let free_space = fs.get_free(); @@ -1429,9 +1463,19 @@ impl Widget for FileBrowser { fn set_coordinates(&mut self, coordinates: &Coordinates) -> HResult<()> { self.core.coordinates = coordinates.clone(); self.columns.set_coordinates(&coordinates).log(); - self.proc_view.lock()?.set_coordinates(&coordinates).log(); - self.log_view.lock()?.set_coordinates(&coordinates).log(); - self.bookmarks.lock()?.set_coordinates(&coordinates).log(); + + self.proc_view + .lock() + .set_coordinates(&coordinates) + .log(); + self.log_view + .lock() + .set_coordinates(&coordinates) + .log(); + self.bookmarks + .lock() + .set_coordinates(&coordinates) + .log(); Ok(()) } @@ -1468,7 +1512,7 @@ impl Widget for FileBrowser { let xsize = term::xsize_u(); let mut status = self.get_core()? .status_bar_content - .lock()?; + .lock(); let status = status.as_mut() .take(); let active = self.columns diff --git a/src/mediaview.rs b/src/mediaview.rs index e1dd7de..682cfa5 100644 --- a/src/mediaview.rs +++ b/src/mediaview.rs @@ -1,6 +1,7 @@ use lazy_static; use termion::event::Key; use failure::{self, Fail}; +use parking_lot::{Mutex, RwLock}; use crate::widget::{Widget, WidgetCore}; use crate::coordinates::Coordinates; @@ -9,7 +10,7 @@ use crate::fail::{HResult, HError, ErrorLog, ErrorCause}; use crate::imgview::ImgView; use std::path::{Path, PathBuf}; -use std::sync::{Arc, Mutex, RwLock, +use std::sync::{Arc, mpsc::{channel, Sender}}; use std::io::{BufRead, BufReader, Write}; @@ -120,7 +121,7 @@ impl MediaView { // Use current size. Widget could have been resized at some point let (xsize, ysize, xpix, ypix) = { - let view = thread_imgview.lock()?; + let view = thread_imgview.lock(); let (xsize, ysize) = view.core.coordinates.size_u(); let (xpix, ypix) = view.core.coordinates.size_pixels()?; (xsize, ysize, xpix, ypix) @@ -159,7 +160,7 @@ impl MediaView { let mut stdout = BufReader::new(previewer.stdout.take()?); let mut stdin = previewer.stdin.take()?; - cprocess.lock().map(|mut p| *p = Some(previewer))?; + *cprocess.lock() = Some(previewer); let mut frame = vec![]; let newline = String::from("\n"); @@ -167,7 +168,7 @@ impl MediaView { let rx_cmd = rx_cmd.clone(); std::thread::spawn(move || -> HResult<()> { - for cmd in rx_cmd.lock()?.iter() { + for cmd in rx_cmd.lock().iter() { write!(stdin, "{}", cmd)?; write!(stdin, "\n")?; stdin.flush()?; @@ -177,9 +178,10 @@ impl MediaView { loop { // Check if preview-gen finished and break out of loop to restart - if let Ok(Some(code)) = cprocess.lock()? - .as_mut()? - .try_wait() { + if let Ok(Some(code)) = cprocess.lock() + .as_mut()? + .try_wait() + { if code.success() { break; } else { @@ -200,7 +202,7 @@ impl MediaView { stdout.read_line(&mut line_buf)?; let h = line_buf.trim().parse::<usize>()?; - let mut height = height.lock().unwrap(); + let mut height = height.lock(); if *height != h { new_height = true; } else { @@ -212,26 +214,25 @@ impl MediaView { line_buf.clear(); stdout.read_line(&mut line_buf)?; let pos = &line_buf.trim(); - *position.lock().unwrap() = pos + *position.lock() = pos .parse::<usize>()?; line_buf.clear(); stdout.read_line(&mut line_buf)?; let dur = &line_buf.trim(); - *duration.lock().unwrap() = dur + *duration.lock() = dur .parse::<usize>()?; - if let Ok(mut imgview) = thread_imgview.lock() { - if new_height { - imgview.core.clear()?; - } - imgview.set_image_data(frame); - sender.send(crate::widget::Events::WidgetReady) - .map_err(|e| HError::from(e)) - .log(); + let mut imgview = thread_imgview.lock(); + if new_height { + imgview.core.clear()?; } + imgview.set_image_data(frame); + sender.send(crate::widget::Events::WidgetReady) + .map_err(|e| HError::from(e)) + .log(); line_buf.clear(); frame = vec![]; @@ -304,8 +305,8 @@ impl MediaView { pub fn progress_bar(&self) -> HResult<String> { let xsize = self.core.coordinates.xsize_u(); - let position = self.position.lock()?.clone(); - let duration = self.duration.lock()?.clone(); + let position = self.position.lock().clone(); + let duration = self.duration.lock().clone(); if duration == 0 || position == 0 { Ok(format!("{:elements$}", "|", elements=xsize)) @@ -323,8 +324,8 @@ impl MediaView { } pub fn progress_string(&self) -> HResult<String> { - let position = self.position.lock()?.clone(); - let duration = self.duration.lock()?.clone(); + let position = self.position.lock().clone(); + let duration = self.duration.lock().clone(); let fposition = self.format_secs(position); let fduration = self.format_secs(duration); @@ -342,7 +343,7 @@ impl MediaView { let mut icons = String::new(); - if *MUTE.read()? == true { + if *MUTE.read() == true { icons += &crate::term::goto_xy_u(xpos+xsize-2, ypos+lines); icons += mute_char; } else { @@ -351,7 +352,7 @@ impl MediaView { icons += " "; } - if *AUTOPLAY.read()? == true { + if *AUTOPLAY.read() == true { icons += &crate::term::goto_xy_u(xpos+xsize-4, ypos+lines); icons += play_char; } else { @@ -371,8 +372,8 @@ impl MediaView { } pub fn toggle_pause(&mut self) -> HResult<()> { - let auto = AUTOPLAY.read()?.clone(); - let pos = self.position.lock()?.clone(); + let auto = AUTOPLAY.read().clone(); + let pos = self.position.lock().clone(); // This combination means only first frame was shown, since // self.paused will be false, even with autoplay off @@ -410,40 +411,31 @@ impl MediaView { } pub fn autoplay(&self) -> bool { - if let Ok(autoplay) = AUTOPLAY.read() { - return *autoplay; - } - return true; + *AUTOPLAY.read() } pub fn mute(&self) -> bool { - if let Ok(mute) = MUTE.read() { - return *mute; - } - return false; + *MUTE.read() } pub fn toggle_autoplay(&self) { - if let Ok(mut autoplay) = AUTOPLAY.write() { - *autoplay = !*autoplay; - } + *AUTOPLAY.write() = !*AUTOPLAY.read(); } pub fn toggle_mute(&self) { - if let Ok(mut mute) = MUTE.write() { - *mute = !*mute; - if *mute { - self.controller.send(String::from("m")).ok(); - } else { - self.controller.send(String::from("u")).ok(); - } + let mut mute = MUTE.write(); + *mute = !*mute; + if *mute { + self.controller.send(String::from("m")).ok(); + } else { + self.controller.send(String::from("u")).ok(); } } pub fn kill(&mut self) -> HResult<()> { let proc = self.process.clone(); std::thread::spawn(move || -> HResult<()> { - proc.lock()? + proc.lock() .as_mut() .map(|p| { p.kill().map_err(|e| HError::from(e)).log(); @@ -470,7 +462,7 @@ impl Widget for MediaView { self.core.coordinates = coordinates.clone(); - let mut imgview = self.imgview.lock()?; + let mut imgview = self.imgview.lock(); imgview.set_image_data(vec![]); imgview.set_coordinates(&coordinates)?; @@ -497,13 +489,13 @@ impl Widget for MediaView { fn get_drawlist(&self) -> HResult<String> { let (xpos, ypos) = self.core.coordinates.position_u(); - let height = *self.height.lock()?; + let height = *self.height.lock(); let progress_str = self.progress_string()?; let progress_bar = self.progress_bar()?; - let frame= self.imgview - .lock() - .map(|img| img.get_drawlist())?; + let frame = self.imgview + .lock() + .get_drawlist(); let mut frame = frame?; diff --git a/src/preview.rs b/src/preview.rs index 382fdf2..f9b3c56 100644 --- a/src/preview.rs +++ b/src/preview.rs @@ -1,7 +1,9 @@ use async_value::{Async, Stale}; use termion::event::Key; +use parking_lot::Mutex; -use std::sync::{Arc, Mutex}; + +use std::sync::Arc; use std::path::PathBuf; use crate::files::{File, Files, Kind, Ticker}; @@ -26,7 +28,7 @@ fn kill_proc() -> HResult<()> { // Kill media previewer if it still runs ImgView::kill_running(); - let mut pid = SUBPROC.lock()?; + let mut pid = SUBPROC.lock(); pid.map(|pid| // Do this in another thread so we can wait on process to exit with SIGHUP std::thread::spawn(move || { @@ -75,7 +77,10 @@ impl<W: Widget + Send + 'static> AsyncWidget<W> { closure(stale).map_err(|e| e.into())); widget.on_ready(move |_, stale| { if !stale.is_stale()? { - sender.lock().map(|s| s.send(crate::widget::Events::WidgetReady)).ok(); + sender.lock() + .send(crate::widget::Events::WidgetReady) + .map_err(HError::from) + .log(); } Ok(()) }).log(); @@ -104,8 +109,9 @@ impl<W: Widget + Send + 'static> AsyncWidget<W> { widget.on_ready(move |_, stale| { if !stale.is_stale()? { sender.lock() - .map(|s| s.send(crate::widget::Events::WidgetReady)) - .ok(); + .send(crate::widget::Events::WidgetReady) + .map_err(HError::from) + .log(); } Ok(()) }).log(); @@ -539,7 +545,7 @@ impl Previewer { let pid = process.id(); { - let mut pid_ = SUBPROC.lock()?; + let mut pid_ = SUBPROC.lock(); *pid_ = Some(pid); } @@ -548,7 +554,7 @@ impl Previewer { if stale.is_stale()? { return Previewer::preview_failed(&file) } { - let mut pid_ = SUBPROC.lock()?; + let mut pid_ = SUBPROC.lock(); *pid_ = None; } diff --git a/src/proclist.rs b/src/proclist.rs index 36c724e..f82ffbb 100644 --- a/src/proclist.rs +++ b/src/proclist.rs @@ -1,4 +1,4 @@ -use std::sync::{Arc, Mutex}; +use std::sync::Arc; use std::sync::mpsc::Sender; use std::process::{Child, Command}; use std::os::unix::process::{CommandExt, ExitStatusExt}; @@ -10,6 +10,7 @@ use termion::event::Key; use unicode_width::UnicodeWidthStr; use osstrtools::{OsStringTools, OsStrTools, OsStrConcat}; use async_value::Stale; +use parking_lot::Mutex; use crate::listview::{Listable, ListView}; use crate::textview::TextView; @@ -133,10 +134,10 @@ impl Process { let success = self.success.clone(); let sender = self.sender.clone(); let cmd = self.cmd.clone(); - let pid = self.handle.lock()?.id(); + let pid = self.handle.lock().id(); std::thread::spawn(move || -> HResult<()> { - let stdout = handle.lock()?.stdout.take()?; + let stdout = handle.lock().stdout.take()?; let mut stdout = BufReader::new(stdout); let mut processor = move |cmd, sender: &Sender<Events>| -> HResult<()> { loop { @@ -146,7 +147,7 @@ impl Process { if len == 0 { return Ok(()) } - output.lock()?.push_str(&buffer); + output.lock().push_str(&buffer); let status = format!("{}: read {} chars!", cmd, len); sender.send(Events::Status(status))?; @@ -159,15 +160,15 @@ impl Process { }; processor(&cmd, &sender).log(); - if let Ok(proc_status) = handle.lock()?.wait() { + if let Ok(proc_status) = handle.lock().wait() { let proc_success = proc_status.success(); let proc_status = match proc_status.code() { Some(status) => status, None => proc_status.signal().unwrap_or(-1) }; - *success.lock()? = Some(proc_success); - *status.lock()? = Some(proc_status); + *success.lock() = Some(proc_success); + *status.lock() = Some(proc_status); let color_success = if proc_success { @@ -363,7 +364,7 @@ impl ListView<Vec<Process>> { fn kill_proc(&mut self) -> HResult<()> { let proc = self.selected_proc()?; - proc.handle.lock()?.kill()?; + proc.handle.lock().kill()?; Ok(()) } @@ -380,8 +381,8 @@ impl ListView<Vec<Process>> { } pub fn render_proc(&self, proc: &Process) -> HResult<String> { - let pid = proc.handle.lock()?.id(); - let status = match *proc.status.lock()? { + let pid = proc.handle.lock().id(); + let status = match *proc.status.lock() { Some(status) => format!("{}", status), None => format!("<{}>", pid), }; @@ -392,7 +393,7 @@ impl ListView<Vec<Process>> { let padding = sized_string.len() - sized_string.width_cjk(); let padding = xsize - padding as u16; - let color_status = match *proc.success.lock().unwrap() { + let color_status = match *proc.success.lock() { Some(false) => { format!("{}{}", term::color_red(), status) } _ => { status } }; @@ -530,7 +531,7 @@ impl ProcView { if Some(self.get_listview_mut().get_selection()) == self.viewing { return Ok(()); } - let output = self.get_listview_mut().selected_proc()?.output.lock()?.clone(); + let output = self.get_listview_mut().selected_proc()?.output.lock().clone(); let animator = self.animator.clone(); animator.set_fresh().log(); @@ -601,7 +602,7 @@ impl Widget for ProcView { let procs_running = listview .content .iter() - .filter(|proc| proc.status.lock().unwrap().is_none()) + .filter(|proc| proc.status.lock().is_none()) .count(); let header = format!("Running processes: {} / {}", @@ -617,9 +618,9 @@ impl Widget for ProcView { if let Some(proc) = listview.content.get(selection) { let cmd = &proc.cmd; - let pid = proc.handle.lock()?.id(); - let proc_status = proc.status.lock()?; - let proc_success = proc.success.lock()?; + let pid = proc.handle.lock().id(); + let proc_status = proc.status.lock(); + let proc_success = proc.success.lock(); let procinfo = if proc_status.is_some() { let color_success = diff --git a/src/quick_actions.rs b/src/quick_actions.rs index 74ff9db..2257b86 100644 --- a/src/quick_actions.rs +++ b/src/quick_actions.rs @@ -1,13 +1,12 @@ use mime_guess::Mime; use termion::event::Key; +use parking_lot::Mutex; use async_value::Async; use std::path::PathBuf; -use std::sync::{ - Arc, Mutex, - mpsc::Sender, -}; +use std::sync::{Arc, + mpsc::Sender}; use std::ffi::OsString; use std::str::FromStr; @@ -420,9 +419,7 @@ impl QuickAction { proc_view .lock() - .map(|mut proc_view| { - proc_view.run_proc_raw(cmd) - })??; + .run_proc_raw(cmd)?; Ok(()) } diff --git a/src/term.rs b/src/term.rs index 1dd4a7b..2ae0b6a 100644 --- a/src/term.rs +++ b/src/term.rs @@ -1,5 +1,5 @@ use std::io::{Stdout, Write, BufWriter, BufRead}; -use std::sync::{Arc, Mutex, RwLock}; +use std::sync::Arc; use termion; use termion::screen::AlternateScreen; @@ -7,6 +7,7 @@ use termion::raw::{IntoRawMode, RawTerminal}; use parse_ansi::parse_bytes; use crate::unicode_width::{UnicodeWidthStr, UnicodeWidthChar}; +use parking_lot::{Mutex, RwLock}; use crate::fail::{HResult, ErrorLog}; use crate::trait_ext::ExtractResult; @@ -35,23 +36,23 @@ impl Screen { } pub fn set_size(&self, size: (usize, usize)) -> HResult<()> { - *self.size.write()? = Some(size); + *self.size.write() = Some(size); Ok(()) } pub fn is_resized(&self) -> HResult<bool> { - Ok(self.size.read()?.is_some()) + Ok(self.size.read().is_some()) } pub fn get_size(&self) -> HResult<(usize, usize)> { - match self.size.read()?.clone() { + match self.size.read().clone() { Some((xsize, ysize)) => Ok((xsize, ysize)), None => Ok((self.xsize()?, self.ysize()?)) } } pub fn take_size(&self) -> HResult<(usize, usize)> { - Ok(self.size.write()?.take()?) + Ok(self.size.write().take()?) } pub fn set_title(&mut self, title: &str) -> HResult<()> { @@ -71,16 +72,12 @@ impl Write for Screen { fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> { self.screen .lock() - .map_err(|_| std::io::Error::new(std::io::ErrorKind::Other, - "Screen Mutex poisoned!")) - .and_then(|mut s| s.write(buf)) + .write(buf) } fn flush(&mut self) -> std::io::Result<()> { self.screen .lock() - .map_err(|_| std::io::Error::new(std::io::ErrorKind::Other, - "Screen Mutex poisoned!")) - .and_then(|mut s| s.flush()) + .flush() } } @@ -155,13 +152,13 @@ pub trait ScreenExt: Write { impl ScreenExt for Screen { fn suspend_raw_mode(&mut self) -> HResult<()> { self.screen - .lock()? + .lock() .suspend_raw_mode() } fn activate_raw_mode(&mut self) -> HResult<()> { self.screen - .lock()? + .lock() .activate_raw_mode() } } diff --git a/src/widget.rs b/src/widget.rs index 1d27dbe..904e3e8 100644 --- a/src/widget.rs +++ b/src/widget.rs @@ -1,10 +1,11 @@ -use std::sync::{Arc, Mutex, RwLock}; +use std::sync::Arc; use std::sync::mpsc::{Sender, Receiver, channel}; use std::io::{Write, stdin}; use termion::event::{Event, Key, MouseEvent}; use termion::input::TermRead; use async_value::{Async, Stale}; +use parking_lot::{Mutex, RwLock}; use crate::coordinates::{Coordinates, Position, Size}; @@ -91,17 +92,17 @@ impl WidgetCore { config: Arc::new(RwLock::new(config)) }; let minibuffer = MiniBuffer::new(&core); - *core.minibuffer.lock().unwrap() = Some(minibuffer); + *core.minibuffer.lock() = Some(minibuffer); Ok(core) } pub fn get_sender(&self) -> Sender<Events> { - self.event_sender.lock().unwrap().clone() + self.event_sender.lock().clone() } pub fn draw_status(&self) -> HResult<()> { let xsize = term::xsize_u(); - let status = match self.status_bar_content.lock()?.as_ref() { + let status = match self.status_bar_content.lock().as_ref() { Some(status) => status.to_string(), None => "".to_string(), }; @@ -121,7 +122,7 @@ impl WidgetCore { pub fn show_status(&self, status: &str) -> HResult<()> { HError::log::<()>(status).ok(); { - let mut status_content = self.status_bar_content.lock()?; + let mut status_content = self.status_bar_content.lock(); *status_content = Some(status.to_string()); } self.draw_status()?; @@ -129,7 +130,7 @@ impl WidgetCore { } pub fn clear_status(&self) -> HResult<()> { - if self.status_bar_content.lock()?.take().is_some() { + if self.status_bar_content.lock().take().is_some() { self.draw_status().log(); } Ok(()) @@ -137,7 +138,7 @@ impl WidgetCore { pub fn minibuffer_clear(&self) -> HResult<()> { self.minibuffer - .lock()? + .lock() .as_mut()? .clear(); @@ -146,7 +147,7 @@ impl WidgetCore { pub fn minibuffer(&self, query: &str) -> HResult<String> { let answer = self.minibuffer - .lock()? + .lock() .as_mut()? .query(query, false); let mut screen = self.screen()?; @@ -156,7 +157,7 @@ impl WidgetCore { pub fn minibuffer_continuous(&self, query: &str) -> HResult<String> { let answer = self.minibuffer - .lock()? + .lock() .as_mut()? .query(query, true); let mut screen = self.screen()?; @@ -203,9 +204,9 @@ impl WidgetCore { fn get_conf(&self) -> HResult<Config> { let conf = self.config - .read()? - .get()? - .clone(); + .read() + .get()? + .clone(); Ok(conf) } } @@ -397,7 +398,10 @@ pub trait Widget { HError::input_updated(input)? } Events::ConfigLoaded => { - self.get_core_mut()?.config.write()?.pull_async()?; + self.get_core_mut()? + .config + .write() + .pull_async()?; } _ => {} } @@ -472,7 +476,7 @@ pub trait Widget { fn handle_input(&mut self) -> HResult<()> { let (tx_internal_event, rx_internal_event) = channel(); - let rx_global_event = self.get_core()?.event_receiver.lock()?.take()?; + let rx_global_event = self.get_core()?.event_receiver.lock().take()?; dispatch_events(tx_internal_event, rx_global_event, self.get_core()?.screen()?); @@ -492,7 +496,11 @@ pub trait Widget { self.get_core()?.screen()?.clear().log(); } Events::ConfigLoaded => { - self.get_core_mut()?.config.write()?.pull_async().ok(); + self.get_core_mut()? + .config + .write() + .pull_async() + .ok(); self.config_loaded().log(); } _ => {} @@ -536,7 +544,7 @@ fn dispatch_events(tx_internal: Sender<Events>, match &event { Events::ExclusiveEvent(tx_event) => { tx_exclusive_event = match tx_event { - Some(locked_sender) => locked_sender.lock().unwrap().take(), + Some(locked_sender) => locked_sender.lock().take(), None => None } } |