diff --git a/src/calcifer.rs b/src/calcifer.rs index 2b7cd57..a4dc942 100644 --- a/src/calcifer.rs +++ b/src/calcifer.rs @@ -69,7 +69,7 @@ impl Calcifer { return; } egui::TopBottomPanel::bottom("terminal") - .default_height(super::TERMINAL_HEIGHT.clone()) + .default_height(super::TERMINAL_HEIGHT) .height_range(Rangef::new( super::TERMINAL_RANGE.start, super::TERMINAL_RANGE.end, @@ -93,7 +93,7 @@ impl Calcifer { ui.style_mut().visuals.extreme_bg_color = bg_color; let Self { command, .. } = self; ui.colored_label( - command_color.clone(), + command_color, tools::format_path( &env::current_dir().expect("Could not find Shell Environnment"), ), @@ -126,11 +126,11 @@ impl Calcifer { format!("\n{} {}", entry.env, entry.command), ); ui.end_row(); - if entry.output != "" { + if !entry.output.is_empty() { ui.colored_label(entry_color, &entry.output); ui.end_row(); } - if entry.error != "" { + if !entry.error.is_empty() { ui.colored_label(super::RED, &entry.error); ui.end_row(); } @@ -277,7 +277,7 @@ impl Calcifer { self.settings_menu.show(ctx); } if self.settings_menu.updated { - self.theme = self.settings_menu.theme.clone(); + self.theme = self.settings_menu.theme; } self.handle_confirm(); diff --git a/src/calcifer/app_base.rs b/src/calcifer/app_base.rs index 73b91bc..2d3bb35 100644 --- a/src/calcifer/app_base.rs +++ b/src/calcifer/app_base.rs @@ -29,10 +29,9 @@ impl Calcifer { .file_name() .expect("Could not get Tab Name") .to_string_lossy() - .to_string() == "untitled" { - return self.save_tab_as(); + self.save_tab_as() } else { if let Err(err) = fs::write( &self.tabs[self.selected_tab.to_index()].path, @@ -41,7 +40,7 @@ impl Calcifer { eprintln!("Error writing file: {}", err); return None; } - return Some(self.tabs[self.selected_tab.to_index()].path.clone()); + Some(self.tabs[self.selected_tab.to_index()].path.clone()) } } @@ -56,7 +55,7 @@ impl Calcifer { } return Some(path); } - return None; + None } pub fn handle_save_file(&mut self, path_option: Option) { @@ -82,7 +81,6 @@ impl Calcifer { .file_name() .expect("Could not get Tab Name") .to_string_lossy() - .to_string() != "untitled" { new.open_file(Some(&path)); @@ -131,21 +129,19 @@ impl Calcifer { if let Some(name) = path.file_name() { if path.is_dir() { egui::CollapsingHeader::new(name.to_string_lossy()).show(ui, |ui| { - let mut paths: Vec<_> = fs::read_dir(&path) + let mut paths: Vec<_> = fs::read_dir(path) .expect("Failed to read dir") .map(|r| r.unwrap()) .collect(); - paths.sort_by(|a, b| tools::sort_directories_first(a, b)); + paths.sort_by(tools::sort_directories_first); for result in paths { let _ = self.list_files(ui, &result.path()); } }); - } else { - if ui.button(name.to_string_lossy()).clicked() { - self.open_file(Some(path)); - } + } else if ui.button(name.to_string_lossy()).clicked() { + self.open_file(Some(path)); } } Ok(()) @@ -171,7 +167,7 @@ impl Calcifer { let bg_color: Color32; let text_color: Color32; - if display.clone() { + if display { bg_color = Color32::from_hex(self.theme.functions) .expect("Could not convert color to hex (functions)"); text_color = @@ -190,7 +186,7 @@ impl Calcifer { } ui.style_mut().visuals.override_text_color = None; - return display; + display } pub fn profiler(&self) -> String { @@ -199,7 +195,7 @@ impl Calcifer { } let combined_string: Vec = TIME_LABELS .into_iter() - .zip(self.time_watch.clone().into_iter()) + .zip(self.time_watch.clone()) .map(|(s, v)| format!("{} : {:.1} ms", s, v)) .collect(); @@ -208,6 +204,6 @@ impl Calcifer { " total : {:.1} ms", self.time_watch.clone().iter().sum::() )); - return result; + result } } diff --git a/src/calcifer/code_editor/mod.rs b/src/calcifer/code_editor/mod.rs index f1019f0..1f2f12f 100644 --- a/src/calcifer/code_editor/mod.rs +++ b/src/calcifer/code_editor/mod.rs @@ -283,7 +283,7 @@ impl CodeEditor { && ui.input(|i| i.key_pressed(egui::Key::Enter)) { if let Some(range) = last_cursor { - (*text, extend) = self.new_line(range.clone(), text.clone()); + (*text, extend) = self.new_line(*range, text.clone()); get_new_cursor = false; } } @@ -293,7 +293,7 @@ impl CodeEditor { { if let Some(range) = last_cursor { (*text, extend) = - self.toggle_start_of_line(range.clone(), text.clone(), "//"); + self.toggle_start_of_line(*range, text.clone(), "//"); get_new_cursor = false; } } @@ -304,7 +304,7 @@ impl CodeEditor { if let Some(range) = last_cursor { if range.primary.index != range.secondary.index { (*text, extend) = self.add_start_of_line( - range.clone(), + *range, previous_text.clone(), "\t", ); @@ -319,7 +319,7 @@ impl CodeEditor { if let Some(range) = last_cursor { if range.primary.index != range.secondary.index { (*text, extend) = self.remove_start_of_line( - range.clone(), + *range, previous_text.clone(), "\t", ); @@ -328,34 +328,32 @@ impl CodeEditor { } } - if override_cursor != None { + if override_cursor.is_some() { output.response.request_focus(); output.state.set_ccursor_range(override_cursor); output.state.store(ui.ctx(), output.response.id); } else if get_new_cursor { *last_cursor = output.state.clone().ccursor_range(); - } else { - if let Some(cursor_range) = last_cursor.clone() { - let mut start = - min(cursor_range.primary.index, cursor_range.secondary.index); - let end = - max(cursor_range.primary.index, cursor_range.secondary.index); - let extended = match end as isize + extend { - // Check for overflow or negative result - value if value < 0 => 0, - value => value as usize, - }; - if start == end { - start = extended; - } - let cursor = Some(CCursorRange { - primary: CCursor::new(start.clone()), - secondary: CCursor::new(max(start.clone(), extended)), - }); - output.state.set_ccursor_range(cursor.clone()); - output.state.store(ui.ctx(), output.response.id); - *last_cursor = cursor.clone(); + } else if let Some(cursor_range) = *last_cursor { + let mut start = + min(cursor_range.primary.index, cursor_range.secondary.index); + let end = + max(cursor_range.primary.index, cursor_range.secondary.index); + let extended = match end as isize + extend { + // Check for overflow or negative result + value if value < 0 => 0, + value => value as usize, + }; + if start == end { + start = extended; } + let cursor = Some(CCursorRange { + primary: CCursor::new(start), + secondary: CCursor::new(max(start, extended)), + }); + output.state.set_ccursor_range(cursor); + output.state.store(ui.ctx(), output.response.id); + *last_cursor = cursor; } if previous_text != text.clone() { @@ -369,9 +367,9 @@ impl CodeEditor { let scroll_area = egui::ScrollArea::vertical() .id_source(format!("{}_outer_scroll", self.id)) .stick_to_bottom(self.stick_to_bottom) - .vertical_scroll_offset(vertical_offset.clone()) + .vertical_scroll_offset(*vertical_offset) .show(ui, code_editor); - *vertical_offset = scroll_area.state.offset.y.clone(); + *vertical_offset = scroll_area.state.offset.y; } else { code_editor(ui); } @@ -386,14 +384,14 @@ impl CodeEditor { head: &str, ) -> (String, isize) { let mut substring = self - .get_selection_substring(text.clone(), cursor_range.clone()) + .get_selection_substring(text.clone(), cursor_range) .clone(); let mut new_text: String = "".into(); let extend: isize; if substring[1].contains(head) { extend = -self.delta_char(substring[1].clone(), head); - substring[1] = substring[1].replace(&format!("\n{}", head), &"\n".to_string()); + substring[1] = substring[1].replace(&format!("\n{}", head), "\n"); } else { extend = self.delta_char(substring[1].clone(), head); substring[1] = substring[1].replace(&"\n".to_string(), &format!("\n{}", head)); @@ -402,7 +400,7 @@ impl CodeEditor { new_text.push_str(&substring[1].clone()); new_text.push_str(&substring[2].clone()); - return (new_text, extend); + (new_text, extend) } fn add_start_of_line( @@ -412,7 +410,7 @@ impl CodeEditor { head: &str, ) -> (String, isize) { let mut substring = self - .get_selection_substring(text.clone(), cursor_range.clone()) + .get_selection_substring(text.clone(), cursor_range) .clone(); let mut new_text: String = "".into(); @@ -423,7 +421,7 @@ impl CodeEditor { new_text.push_str(&substring[1].clone()); new_text.push_str(&substring[2].clone()); - return (new_text, extend); + (new_text, extend) } fn remove_start_of_line( @@ -433,18 +431,18 @@ impl CodeEditor { head: &str, ) -> (String, isize) { let mut substring = self - .get_selection_substring(text.clone(), cursor_range.clone()) + .get_selection_substring(text.clone(), cursor_range) .clone(); let mut new_text: String = "".into(); let extend: isize = -self.delta_char(substring[1].clone(), head); - substring[1] = substring[1].replace(&format!("\n{}", head), &"\n".to_string()); + substring[1] = substring[1].replace(&format!("\n{}", head), "\n"); new_text.push_str(&substring[0].clone()); new_text.push_str(&substring[1].clone()); new_text.push_str(&substring[2].clone()); - return (new_text, extend); + (new_text, extend) } fn get_selection_substring(&self, text: String, cursor_range: CCursorRange) -> Vec { @@ -459,11 +457,11 @@ impl CodeEditor { let last_char = end; - return vec![ + vec![ text.slice(..first_char).to_string(), text.slice(first_char..last_char).to_string(), text.slice(last_char..).to_string(), - ]; + ] } fn delta_char(&self, text: String, modifier: &str) -> isize { @@ -478,7 +476,7 @@ impl CodeEditor { let cursor = min(cursor_range.primary.index, cursor_range.secondary.index); if cursor < 2 { - return (text.clone().to_string(), 1 as isize); + return (text.clone().to_string(), 1_isize); } let mut last_line_break = cursor - 1; @@ -492,15 +490,15 @@ impl CodeEditor { .collect::>() .len(); - let new_indent_depth = indent_depth.clone(); + let new_indent_depth = indent_depth; let mut new_text: String = text.clone().slice(..(cursor + 1)).to_string(); - new_text.push_str(&"\t".repeat(new_indent_depth.clone())); + new_text.push_str(&"\t".repeat(new_indent_depth)); new_text.push_str(text.clone().slice((cursor + 1)..)); - return ( + ( new_text.clone().to_string(), (new_indent_depth + 1) as isize, - ); + ) } } diff --git a/src/main.rs b/src/main.rs index 3e58d6f..0a4c78d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -182,8 +182,8 @@ impl eframe::App for Calcifer { } if ctx.input(|i| i.key_pressed(egui::Key::F) && i.modifiers.ctrl) { - self.search_menu.visible = !self.search_menu.visible.clone(); - self.search_menu.initialized = !self.search_menu.visible.clone(); + self.search_menu.visible = !self.search_menu.visible; + self.search_menu.initialized = !self.search_menu.visible; } if ctx.input(|i| i.viewport().close_requested()) { @@ -193,7 +193,7 @@ impl eframe::App for Calcifer { unsaved_tabs.push(index); } } - if unsaved_tabs.len() > 0 { + if !unsaved_tabs.is_empty() { let mut unsaved_tabs_names: String = "".to_string(); for index in unsaved_tabs.iter() { unsaved_tabs_names.push_str(&self.tabs[*index].get_name()); diff --git a/src/tools/confirm.rs b/src/tools/confirm.rs index f84290f..1c25f3c 100644 --- a/src/tools/confirm.rs +++ b/src/tools/confirm.rs @@ -18,13 +18,13 @@ impl ConfirmWindow { } pub fn show(&mut self, ctx: &egui::Context) { - let mut visible = self.visible.clone(); + let mut visible = self.visible; egui::Window::new(self.id.clone()) .open(&mut visible) .vscroll(true) .hscroll(true) .show(ctx, |ui| self.ui(ui)); - self.visible = self.visible.clone() && visible; + self.visible = self.visible && visible; } fn ui(&mut self, ui: &mut egui::Ui) { diff --git a/src/tools/mod.rs b/src/tools/mod.rs index b69fdfe..c502e9f 100644 --- a/src/tools/mod.rs +++ b/src/tools/mod.rs @@ -134,7 +134,7 @@ pub fn version() -> String { } } } - return "".to_string(); + "".to_string() } #[cfg(test)] diff --git a/src/tools/search.rs b/src/tools/search.rs index 6523004..12bfd19 100644 --- a/src/tools/search.rs +++ b/src/tools/search.rs @@ -73,13 +73,13 @@ impl Default for SearchWindow { impl SearchWindow { pub fn show(&mut self, ctx: &egui::Context, tabs: &mut Vec, selected_tab: &mut TabNumber) { - let mut visible = self.visible.clone(); + let mut visible = self.visible; egui::Window::new("Search") .open(&mut visible) //I want it to be able to change its visibility (if user close manually) .vscroll(true) .hscroll(true) .show(ctx, |ui| self.ui(ui, tabs, selected_tab)); //but I want to edit the rest of the parameters and maybe close automatically - self.visible = self.visible.clone() && visible; + self.visible = self.visible && visible; } fn ui(&mut self, ui: &mut egui::Ui, tabs: &mut Vec, selected_tab: &mut TabNumber) { @@ -115,8 +115,8 @@ impl SearchWindow { } if self.search_text == self.searched_text - && self.search_text.len() > 0 - && self.results.len() == 0 + && !self.search_text.is_empty() + && self.results.is_empty() { ui.colored_label(RED, " 0/0 "); } else { @@ -132,7 +132,7 @@ impl SearchWindow { } }); - let previous_bool_state = self.across_documents.clone(); + let previous_bool_state = self.across_documents; ui.checkbox(&mut self.across_documents, "Across documents"); if previous_bool_state != self.across_documents { self.searched_text = "".into(); @@ -164,15 +164,15 @@ impl SearchWindow { } pub fn get_cursor_start(&self) -> usize { - self.results[self.current_result].start.clone() + self.results[self.current_result].start } pub fn get_cursor_end(&self) -> usize { - self.results[self.current_result].end.clone() + self.results[self.current_result].end } fn search(&mut self, tabs: &mut Vec, selected_tab: &mut TabNumber) { - if self.search_text.len() == 0 { + if self.search_text.is_empty() { return; } @@ -194,7 +194,7 @@ impl SearchWindow { self.results = search_results.clone(); self.current_result = 0; - if self.results.len() > 0 { + if !self.results.is_empty() { self.find_result(tabs, selected_tab, 0); } } @@ -215,7 +215,7 @@ impl SearchWindow { fn find_result(&mut self, tabs: &mut Vec, selected_tab: &mut TabNumber, direction: i32) { if self.searched_text != self.search_text { self.search(tabs, &mut *selected_tab); - } else if self.results.len() > 0 { + } else if !self.results.is_empty() { self.current_result = (self.current_result as i32 + direction + self.results.len() as i32) as usize % self.results.len(); diff --git a/src/tools/settings.rs b/src/tools/settings.rs index 5aa6cf3..df384d6 100644 --- a/src/tools/settings.rs +++ b/src/tools/settings.rs @@ -18,13 +18,13 @@ impl SettingsWindow { } pub fn show(&mut self, ctx: &egui::Context) { - let mut visible = self.visible.clone(); + let mut visible = self.visible; egui::Window::new("Settings") .open(&mut visible) //I want it to be able to change its visibility (if user close manually) .vscroll(true) .hscroll(true) .show(ctx, |ui| self.ui(ui)); //but I want to edit the rest of the parameters and maybe close automatically - self.visible = self.visible.clone() && visible; + self.visible = self.visible && visible; } fn ui(&mut self, ui: &mut egui::Ui) { @@ -32,9 +32,9 @@ impl SettingsWindow { ui.horizontal(|ui| { ui.label("Theme "); - let previous_theme = self.theme.clone(); + let previous_theme = self.theme; egui::ComboBox::from_label("") - .selected_text(format!("{}", self.theme.name)) + .selected_text(self.theme.name.to_string()) .show_ui(ui, |ui| { ui.style_mut().wrap = Some(false); ui.set_min_width(60.0); diff --git a/src/tools/shortcuts.rs b/src/tools/shortcuts.rs index 319d60d..e24fff2 100644 --- a/src/tools/shortcuts.rs +++ b/src/tools/shortcuts.rs @@ -10,13 +10,13 @@ impl ShortcutsWindow { } pub fn show(&mut self, ctx: &egui::Context) { - let mut visible = self.visible.clone(); + let mut visible = self.visible; egui::Window::new("Shortcuts") .open(&mut visible) .vscroll(true) .hscroll(true) .show(ctx, |ui| self.ui(ui)); - self.visible = self.visible.clone() && visible; + self.visible = self.visible && visible; } fn ui(&mut self, ui: &mut egui::Ui) { diff --git a/src/tools/tabs.rs b/src/tools/tabs.rs index 8210dca..8aeac2d 100644 --- a/src/tools/tabs.rs +++ b/src/tools/tabs.rs @@ -51,7 +51,7 @@ impl Default for Tab { impl Tab { pub fn new(path: PathBuf) -> Self { Self { - path: path.clone().into(), + path: path.clone(), code: read_to_string(path.clone()) .expect("Not able to read the file") .replace(&" ".repeat(4), "\t"), diff --git a/src/tools/terminal.rs b/src/tools/terminal.rs index 1d2c2ac..a9f5da7 100644 --- a/src/tools/terminal.rs +++ b/src/tools/terminal.rs @@ -64,7 +64,7 @@ pub fn send_command(command: String) -> CommandEntry { return entry; } - let path_append = command[3..].replace("~", "/home/penwing"); + let path_append = command[3..].replace('~', "/home/penwing"); let path = Path::new(&path_append); if format!("{}", path.display()) == "/" { @@ -76,12 +76,12 @@ pub fn send_command(command: String) -> CommandEntry { if env::set_current_dir(path).is_ok() { let mut entry = CommandEntry::new(format!("echo Moved to : {}", path.display())); entry.command = command; - return entry; + entry } else { let mut entry = CommandEntry::new(format!("echo Could not find path : {} >&2", path.display())); entry.command = command; - return entry; + entry } } @@ -110,5 +110,5 @@ pub fn execute( fcntl(stderr_fd, FcntlArg::F_SETFL(OFlag::O_NONBLOCK)) .expect("Failed to set non-blocking mode"); - return (BufReader::new(stdout), BufReader::new(stderr)); + (BufReader::new(stdout), BufReader::new(stderr)) }