Skip to content

Commit f2d62a5

Browse files
committed
fix: resolve clippy warnings in cortex-tui crate
- Remove unused KeyModifiers import in theme.rs (keep in tests) - Replace deprecated buf.get(x, y) with buf[(x, y)] indexing - Collapse nested if statements using let..&& pattern - Convert let..else to ? operator where applicable - Replace match with single arm to if let - Replace len() > 0 with !is_empty() - Remove unnecessary .clone() on Copy types - Remove useless .into() conversions - Use Range::contains() instead of manual comparison
1 parent 4b67cd4 commit f2d62a5

10 files changed

Lines changed: 51 additions & 55 deletions

File tree

src/cortex-tui/src/cards/help.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ mod tests {
586586

587587
// Should have fewer items
588588
assert!(card.filtered_items.len() < initial_count);
589-
assert!(card.filtered_items.len() > 0);
589+
assert!(!card.filtered_items.is_empty());
590590
}
591591

592592
#[test]

src/cortex-tui/src/modal/commands.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -885,23 +885,23 @@ mod tests {
885885

886886
// Navigate down to second command
887887
let down = KeyEvent::new(KeyCode::Down, KeyModifiers::NONE);
888-
modal.handle_key(down.clone());
888+
modal.handle_key(down);
889889
let second = modal.selected_command().unwrap();
890890
assert_eq!(
891891
second.name, "export",
892892
"Second command should be 'export' (Session category)"
893893
);
894894

895895
// Navigate down to third command
896-
modal.handle_key(down.clone());
896+
modal.handle_key(down);
897897
let third = modal.selected_command().unwrap();
898898
assert_eq!(
899899
third.name, "model",
900900
"Third command should be 'model' (Model category)"
901901
);
902902

903903
// Navigate down to fourth command
904-
modal.handle_key(down.clone());
904+
modal.handle_key(down);
905905
let fourth = modal.selected_command().unwrap();
906906
assert_eq!(
907907
fourth.name, "settings",

src/cortex-tui/src/modal/theme.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
//! A modal for selecting the application theme (dark, light, ocean_dark, monokai).
44
55
use cortex_core::style::{CYAN_PRIMARY, SURFACE_0, TEXT, TEXT_DIM, VOID};
6-
use crossterm::event::{KeyCode, KeyEvent, KeyModifiers};
6+
use crossterm::event::{KeyCode, KeyEvent};
77
use ratatui::buffer::Buffer;
88
use ratatui::layout::Rect;
99
use ratatui::style::Style;
@@ -251,6 +251,7 @@ impl Modal for ThemeSelectorModal {
251251
#[cfg(test)]
252252
mod tests {
253253
use super::*;
254+
use crossterm::event::KeyModifiers;
254255

255256
#[test]
256257
fn test_theme_selector_new() {
@@ -372,7 +373,7 @@ mod tests {
372373

373374
// Navigate to ocean_dark (index 2)
374375
let down = KeyEvent::new(KeyCode::Down, KeyModifiers::NONE);
375-
modal.handle_key(down.clone());
376+
modal.handle_key(down);
376377
modal.handle_key(down);
377378
assert_eq!(modal.selected_theme_id(), Some("ocean_dark"));
378379

src/cortex-tui/src/runner/event_loop/mouse.rs

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,17 @@ impl EventLoop {
2121
match action {
2222
MouseAction::Click { x, y, button } => {
2323
// Handle interactive mode clicks
24-
if self.app_state.is_interactive_mode() {
25-
if let Some((action, item_id, item_ids)) = self.handle_interactive_click(x, y) {
26-
let keep_open = self
27-
.handle_interactive_selection(action, item_id, item_ids)
28-
.await;
29-
if !keep_open {
30-
self.app_state.exit_interactive_mode();
31-
}
32-
self.render(terminal)?;
33-
return Ok(());
24+
if self.app_state.is_interactive_mode()
25+
&& let Some((action, item_id, item_ids)) = self.handle_interactive_click(x, y)
26+
{
27+
let keep_open = self
28+
.handle_interactive_selection(action, item_id, item_ids)
29+
.await;
30+
if !keep_open {
31+
self.app_state.exit_interactive_mode();
3432
}
33+
self.render(terminal)?;
34+
return Ok(());
3535
}
3636

3737
// Handle question view clicks
@@ -100,15 +100,15 @@ impl EventLoop {
100100

101101
MouseAction::Move { x, y } => {
102102
// Handle hover effects for interactive mode
103-
if self.app_state.is_interactive_mode() {
104-
if let Some(state) = self.app_state.get_interactive_state_mut() {
105-
if let Some(idx) = state.hit_test(x, y) {
106-
if state.hovered != Some(idx) {
107-
state.hovered = Some(idx);
108-
}
109-
} else if state.hovered.is_some() {
110-
state.hovered = None;
103+
if self.app_state.is_interactive_mode()
104+
&& let Some(state) = self.app_state.get_interactive_state_mut()
105+
{
106+
if let Some(idx) = state.hit_test(x, y) {
107+
if state.hovered != Some(idx) {
108+
state.hovered = Some(idx);
111109
}
110+
} else if state.hovered.is_some() {
111+
state.hovered = None;
112112
}
113113
}
114114

@@ -189,9 +189,7 @@ impl EventLoop {
189189
x: u16,
190190
y: u16,
191191
) -> Option<(crate::interactive::InteractiveAction, String, Vec<String>)> {
192-
let Some(state) = self.app_state.get_interactive_state_mut() else {
193-
return None;
194-
};
192+
let state = self.app_state.get_interactive_state_mut()?;
195193

196194
// Check if click is on a tab first
197195
if let Some(tab_idx) = state.hit_test_tab(x, y) {
@@ -209,9 +207,7 @@ impl EventLoop {
209207
}
210208

211209
// Hit test using stored click zones
212-
let Some(idx) = state.hit_test(x, y) else {
213-
return None;
214-
};
210+
let idx = state.hit_test(x, y)?;
215211

216212
// Move selection to clicked item
217213
state.selected = idx;

src/cortex-tui/src/runner/event_loop/rendering.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ impl EventLoop {
1515
/// Renders the current view to the terminal.
1616
pub(super) fn render(&mut self, terminal: &mut CortexTerminal) -> Result<()> {
1717
// Check if scrollback clear was requested
18-
if self.app_state.take_pending_scrollback_clear() {
19-
if let Err(e) = terminal.clear_scrollback() {
20-
tracing::warn!("Failed to clear terminal scrollback: {}", e);
21-
}
18+
if self.app_state.take_pending_scrollback_clear()
19+
&& let Err(e) = terminal.clear_scrollback()
20+
{
21+
tracing::warn!("Failed to clear terminal scrollback: {}", e);
2222
}
2323

2424
// Sync streaming content from stream controller to app state
@@ -316,12 +316,9 @@ impl EventLoop {
316316
if let Some(modal) = active_modal {
317317
use crate::app::ActiveModal;
318318
use crate::widgets::ModelPicker;
319-
match modal {
320-
ActiveModal::ModelPicker => {
321-
let picker = ModelPicker::new(&self.app_state.model_picker);
322-
frame.render_widget(picker, area);
323-
}
324-
_ => {}
319+
if let ActiveModal::ModelPicker = modal {
320+
let picker = ModelPicker::new(&self.app_state.model_picker);
321+
frame.render_widget(picker, area);
325322
}
326323
}
327324

src/cortex-tui/src/runner/event_loop/tools.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -368,11 +368,13 @@ impl EventLoop {
368368
}
369369

370370
// Handle billing events specially
371-
if name == "billing" && id == "billing" && success {
372-
if let Some(data_str) = output.strip_prefix("billing:data:") {
373-
self.handle_billing_data(data_str);
374-
return;
375-
}
371+
if name == "billing"
372+
&& id == "billing"
373+
&& success
374+
&& let Some(data_str) = output.strip_prefix("billing:data:")
375+
{
376+
self.handle_billing_data(data_str);
377+
return;
376378
}
377379

378380
tracing::debug!(

src/cortex-tui/src/views/approval.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -620,21 +620,21 @@ mod tests {
620620
fn test_determine_value_style() {
621621
// Boolean
622622
let style = determine_value_style("true");
623-
assert_eq!(style.fg, Some(ORANGE.into()));
623+
assert_eq!(style.fg, Some(ORANGE));
624624

625625
let style = determine_value_style("false");
626-
assert_eq!(style.fg, Some(ORANGE.into()));
626+
assert_eq!(style.fg, Some(ORANGE));
627627

628628
// Null
629629
let style = determine_value_style("null");
630-
assert_eq!(style.fg, Some(RED.into()));
630+
assert_eq!(style.fg, Some(RED));
631631

632632
// Number
633633
let style = determine_value_style("42");
634-
assert_eq!(style.fg, Some(YELLOW.into()));
634+
assert_eq!(style.fg, Some(YELLOW));
635635

636636
let style = determine_value_style("3.14");
637-
assert_eq!(style.fg, Some(YELLOW.into()));
637+
assert_eq!(style.fg, Some(YELLOW));
638638
}
639639

640640
#[test]

src/cortex-tui/src/views/minimal_session/tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ mod tests {
6969
let mut has_content = false;
7070
for y in 0..24 {
7171
for x in 0..80 {
72-
let symbol = buf.get(x, y).symbol();
72+
let symbol = buf[(x, y)].symbol();
7373
if !symbol.trim().is_empty() && symbol != " " {
7474
has_content = true;
7575
break;

src/cortex-tui/src/widgets/command_palette/fuzzy.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ mod tests {
8383
#[test]
8484
fn test_fuzzy_score_prefix_match() {
8585
let score = fuzzy_score("hel", "help").unwrap();
86-
assert!(score >= 500 && score < 1000);
86+
assert!((500..1000).contains(&score));
8787
}
8888

8989
#[test]

src/cortex-tui/src/widgets/key_hints.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ mod tests {
491491

492492
// Check that content was rendered
493493
let content: String = (0..80)
494-
.map(|x| buf.get(x, 0).symbol().chars().next().unwrap_or(' '))
494+
.map(|x| buf[(x, 0)].symbol().chars().next().unwrap_or(' '))
495495
.collect();
496496
assert!(content.contains("commands"));
497497
assert!(content.contains("help"));
@@ -506,7 +506,7 @@ mod tests {
506506
hints.render(area, &mut buf);
507507

508508
let content: String = (0..80)
509-
.map(|x| buf.get(x, 0).symbol().chars().next().unwrap_or(' '))
509+
.map(|x| buf[(x, 0)].symbol().chars().next().unwrap_or(' '))
510510
.collect();
511511
assert!(content.contains("interrupt"));
512512
}
@@ -520,7 +520,7 @@ mod tests {
520520
hints.render(area, &mut buf);
521521

522522
let content: String = (0..80)
523-
.map(|x| buf.get(x, 0).symbol().chars().next().unwrap_or(' '))
523+
.map(|x| buf[(x, 0)].symbol().chars().next().unwrap_or(' '))
524524
.collect();
525525
assert!(content.contains("approve"));
526526
assert!(content.contains("reject"));

0 commit comments

Comments
 (0)