diff --git a/src/app/app.rs b/src/app/app.rs index acea4d8..aa49a76 100644 --- a/src/app/app.rs +++ b/src/app/app.rs @@ -97,8 +97,8 @@ impl Widget for &App { fn center_text(text: &str, avaliable_space: i32) -> String { let margin = avaliable_space - text.len() as i32; let margin = margin / 2; - let l_margin = (0..margin).into_iter().map(|_| ' ').collect::(); - let r_margin = (0..(margin - (l_margin.len() as i32))).into_iter().map(|_| ' ').collect::(); + let l_margin = (0..margin).map(|_| ' ').collect::(); + let r_margin = (0..(margin - (l_margin.len() as i32))).map(|_| ' ').collect::(); format!("{l_margin}{text}{r_margin}") } @@ -114,7 +114,7 @@ impl Widget for &App { let bg = if y_idx == self.grid.cursor().1 { Color::DarkGray - } else if y_idx % 2 == 0 { + } else if y_idx.is_multiple_of(2) { ORANGE1 } else { ORANGE2 @@ -127,7 +127,7 @@ impl Widget for &App { let bg = if x_idx == self.grid.cursor().0 { Color::DarkGray - } else if x_idx % 2 == 0 { + } else if x_idx.is_multiple_of(2) { ORANGE1 } else { ORANGE2 @@ -173,7 +173,7 @@ impl Widget for &App { suggest_upper_bound = Some(display.len() as u16); // check for cells to the right, see if we should truncate the cell width for i in 1..(display.len() as f32 / cell_width as f32).ceil() as usize { - if let Some(_) = self.grid.get_cell_raw(x_idx + i, y_idx) { + if self.grid.get_cell_raw(x_idx + i, y_idx).is_some() { suggest_upper_bound = Some(cell_width * i as u16); break; } @@ -222,7 +222,7 @@ impl Widget for &App { } else if let Some(suggestion) = suggest_upper_bound { let max_available_width = area.width - x_off; // draw the biggest cell possible, without going OOB off the screen - let width = min(max_available_width, suggestion as u16); + let width = min(max_available_width, suggestion); // Don't draw too small tho, we want full-sized cells, minium let width = max(cell_width, width); @@ -280,22 +280,19 @@ impl App { } fn file_name_display(&self) -> String { - let file_name_status = { - let mut file_name = "[No Name]"; - let mut icon = ""; - if let Some(file) = &self.file { - if let Some(f) = file.file_name() { - if let Some(f) = f.to_str() { - file_name = f; - } + let mut file_name = "[No Name]"; + let mut icon = ""; + if let Some(file) = &self.file { + if let Some(f) = file.file_name() { + if let Some(f) = f.to_str() { + file_name = f; } } - if self.grid.needs_to_be_saved() { - icon = "[+]"; - } - format!("{file_name}{icon}") - }; - file_name_status + } + if self.grid.needs_to_be_saved() { + icon = "[+]"; + } + format!("{file_name}{icon}") } fn draw(&self, frame: &mut Frame) { @@ -362,7 +359,7 @@ impl App { event::KeyCode::Char(c) => chord.add_char(c), event::KeyCode::Enter => { // tmp is to get around reference issues. - let tmp = pos.clone(); + let tmp = *pos; Mode::process_cmd(self); self.mode = Mode::Visual(tmp) } @@ -421,7 +418,7 @@ impl App { }, Mode::Normal => match event::read()? { event::Event::Key(key_event) => match key_event.code { - event::KeyCode::F(n) => {}, + event::KeyCode::F(_n) => {} event::KeyCode::Char(c) => Mode::process_key(self, c), // Pretend that the arrow keys are vim movement keys event::KeyCode::Left => Mode::process_key(self, 'h'), @@ -432,12 +429,14 @@ impl App { event::KeyCode::PageUp => self.grid.redo(), event::KeyCode::PageDown => self.grid.undo(), event::KeyCode::Modifier(modifier_key_code) => { - if let event::ModifierKeyCode::LeftControl | event::ModifierKeyCode::RightControl = modifier_key_code { + if let event::ModifierKeyCode::LeftControl | event::ModifierKeyCode::RightControl = + modifier_key_code + { // TODO my terminal (alacritty) isn't showing me ctrl presses. I know // that they work tho, since ctrl+r works here in neovim. // panic!("heard ctrl"); } - }, + } _ => {} }, _ => {} diff --git a/src/app/error_msg.rs b/src/app/error_msg.rs index 0247c36..d660e08 100644 --- a/src/app/error_msg.rs +++ b/src/app/error_msg.rs @@ -47,7 +47,7 @@ impl Widget for &StatusMessage { let msg = if self.start.elapsed().as_secs() > 3 { String::new() } else { - self.msg.clone().unwrap_or(String::new()) + self.msg.clone().unwrap_or_default() }; let style = match self.msg_type { @@ -57,4 +57,4 @@ impl Widget for &StatusMessage { Paragraph::new(msg).style(style).render(area, buf); } -} \ No newline at end of file +} diff --git a/src/app/logic/calc.rs b/src/app/logic/calc.rs index 443a3db..e7b7f6c 100644 --- a/src/app/logic/calc.rs +++ b/src/app/logic/calc.rs @@ -19,8 +19,7 @@ use crate::app::app::App; use crate::app::mode::Mode; pub fn get_header_size() -> usize { - let row_header_width = LEN.to_string().len(); - row_header_width + LEN.to_string().len() } pub const LEN: usize = 1001; @@ -216,7 +215,7 @@ impl Grid { if let Ok(val) = self.evaluate(&cell.to_string()) && resolve_values { - format!("{}{}", val.to_string(), delim) + format!("{val}{delim}") } else { format!("{}{}", cell.escaped_csv_string(), delim) } @@ -232,7 +231,7 @@ impl Grid { Ok(()) } - pub fn get_grid<'a>(&'a self) -> &'a CellGrid { + pub fn get_grid(&self) -> &CellGrid { &self.grid_history[self.current_grid] } @@ -246,7 +245,7 @@ impl Grid { pub fn transact_on_grid(&mut self, mut action: F) where - F: FnMut(&mut CellGrid) -> (), + F: FnMut(&mut CellGrid), { // push on a new reality let new = self.get_grid().clone(); @@ -377,7 +376,7 @@ impl Grid { f.custom_translate_cell((0, 0), (0, 1), |rolling, old, new| { if let Some((_, arg_y)) = Grid::parse_to_idx(old) { if arg_y < insertion_y { rolling.to_owned() } else { rolling.replace(old, new) } - } else if let Some(_) = Grid::range_as_indices(old) { + } else if Grid::range_as_indices(old).is_some() { // ranges are not changed when moved vertically rolling.to_string() } else { @@ -454,7 +453,7 @@ impl Grid { return Err(format!("\"{eq}\" is not an equation")); } - let ctx = ctx::CallbackContext::new(&self); + let ctx = ctx::CallbackContext::new(self); let prep_for_return = |v: Value| { if v.is_number() { @@ -505,13 +504,12 @@ impl Grid { } pub fn char_to_idx(i: &str) -> usize { - let x_idx = i + i .chars() .filter(|f| f.is_alphabetic()) .enumerate() .map(|(idx, c)| ((c.to_ascii_lowercase() as usize).saturating_sub(97)) + (26 * idx)) - .fold(0, |a, b| a + b); - x_idx + .sum() } /// Parse values in the format of A0, C10 ZZ99, etc, and @@ -564,7 +562,7 @@ impl Grid { if x >= LEN || y >= LEN { return &None; } - &self.get_grid().get_cell_raw(x, y) + self.get_grid().get_cell_raw(x, y) } pub fn num_to_char(idx: usize) -> String { diff --git a/src/app/logic/cell.rs b/src/app/logic/cell.rs index 9d40433..18b1b71 100644 --- a/src/app/logic/cell.rs +++ b/src/app/logic/cell.rs @@ -11,15 +11,15 @@ pub enum CellType { Equation(String), } -impl Into for f64 { - fn into(self) -> CellType { - CellType::duck_type(self.to_string()) +impl From for CellType { + fn from(value: f64) -> Self { + CellType::duck_type(value.to_string()) } } -impl Into for String { - fn into(self) -> CellType { - CellType::duck_type(self) +impl From for CellType { + fn from(value: String) -> Self { + CellType::duck_type(value) } } @@ -40,7 +40,7 @@ impl CellType { if display.contains(CSV_DELIMITER) { format!("\"{display}\"") } else { display } } - fn duck_type<'a>(value: impl Into) -> Self { + fn duck_type(value: impl Into) -> Self { let value = value.into(); if let Ok(parse) = value.parse::() { @@ -109,9 +109,9 @@ impl CellType { let x2 = x2 as i32; let y2 = y2 as i32; - let dest_x = if lock_x { src_x as usize } else { (src_x as i32 + (x2 - x1)) as usize }; + let dest_x = if lock_x { src_x } else { (src_x as i32 + (x2 - x1)) as usize }; - let dest_y = if lock_y { src_y as usize } else { (src_y as i32 + (y2 - y1)) as usize }; + let dest_y = if lock_y { src_y } else { (src_y as i32 + (y2 - y1)) as usize }; let alpha = Grid::num_to_char(dest_x); diff --git a/src/app/mode.rs b/src/app/mode.rs index fc99aa9..301088a 100644 --- a/src/app/mode.rs +++ b/src/app/mode.rs @@ -87,7 +87,7 @@ impl Mode { path.file_name().map(|f| f.to_str().unwrap_or("n/a")).unwrap_or("n/a") )); - if let None = app.file { + if app.file.is_none() { app.file = Some(path) } } @@ -197,7 +197,7 @@ impl Mode { } "export" => { if let Some(arg1) = args.get(1) { - save_range(&arg1); + save_range(arg1); } else { app.msg = StatusMessage::error("export ") } @@ -286,7 +286,7 @@ impl Mode { 'i' | 'a' => { let (x, y) = app.grid.cursor(); - let val = app.grid.get_cell_raw(x, y).as_ref().map(|f| f.to_string()).unwrap_or(String::new()); + let val = app.grid.get_cell_raw(x, y).as_ref().map(|f| f.to_string()).unwrap_or_default(); app.mode = Mode::Insert(Chord::from(val)); } @@ -477,14 +477,12 @@ impl Mode { let len = match &self { Mode::Insert(edit) | Mode::VisualCmd(_, edit) | Mode::Command(edit) | Mode::Chord(edit) => edit.len(), Mode::Normal => { - let len = cell.as_ref().map(|f| f.to_string().len()).unwrap_or_default(); - len + cell.as_ref().map(|f| f.to_string().len()).unwrap_or_default() } Mode::Visual(_) => 0, }; // min 20 chars, expand if needed - let len = max(len as u16 + 1, 20); - len + max(len as u16 + 1, 20) } pub fn render(&self, f: &mut ratatui::Frame, area: prelude::Rect, cell: &Option) { @@ -498,8 +496,7 @@ impl Mode { Mode::Chord(chord) => f.render_widget(chord, area), Mode::Normal => f.render_widget( Paragraph::new({ - let cell = cell.as_ref().map(|f| f.to_string()).unwrap_or_default(); - cell + cell.as_ref().map(|f| f.to_string()).unwrap_or_default() }), area, ), @@ -522,8 +519,7 @@ impl From for Chord { impl Chord { pub fn new(inital: char) -> Self { - let mut buf = Vec::new(); - buf.push(inital); + let buf = vec![inital]; Self { buf } } diff --git a/src/app/screen.rs b/src/app/screen.rs index 65c2651..23fce25 100644 --- a/src/app/screen.rs +++ b/src/app/screen.rs @@ -48,11 +48,11 @@ impl ScreenSpace { // ======= X ======= // screen seems to be 2 cells smaller than it should be // this is probably related to issue #6 - let x_cells = (screen_size.0 / self.get_cell_width(vars) as usize) -2; + let x_cells = (screen_size.0 / self.get_cell_width(vars)) -2; // ======= Y ======= // screen seems to be 2 cells smaller than it should be // this is probably related to issue #6 - let y_cells = (screen_size.1 / self.get_cell_height(vars) as usize) -2; + let y_cells = (screen_size.1 / self.get_cell_height(vars)) -2; (x_cells,y_cells) } else { (0,0) diff --git a/src/main.rs b/src/main.rs index 201a029..4e90c97 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,10 @@ +#![allow(clippy::needless_return)] +#![allow(clippy::len_zero)] +#![allow(clippy::collapsible_if)] +#![allow(clippy::collapsible_else_if)] +#![allow(clippy::collapsible_match)] +#![allow(clippy::single_match)] + mod app; use std::env::args;