fix(lints): clippy 1.89-1.90 (#14223)

This commit is contained in:
RoloEdits
2025-09-22 06:44:17 -07:00
committed by GitHub
parent 55167c21df
commit 37fe42d05d
24 changed files with 39 additions and 43 deletions

View File

@@ -1,4 +1,4 @@
use std::{borrow::Cow, collections::HashMap, iter}; use std::{borrow::Cow, collections::HashMap};
use helix_stdx::rope::RopeSliceExt; use helix_stdx::rope::RopeSliceExt;
use tree_house::TREE_SITTER_MATCH_LIMIT; use tree_house::TREE_SITTER_MATCH_LIMIT;
@@ -214,7 +214,10 @@ fn whitespace_with_same_width(text: RopeSlice) -> String {
if grapheme == "\t" { if grapheme == "\t" {
s.push('\t'); s.push('\t');
} else { } else {
s.extend(std::iter::repeat(' ').take(grapheme_width(&Cow::from(grapheme)))); s.extend(std::iter::repeat_n(
' ',
grapheme_width(&Cow::from(grapheme)),
));
} }
} }
s s
@@ -243,10 +246,10 @@ pub fn normalize_indentation(
original_len += 1; original_len += 1;
} }
if indent_style == IndentStyle::Tabs { if indent_style == IndentStyle::Tabs {
dst.extend(iter::repeat('\t').take(len / tab_width)); dst.extend(std::iter::repeat_n('\t', len / tab_width));
len %= tab_width; len %= tab_width;
} }
dst.extend(iter::repeat(' ').take(len)); dst.extend(std::iter::repeat_n(' ', len));
original_len original_len
} }

View File

@@ -361,7 +361,7 @@ impl Transform {
} }
} }
FormatItem::Conditional(i, ref if_, ref else_) => { FormatItem::Conditional(i, ref if_, ref else_) => {
if cap.get_group(i).map_or(true, |mat| mat.is_empty()) { if cap.get_group(i).is_none_or(|mat| mat.is_empty()) {
buf.push_str(else_) buf.push_str(else_)
} else { } else {
buf.push_str(if_) buf.push_str(if_)

View File

@@ -562,15 +562,15 @@ impl Syntax {
self.inner.tree_for_byte_range(start, end) self.inner.tree_for_byte_range(start, end)
} }
pub fn named_descendant_for_byte_range(&self, start: u32, end: u32) -> Option<Node> { pub fn named_descendant_for_byte_range(&self, start: u32, end: u32) -> Option<Node<'_>> {
self.inner.named_descendant_for_byte_range(start, end) self.inner.named_descendant_for_byte_range(start, end)
} }
pub fn descendant_for_byte_range(&self, start: u32, end: u32) -> Option<Node> { pub fn descendant_for_byte_range(&self, start: u32, end: u32) -> Option<Node<'_>> {
self.inner.descendant_for_byte_range(start, end) self.inner.descendant_for_byte_range(start, end)
} }
pub fn walk(&self) -> TreeCursor { pub fn walk(&self) -> TreeCursor<'_> {
self.inner.walk() self.inner.walk()
} }
@@ -1073,7 +1073,7 @@ fn node_is_visible(node: &Node) -> bool {
node.is_missing() || (node.is_named() && node.grammar().node_kind_is_visible(node.kind_id())) node.is_missing() || (node.is_named() && node.grammar().node_kind_is_visible(node.kind_id()))
} }
fn format_anonymous_node_kind(kind: &str) -> Cow<str> { fn format_anonymous_node_kind(kind: &str) -> Cow<'_, str> {
if kind.contains('"') { if kind.contains('"') {
Cow::Owned(kind.replace('"', "\\\"")) Cow::Owned(kind.replace('"', "\\\""))
} else { } else {
@@ -1130,7 +1130,6 @@ fn pretty_print_tree_impl<W: fmt::Write>(
} }
/// Finds the child of `node` which contains the given byte range. /// Finds the child of `node` which contains the given byte range.
pub fn child_for_byte_range<'a>(node: &Node<'a>, range: ops::Range<u32>) -> Option<Node<'a>> { pub fn child_for_byte_range<'a>(node: &Node<'a>, range: ops::Range<u32>) -> Option<Node<'a>> {
for child in node.children() { for child in node.children() {
let child_range = child.byte_range(); let child_range = child.byte_range();

View File

@@ -520,7 +520,7 @@ impl ChangeSet {
pos pos
} }
pub fn changes_iter(&self) -> ChangeIterator { pub fn changes_iter(&self) -> ChangeIterator<'_> {
ChangeIterator::new(self) ChangeIterator::new(self)
} }
} }
@@ -753,7 +753,7 @@ impl Transaction {
}) })
} }
pub fn changes_iter(&self) -> ChangeIterator { pub fn changes_iter(&self) -> ChangeIterator<'_> {
self.changes.changes_iter() self.changes.changes_iter()
} }
} }

View File

@@ -129,6 +129,7 @@ pub struct CodeActionParams {
/// response for CodeActionRequest /// response for CodeActionRequest
pub type CodeActionResponse = Vec<CodeActionOrCommand>; pub type CodeActionResponse = Vec<CodeActionOrCommand>;
#[allow(clippy::large_enum_variant)] // TODO: In a separate PR attempt the `Box<CodeAction>` pattern.
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[serde(untagged)] #[serde(untagged)]
pub enum CodeActionOrCommand { pub enum CodeActionOrCommand {

View File

@@ -40,14 +40,6 @@ pub struct WorkDoneProgressCancelParams {
pub token: ProgressToken, pub token: ProgressToken,
} }
/// Options to signal work done progress support in server capabilities.
#[derive(Debug, Eq, PartialEq, Default, Deserialize, Serialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct WorkDoneProgressOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub work_done_progress: Option<bool>,
}
/// An optional token that a server can use to report work done progress /// An optional token that a server can use to report work done progress
#[derive(Debug, Eq, PartialEq, Default, Deserialize, Serialize, Clone)] #[derive(Debug, Eq, PartialEq, Default, Deserialize, Serialize, Clone)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]

View File

@@ -85,7 +85,7 @@ fn find_brace_end(src: &[u8]) -> Option<usize> {
None None
} }
fn expand_impl(src: &OsStr, mut resolve: impl FnMut(&OsStr) -> Option<OsString>) -> Cow<OsStr> { fn expand_impl(src: &OsStr, mut resolve: impl FnMut(&OsStr) -> Option<OsString>) -> Cow<'_, OsStr> {
use regex_automata::meta::Regex; use regex_automata::meta::Regex;
static REGEX: Lazy<Regex> = Lazy::new(|| { static REGEX: Lazy<Regex> = Lazy::new(|| {
@@ -157,7 +157,7 @@ fn expand_impl(src: &OsStr, mut resolve: impl FnMut(&OsStr) -> Option<OsString>)
/// * `${<var>:-<default>}`, `${<var>-<default>}` /// * `${<var>:-<default>}`, `${<var>-<default>}`
/// * `${<var>:=<default>}`, `${<var>=default}` /// * `${<var>:=<default>}`, `${<var>=default}`
/// ///
pub fn expand<S: AsRef<OsStr> + ?Sized>(src: &S) -> Cow<OsStr> { pub fn expand<S: AsRef<OsStr> + ?Sized>(src: &S) -> Cow<'_, OsStr> {
expand_impl(src.as_ref(), |var| std::env::var_os(var)) expand_impl(src.as_ref(), |var| std::env::var_os(var))
} }

View File

@@ -100,7 +100,7 @@ struct PickerDiagnostic {
diag: lsp::Diagnostic, diag: lsp::Diagnostic,
} }
fn location_to_file_location(location: &Location) -> Option<FileLocation> { fn location_to_file_location(location: &Location) -> Option<FileLocation<'_>> {
let path = location.uri.as_path()?; let path = location.uri.as_path()?;
let line = Some(( let line = Some((
location.range.start.line as usize, location.range.start.line as usize,
@@ -589,7 +589,7 @@ struct CodeActionOrCommandItem {
impl ui::menu::Item for CodeActionOrCommandItem { impl ui::menu::Item for CodeActionOrCommandItem {
type Data = (); type Data = ();
fn format(&self, _data: &Self::Data) -> Row { fn format(&self, _data: &Self::Data) -> Row<'_> {
match &self.lsp_item { match &self.lsp_item {
lsp::CodeActionOrCommand::CodeAction(action) => action.title.as_str().into(), lsp::CodeActionOrCommand::CodeAction(action) => action.title.as_str().into(),
lsp::CodeActionOrCommand::Command(command) => command.title.as_str().into(), lsp::CodeActionOrCommand::Command(command) => command.title.as_str().into(),
@@ -1146,7 +1146,7 @@ pub fn rename_symbol(cx: &mut Context) {
let Some(language_server) = doc let Some(language_server) = doc
.language_servers_with_feature(LanguageServerFeature::RenameSymbol) .language_servers_with_feature(LanguageServerFeature::RenameSymbol)
.find(|ls| language_server_id.map_or(true, |id| id == ls.id())) .find(|ls| language_server_id.is_none_or(|id| id == ls.id()))
else { else {
cx.editor cx.editor
.set_error("No configured language server supports symbol renaming"); .set_error("No configured language server supports symbol renaming");

View File

@@ -3740,7 +3740,7 @@ pub(super) fn command_mode(cx: &mut Context) {
cx.push_layer(Box::new(prompt)); cx.push_layer(Box::new(prompt));
} }
fn command_line_doc(input: &str) -> Option<Cow<str>> { fn command_line_doc(input: &str) -> Option<Cow<'_, str>> {
let (command, _, _) = command_line::split(input); let (command, _, _) = command_line::split(input);
let command = TYPABLE_COMMAND_MAP.get(command)?; let command = TYPABLE_COMMAND_MAP.get(command)?;

View File

@@ -67,6 +67,7 @@ impl LspCompletionItem {
} }
} }
#[allow(clippy::large_enum_variant)] // TODO: In a separate PR attempt the `Box<LspCompletionItem>` pattern.
#[derive(Debug, PartialEq, Clone)] #[derive(Debug, PartialEq, Clone)]
pub enum CompletionItem { pub enum CompletionItem {
Lsp(LspCompletionItem), Lsp(LspCompletionItem),

View File

@@ -87,7 +87,7 @@ impl helix_event::AsyncHook for CompletionHandler {
if self if self
.trigger .trigger
.or(self.in_flight) .or(self.in_flight)
.map_or(true, |trigger| trigger.doc != doc || trigger.view != view) .is_none_or(|trigger| trigger.doc != doc || trigger.view != view)
{ {
self.trigger = Some(Trigger { self.trigger = Some(Trigger {
pos: trigger_pos, pos: trigger_pos,

View File

@@ -1,9 +1,9 @@
use crate::handlers::completion::LspCompletionItem;
use crate::ui::{menu, Markdown, Menu, Popup, PromptEvent}; use crate::ui::{menu, Markdown, Menu, Popup, PromptEvent};
use crate::{ use crate::{
compositor::{Component, Context, Event, EventResult}, compositor::{Component, Context, Event, EventResult},
handlers::completion::{ handlers::completion::{
trigger_auto_completion, CompletionItem, CompletionResponse, LspCompletionItem, trigger_auto_completion, CompletionItem, CompletionResponse, ResolveHandler,
ResolveHandler,
}, },
}; };
use helix_core::snippets::{ActiveSnippet, RenderedSnippet, Snippet}; use helix_core::snippets::{ActiveSnippet, RenderedSnippet, Snippet};
@@ -28,7 +28,7 @@ use std::cmp::Reverse;
impl menu::Item for CompletionItem { impl menu::Item for CompletionItem {
type Data = Style; type Data = Style;
fn format(&self, dir_style: &Self::Data) -> menu::Row { fn format(&self, dir_style: &Self::Data) -> menu::Row<'_> {
let deprecated = match self { let deprecated = match self {
CompletionItem::Lsp(LspCompletionItem { item, .. }) => { CompletionItem::Lsp(LspCompletionItem { item, .. }) => {
item.deprecated.unwrap_or_default() item.deprecated.unwrap_or_default()

View File

@@ -214,7 +214,7 @@ impl<'a> TextRenderer<'a> {
let tab_width = doc.tab_width(); let tab_width = doc.tab_width();
let tab = if ws_render.tab() == WhitespaceRenderValue::All { let tab = if ws_render.tab() == WhitespaceRenderValue::All {
std::iter::once(ws_chars.tab) std::iter::once(ws_chars.tab)
.chain(std::iter::repeat(ws_chars.tabpad).take(tab_width - 1)) .chain(std::iter::repeat_n(ws_chars.tabpad, tab_width - 1))
.collect() .collect()
} else { } else {
" ".repeat(tab_width) " ".repeat(tab_width)

View File

@@ -13,7 +13,7 @@ pub trait Item: Sync + Send + 'static {
/// Additional editor state that is used for label calculation. /// Additional editor state that is used for label calculation.
type Data: Sync + Send + 'static; type Data: Sync + Send + 'static;
fn format(&self, data: &Self::Data) -> Row; fn format(&self, data: &Self::Data) -> Row<'_>;
} }
pub type MenuCallback<T> = Box<dyn Fn(&mut Editor, Option<&T>, MenuEvent)>; pub type MenuCallback<T> = Box<dyn Fn(&mut Editor, Option<&T>, MenuEvent)>;

View File

@@ -900,7 +900,7 @@ impl<T: 'static + Send + Sync, D: 'static + Send + Sync> Picker<T, D> {
if let Some((preview, range)) = self.get_preview(cx.editor) { if let Some((preview, range)) = self.get_preview(cx.editor) {
let doc = match preview.document() { let doc = match preview.document() {
Some(doc) Some(doc)
if range.map_or(true, |(start, end)| { if range.is_none_or(|(start, end)| {
start <= end && end <= doc.text().len_lines() start <= end && end <= doc.text().len_lines()
}) => }) =>
{ {

View File

@@ -72,7 +72,7 @@ impl DiffHandle {
} }
/// Load the actual diff /// Load the actual diff
pub fn load(&self) -> Diff { pub fn load(&self) -> Diff<'_> {
Diff { Diff {
diff: self.diff.read(), diff: self.diff.read(),
inverted: self.inverted, inverted: self.inverted,

View File

@@ -128,7 +128,7 @@ impl InternedRopeLines {
/// Returns the `InternedInput` for performing the diff. /// Returns the `InternedInput` for performing the diff.
/// If `diff_base` or `doc` is so large that performing a diff could slow the editor /// If `diff_base` or `doc` is so large that performing a diff could slow the editor
/// this function returns `None`. /// this function returns `None`.
pub fn interned_lines(&self) -> Option<&InternedInput<RopeSlice>> { pub fn interned_lines(&self) -> Option<&InternedInput<RopeSlice<'_>>> {
if self.is_too_large() { if self.is_too_large() {
None None
} else { } else {

View File

@@ -102,7 +102,7 @@ struct EventAccumulator {
render_lock: Option<RenderLock>, render_lock: Option<RenderLock>,
} }
impl<'a> EventAccumulator { impl EventAccumulator {
fn new() -> EventAccumulator { fn new() -> EventAccumulator {
EventAccumulator { EventAccumulator {
diff_base: None, diff_base: None,

View File

@@ -186,7 +186,7 @@ impl<'a> InlineDiagnosticAccumulator<'a> {
.doc .doc
.diagnostics .diagnostics
.get(self.idx) .get(self.idx)
.map_or(true, |diag| diag.range.start != grapheme.char_idx) .is_none_or(|diag| diag.range.start != grapheme.char_idx)
{ {
return false; return false;
} }

View File

@@ -1655,7 +1655,7 @@ impl Document {
let savepoint_idx = self let savepoint_idx = self
.savepoints .savepoints
.iter() .iter()
.position(|savepoint_ref| savepoint_ref.as_ptr() == savepoint as *const _) .position(|savepoint_ref| std::ptr::eq(savepoint_ref.as_ptr(), savepoint))
.expect("Savepoint must belong to this document"); .expect("Savepoint must belong to this document");
let savepoint_ref = self.savepoints.remove(savepoint_idx); let savepoint_ref = self.savepoints.remove(savepoint_idx);

View File

@@ -1644,7 +1644,7 @@ impl Editor {
doc.language_servers.iter().filter(|(name, doc_ls)| { doc.language_servers.iter().filter(|(name, doc_ls)| {
language_servers language_servers
.get(*name) .get(*name)
.map_or(true, |ls| ls.id() != doc_ls.id()) .is_none_or(|ls| ls.id() != doc_ls.id())
}); });
for (_, language_server) in doc_language_servers_not_in_registry { for (_, language_server) in doc_language_servers_not_in_registry {
@@ -1654,7 +1654,7 @@ impl Editor {
let language_servers_not_in_doc = language_servers.iter().filter(|(name, ls)| { let language_servers_not_in_doc = language_servers.iter().filter(|(name, ls)| {
doc.language_servers doc.language_servers
.get(*name) .get(*name)
.map_or(true, |doc_ls| ls.id() != doc_ls.id()) .is_none_or(|doc_ls| ls.id() != doc_ls.id())
}); });
for (_, language_server) in language_servers_not_in_doc { for (_, language_server) in language_servers_not_in_doc {

View File

@@ -69,7 +69,7 @@ pub fn diagnostic<'doc>(
.iter() .iter()
.take_while(|d| { .take_while(|d| {
d.line == line d.line == line
&& d.provider.language_server_id().map_or(true, |id| { && d.provider.language_server_id().is_none_or(|id| {
doc.language_servers_with_feature(LanguageServerFeature::Diagnostics) doc.language_servers_with_feature(LanguageServerFeature::Diagnostics)
.any(|ls| ls.id() == id) .any(|ls| ls.id() == id)
}) })

View File

@@ -355,7 +355,7 @@ impl Editor {
&& diagnostic && diagnostic
.source .source
.as_ref() .as_ref()
.map_or(true, |source| !unchanged_diag_sources.contains(source)) .is_none_or(|source| !unchanged_diag_sources.contains(source))
}; };
let diagnostics = Self::doc_diagnostics_with_filter( let diagnostics = Self::doc_diagnostics_with_filter(
&self.language_servers, &self.language_servers,

View File

@@ -441,7 +441,7 @@ impl Tree {
} }
} }
pub fn traverse(&self) -> Traverse { pub fn traverse(&self) -> Traverse<'_> {
Traverse::new(self) Traverse::new(self)
} }