Detailed changes
@@ -822,14 +822,20 @@ style = { level = "allow", priority = -1 }
# Temporary list of style lints that we've fixed so far.
comparison_to_empty = "warn"
+into_iter_on_ref = "warn"
iter_cloned_collect = "warn"
iter_next_slice = "warn"
iter_nth = "warn"
iter_nth_zero = "warn"
iter_skip_next = "warn"
+let_and_return = "warn"
module_inception = { level = "deny" }
question_mark = { level = "deny" }
+single_match = "warn"
redundant_closure = { level = "deny" }
+redundant_static_lifetimes = { level = "warn" }
+redundant_pattern_matching = "warn"
+redundant_field_names = "warn"
declare_interior_mutable_const = { level = "deny" }
collapsible_if = { level = "warn"}
collapsible_else_if = { level = "warn" }
@@ -857,6 +863,10 @@ too_many_arguments = "allow"
# We often have large enum variants yet we rarely actually bother with splitting them up.
large_enum_variant = "allow"
+# `enum_variant_names` fires for all enums, even when they derive serde traits.
+# Adhering to this lint would be a breaking change.
+enum_variant_names = "allow"
+
[workspace.metadata.cargo-machete]
ignored = [
"bindgen",
@@ -264,15 +264,14 @@ impl ActionLog {
if let Some((git_diff, (buffer_repo, _))) = git_diff.as_ref().zip(buffer_repo) {
cx.update(|cx| {
let mut old_head = buffer_repo.read(cx).head_commit.clone();
- Some(cx.subscribe(git_diff, move |_, event, cx| match event {
- buffer_diff::BufferDiffEvent::DiffChanged { .. } => {
+ Some(cx.subscribe(git_diff, move |_, event, cx| {
+ if let buffer_diff::BufferDiffEvent::DiffChanged { .. } = event {
let new_head = buffer_repo.read(cx).head_commit.clone();
if new_head != old_head {
old_head = new_head;
git_diff_updates_tx.send(()).ok();
}
}
- _ => {}
}))
})?
} else {
@@ -103,26 +103,21 @@ impl ActivityIndicator {
cx.subscribe_in(
&workspace_handle,
window,
- |activity_indicator, _, event, window, cx| match event {
- workspace::Event::ClearActivityIndicator { .. } => {
- if activity_indicator.statuses.pop().is_some() {
- activity_indicator.dismiss_error_message(
- &DismissErrorMessage,
- window,
- cx,
- );
- cx.notify();
- }
+ |activity_indicator, _, event, window, cx| {
+ if let workspace::Event::ClearActivityIndicator { .. } = event
+ && activity_indicator.statuses.pop().is_some()
+ {
+ activity_indicator.dismiss_error_message(&DismissErrorMessage, window, cx);
+ cx.notify();
}
- _ => {}
},
)
.detach();
cx.subscribe(
&project.read(cx).lsp_store(),
- |activity_indicator, _, event, cx| match event {
- LspStoreEvent::LanguageServerUpdate { name, message, .. } => {
+ |activity_indicator, _, event, cx| {
+ if let LspStoreEvent::LanguageServerUpdate { name, message, .. } = event {
if let proto::update_language_server::Variant::StatusUpdate(status_update) =
message
{
@@ -191,7 +186,6 @@ impl ActivityIndicator {
}
cx.notify()
}
- _ => {}
},
)
.detach();
@@ -206,9 +200,10 @@ impl ActivityIndicator {
cx.subscribe(
&project.read(cx).git_store().clone(),
- |_, _, event: &GitStoreEvent, cx| match event {
- project::git_store::GitStoreEvent::JobsUpdated => cx.notify(),
- _ => {}
+ |_, _, event: &GitStoreEvent, cx| {
+ if let project::git_store::GitStoreEvent::JobsUpdated = event {
+ cx.notify()
+ }
},
)
.detach();
@@ -1645,15 +1645,13 @@ impl Thread {
self.tool_use
.request_tool_use(tool_message_id, tool_use, tool_use_metadata.clone(), cx);
- let pending_tool_use = self.tool_use.insert_tool_output(
+ self.tool_use.insert_tool_output(
tool_use_id.clone(),
tool_name,
tool_output,
self.configured_model.as_ref(),
self.completion_mode,
- );
-
- pending_tool_use
+ )
}
pub fn stream_completion(
@@ -74,7 +74,7 @@ impl Column for DataType {
}
}
-const RULES_FILE_NAMES: [&'static str; 9] = [
+const RULES_FILE_NAMES: [&str; 9] = [
".rules",
".cursorrules",
".windsurfrules",
@@ -28,7 +28,7 @@ use std::rc::Rc;
use std::sync::Arc;
use util::ResultExt;
-const RULES_FILE_NAMES: [&'static str; 9] = [
+const RULES_FILE_NAMES: [&str; 9] = [
".rules",
".cursorrules",
".windsurfrules",
@@ -655,8 +655,7 @@ mod tests {
mode: mode.clone(),
};
- let result = cx.update(|cx| resolve_path(&input, project, cx));
- result
+ cx.update(|cx| resolve_path(&input, project, cx))
}
fn assert_resolved_path_eq(path: anyhow::Result<ProjectPath>, expected: &str) {
@@ -149,7 +149,7 @@ impl acp_old::Client for OldAcpClientDelegate {
Ok(acp_old::RequestToolCallConfirmationResponse {
id: acp_old::ToolCallId(old_acp_id),
- outcome: outcome,
+ outcome,
})
}
@@ -266,7 +266,7 @@ impl acp_old::Client for OldAcpClientDelegate {
fn into_new_tool_call(id: acp::ToolCallId, request: acp_old::PushToolCallParams) -> acp::ToolCall {
acp::ToolCall {
- id: id,
+ id,
title: request.label,
kind: acp_kind_from_old_icon(request.icon),
status: acp::ToolCallStatus::InProgress,
@@ -175,9 +175,9 @@ impl McpServerTool for PermissionTool {
let claude_tool = ClaudeTool::infer(&input.tool_name, input.input.clone());
let tool_call_id = acp::ToolCallId(input.tool_use_id.context("Tool ID required")?.into());
- const ALWAYS_ALLOW: &'static str = "always_allow";
- const ALLOW: &'static str = "allow";
- const REJECT: &'static str = "reject";
+ const ALWAYS_ALLOW: &str = "always_allow";
+ const ALLOW: &str = "allow";
+ const REJECT: &str = "reject";
let chosen_option = thread
.update(cx, |thread, cx| {
@@ -428,12 +428,9 @@ pub async fn new_test_thread(
.await
.unwrap();
- let thread = cx
- .update(|cx| connection.new_thread(project.clone(), current_dir.as_ref(), cx))
+ cx.update(|cx| connection.new_thread(project.clone(), current_dir.as_ref(), cx))
.await
- .unwrap();
-
- thread
+ .unwrap()
}
pub async fn run_until_first_tool_call(
@@ -134,8 +134,8 @@ impl MessageEditor {
if prevent_slash_commands {
subscriptions.push(cx.subscribe_in(&editor, window, {
let semantics_provider = semantics_provider.clone();
- move |this, editor, event, window, cx| match event {
- EditorEvent::Edited { .. } => {
+ move |this, editor, event, window, cx| {
+ if let EditorEvent::Edited { .. } = event {
this.highlight_slash_command(
semantics_provider.clone(),
editor.clone(),
@@ -143,7 +143,6 @@ impl MessageEditor {
cx,
);
}
- _ => {}
}
}));
}
@@ -2124,7 +2124,7 @@ impl AcpThreadView {
.map(|view| div().px_4().w_full().max_w_128().child(view)),
)
.child(h_flex().mt_1p5().justify_center().children(
- connection.auth_methods().into_iter().map(|method| {
+ connection.auth_methods().iter().map(|method| {
Button::new(SharedString::from(method.id.0.clone()), method.name.clone())
.on_click({
let method_id = method.id.clone();
@@ -2574,7 +2574,7 @@ impl AcpThreadView {
) -> Div {
let editor_bg_color = cx.theme().colors().editor_background;
- v_flex().children(changed_buffers.into_iter().enumerate().flat_map(
+ v_flex().children(changed_buffers.iter().enumerate().flat_map(
|(index, (buffer, _diff))| {
let file = buffer.read(cx).file()?;
let path = file.path();
@@ -1373,12 +1373,12 @@ impl ActiveThread {
editor.focus_handle(cx).focus(window);
editor.move_to_end(&editor::actions::MoveToEnd, window, cx);
});
- let buffer_edited_subscription = cx.subscribe(&editor, |this, _, event, cx| match event {
- EditorEvent::BufferEdited => {
- this.update_editing_message_token_count(true, cx);
- }
- _ => {}
- });
+ let buffer_edited_subscription =
+ cx.subscribe(&editor, |this, _, event: &EditorEvent, cx| {
+ if event == &EditorEvent::BufferEdited {
+ this.update_editing_message_token_count(true, cx);
+ }
+ });
let context_picker_menu_handle = PopoverMenuHandle::default();
let context_strip = cx.new(|cx| {
@@ -958,7 +958,7 @@ impl AgentConfiguration {
}
parent.child(v_flex().py_1p5().px_1().gap_1().children(
- tools.into_iter().enumerate().map(|(ix, tool)| {
+ tools.iter().enumerate().map(|(ix, tool)| {
h_flex()
.id(("tool-item", ix))
.px_1()
@@ -487,7 +487,7 @@ impl ConfigureContextServerModal {
}
fn render_modal_description(&self, window: &mut Window, cx: &mut Context<Self>) -> AnyElement {
- const MODAL_DESCRIPTION: &'static str = "Visit the MCP server configuration docs to find all necessary arguments and environment variables.";
+ const MODAL_DESCRIPTION: &str = "Visit the MCP server configuration docs to find all necessary arguments and environment variables.";
if let ConfigurationSource::Extension {
installation_instructions: Some(installation_instructions),
@@ -322,16 +322,14 @@ impl AgentDiffPane {
}
fn handle_native_thread_event(&mut self, event: &ThreadEvent, cx: &mut Context<Self>) {
- match event {
- ThreadEvent::SummaryGenerated => self.update_title(cx),
- _ => {}
+ if let ThreadEvent::SummaryGenerated = event {
+ self.update_title(cx)
}
}
fn handle_acp_thread_event(&mut self, event: &AcpThreadEvent, cx: &mut Context<Self>) {
- match event {
- AcpThreadEvent::TitleUpdated => self.update_title(cx),
- _ => {}
+ if let AcpThreadEvent::TitleUpdated = event {
+ self.update_title(cx)
}
}
@@ -1541,15 +1539,11 @@ impl AgentDiff {
window: &mut Window,
cx: &mut Context<Self>,
) {
- match event {
- workspace::Event::ItemAdded { item } => {
- if let Some(editor) = item.downcast::<Editor>()
- && let Some(buffer) = Self::full_editor_buffer(editor.read(cx), cx)
- {
- self.register_editor(workspace.downgrade(), buffer.clone(), editor, window, cx);
- }
- }
- _ => {}
+ if let workspace::Event::ItemAdded { item } = event
+ && let Some(editor) = item.downcast::<Editor>()
+ && let Some(buffer) = Self::full_editor_buffer(editor.read(cx), cx)
+ {
+ self.register_editor(workspace.downgrade(), buffer.clone(), editor, window, cx);
}
}
@@ -354,7 +354,7 @@ impl ActiveView {
Self::Thread {
change_title_editor: editor,
thread: active_thread,
- message_editor: message_editor,
+ message_editor,
_subscriptions: subscriptions,
}
}
@@ -756,25 +756,25 @@ impl AgentPanel {
.ok();
});
- let _default_model_subscription = cx.subscribe(
- &LanguageModelRegistry::global(cx),
- |this, _, event: &language_model::Event, cx| match event {
- language_model::Event::DefaultModelChanged => match &this.active_view {
- ActiveView::Thread { thread, .. } => {
- thread
- .read(cx)
- .thread()
- .clone()
- .update(cx, |thread, cx| thread.get_or_init_configured_model(cx));
+ let _default_model_subscription =
+ cx.subscribe(
+ &LanguageModelRegistry::global(cx),
+ |this, _, event: &language_model::Event, cx| {
+ if let language_model::Event::DefaultModelChanged = event {
+ match &this.active_view {
+ ActiveView::Thread { thread, .. } => {
+ thread.read(cx).thread().clone().update(cx, |thread, cx| {
+ thread.get_or_init_configured_model(cx)
+ });
+ }
+ ActiveView::ExternalAgentThread { .. }
+ | ActiveView::TextThread { .. }
+ | ActiveView::History
+ | ActiveView::Configuration => {}
+ }
}
- ActiveView::ExternalAgentThread { .. }
- | ActiveView::TextThread { .. }
- | ActiveView::History
- | ActiveView::Configuration => {}
},
- _ => {}
- },
- );
+ );
let onboarding = cx.new(|cx| {
AgentPanelOnboarding::new(
@@ -1589,17 +1589,14 @@ impl AgentPanel {
let current_is_special = current_is_history || current_is_config;
let new_is_special = new_is_history || new_is_config;
- match &self.active_view {
- ActiveView::Thread { thread, .. } => {
- let thread = thread.read(cx);
- if thread.is_empty() {
- let id = thread.thread().read(cx).id().clone();
- self.history_store.update(cx, |store, cx| {
- store.remove_recently_opened_thread(id, cx);
- });
- }
+ if let ActiveView::Thread { thread, .. } = &self.active_view {
+ let thread = thread.read(cx);
+ if thread.is_empty() {
+ let id = thread.thread().read(cx).id().clone();
+ self.history_store.update(cx, |store, cx| {
+ store.remove_recently_opened_thread(id, cx);
+ });
}
- _ => {}
}
match &new_view {
@@ -3465,7 +3462,7 @@ impl AgentPanel {
.on_drop(cx.listener(move |this, paths: &ExternalPaths, window, cx| {
let tasks = paths
.paths()
- .into_iter()
+ .iter()
.map(|path| {
Workspace::project_path_for_path(this.project.clone(), path, false, cx)
})
@@ -385,12 +385,11 @@ impl ContextPicker {
}
pub fn select_first(&mut self, window: &mut Window, cx: &mut Context<Self>) {
- match &self.mode {
- ContextPickerState::Default(entity) => entity.update(cx, |entity, cx| {
+ // Other variants already select their first entry on open automatically
+ if let ContextPickerState::Default(entity) = &self.mode {
+ entity.update(cx, |entity, cx| {
entity.select_first(&Default::default(), window, cx)
- }),
- // Other variants already select their first entry on open automatically
- _ => {}
+ })
}
}
@@ -117,7 +117,7 @@ pub(crate) fn create_editor(
let mut editor = Editor::new(
editor::EditorMode::AutoHeight {
min_lines,
- max_lines: max_lines,
+ max_lines,
},
buffer,
None,
@@ -215,9 +215,10 @@ impl MessageEditor {
let subscriptions = vec![
cx.subscribe_in(&context_strip, window, Self::handle_context_strip_event),
- cx.subscribe(&editor, |this, _, event, cx| match event {
- EditorEvent::BufferEdited => this.handle_message_changed(cx),
- _ => {}
+ cx.subscribe(&editor, |this, _, event: &EditorEvent, cx| {
+ if event == &EditorEvent::BufferEdited {
+ this.handle_message_changed(cx)
+ }
}),
cx.observe(&context_store, |this, _, cx| {
// When context changes, reload it for token counting.
@@ -1132,7 +1133,7 @@ impl MessageEditor {
)
.when(is_edit_changes_expanded, |parent| {
parent.child(
- v_flex().children(changed_buffers.into_iter().enumerate().flat_map(
+ v_flex().children(changed_buffers.iter().enumerate().flat_map(
|(index, (buffer, _diff))| {
let file = buffer.read(cx).file()?;
let path = file.path();
@@ -1605,7 +1606,8 @@ pub fn extract_message_creases(
.collect::<HashMap<_, _>>();
// Filter the addon's list of creases based on what the editor reports,
// since the addon might have removed creases in it.
- let creases = editor.display_map.update(cx, |display_map, cx| {
+
+ editor.display_map.update(cx, |display_map, cx| {
display_map
.snapshot(cx)
.crease_snapshot
@@ -1629,8 +1631,7 @@ pub fn extract_message_creases(
}
})
.collect()
- });
- creases
+ })
}
impl EventEmitter<MessageEditorEvent> for MessageEditor {}
@@ -327,9 +327,7 @@ where
};
let picker_view = cx.new(|cx| {
- let picker =
- Picker::uniform_list(delegate, window, cx).max_height(Some(rems(20.).into()));
- picker
+ Picker::uniform_list(delegate, window, cx).max_height(Some(rems(20.).into()))
});
let handle = self
@@ -540,7 +540,7 @@ impl TextThreadEditor {
let context = self.context.read(cx);
let sections = context
.slash_command_output_sections()
- .into_iter()
+ .iter()
.filter(|section| section.is_valid(context.buffer().read(cx)))
.cloned()
.collect::<Vec<_>>();
@@ -1237,7 +1237,7 @@ impl TextThreadEditor {
let mut new_blocks = vec![];
let mut block_index_to_message = vec![];
for message in self.context.read(cx).messages(cx) {
- if let Some(_) = blocks_to_remove.remove(&message.id) {
+ if blocks_to_remove.remove(&message.id).is_some() {
// This is an old message that we might modify.
let Some((meta, block_id)) = old_blocks.get_mut(&message.id) else {
debug_assert!(
@@ -1275,7 +1275,7 @@ impl TextThreadEditor {
context_editor_view: &Entity<TextThreadEditor>,
cx: &mut Context<Workspace>,
) -> Option<(String, bool)> {
- const CODE_FENCE_DELIMITER: &'static str = "```";
+ const CODE_FENCE_DELIMITER: &str = "```";
let context_editor = context_editor_view.read(cx).editor.clone();
context_editor.update(cx, |context_editor, cx| {
@@ -2161,8 +2161,8 @@ impl TextThreadEditor {
/// Returns the contents of the *outermost* fenced code block that contains the given offset.
fn find_surrounding_code_block(snapshot: &BufferSnapshot, offset: usize) -> Option<Range<usize>> {
- const CODE_BLOCK_NODE: &'static str = "fenced_code_block";
- const CODE_BLOCK_CONTENT: &'static str = "code_fence_content";
+ const CODE_BLOCK_NODE: &str = "fenced_code_block";
+ const CODE_BLOCK_CONTENT: &str = "code_fence_content";
let layer = snapshot.syntax_layers().next()?;
@@ -3129,7 +3129,7 @@ mod tests {
let context_editor = window
.update(&mut cx, |_, window, cx| {
cx.new(|cx| {
- let editor = TextThreadEditor::for_context(
+ TextThreadEditor::for_context(
context.clone(),
fs,
workspace.downgrade(),
@@ -3137,8 +3137,7 @@ mod tests {
None,
window,
cx,
- );
- editor
+ )
})
})
.unwrap();
@@ -14,13 +14,11 @@ pub struct IncompatibleToolsState {
impl IncompatibleToolsState {
pub fn new(thread: Entity<Thread>, cx: &mut Context<Self>) -> Self {
- let _tool_working_set_subscription =
- cx.subscribe(&thread, |this, _, event, _| match event {
- ThreadEvent::ProfileChanged => {
- this.cache.clear();
- }
- _ => {}
- });
+ let _tool_working_set_subscription = cx.subscribe(&thread, |this, _, event, _| {
+ if let ThreadEvent::ProfileChanged = event {
+ this.cache.clear();
+ }
+ });
Self {
cache: HashMap::default(),
@@ -590,7 +590,7 @@ impl From<&Message> for MessageMetadata {
impl MessageMetadata {
pub fn is_cache_valid(&self, buffer: &BufferSnapshot, range: &Range<usize>) -> bool {
- let result = match &self.cache {
+ match &self.cache {
Some(MessageCacheMetadata { cached_at, .. }) => !buffer.has_edits_since_in_range(
cached_at,
Range {
@@ -599,8 +599,7 @@ impl MessageMetadata {
},
),
_ => false,
- };
- result
+ }
}
}
@@ -2081,15 +2080,12 @@ impl AssistantContext {
match event {
LanguageModelCompletionEvent::StatusUpdate(status_update) => {
- match status_update {
- CompletionRequestStatus::UsageUpdated { amount, limit } => {
- this.update_model_request_usage(
- amount as u32,
- limit,
- cx,
- );
- }
- _ => {}
+ if let CompletionRequestStatus::UsageUpdated { amount, limit } = status_update {
+ this.update_model_request_usage(
+ amount as u32,
+ limit,
+ cx,
+ );
}
}
LanguageModelCompletionEvent::StartMessage { .. } => {}
@@ -223,7 +223,7 @@ fn collect_files(
cx: &mut App,
) -> impl Stream<Item = Result<SlashCommandEvent>> + use<> {
let Ok(matchers) = glob_inputs
- .into_iter()
+ .iter()
.map(|glob_input| {
custom_path_matcher::PathMatcher::new(&[glob_input.to_owned()])
.with_context(|| format!("invalid path {glob_input}"))
@@ -379,7 +379,7 @@ fn collect_files(
}
}
- while let Some(_) = directory_stack.pop() {
+ while directory_stack.pop().is_some() {
events_tx.unbounded_send(Ok(SlashCommandEvent::EndSection))?;
}
}
@@ -491,7 +491,7 @@ mod custom_path_matcher {
impl PathMatcher {
pub fn new(globs: &[String]) -> Result<Self, globset::Error> {
let globs = globs
- .into_iter()
+ .iter()
.map(|glob| Glob::new(&SanitizedPath::from(glob).to_glob_string()))
.collect::<Result<Vec<_>, _>>()?;
let sources = globs.iter().map(|glob| glob.glob().to_owned()).collect();
@@ -156,13 +156,13 @@ fn resolve_context_server_tool_name_conflicts(
if duplicated_tool_names.is_empty() {
return context_server_tools
- .into_iter()
+ .iter()
.map(|tool| (resolve_tool_name(tool).into(), tool.clone()))
.collect();
}
context_server_tools
- .into_iter()
+ .iter()
.filter_map(|tool| {
let mut tool_name = resolve_tool_name(tool);
if !duplicated_tool_names.contains(&tool_name) {
@@ -72,11 +72,10 @@ pub fn init(http_client: Arc<HttpClientWithUrl>, cx: &mut App) {
register_web_search_tool(&LanguageModelRegistry::global(cx), cx);
cx.subscribe(
&LanguageModelRegistry::global(cx),
- move |registry, event, cx| match event {
- language_model::Event::DefaultModelChanged => {
+ move |registry, event, cx| {
+ if let language_model::Event::DefaultModelChanged = event {
register_web_search_tool(®istry, cx);
}
- _ => {}
},
)
.detach();
@@ -1356,8 +1356,7 @@ mod tests {
mode: mode.clone(),
};
- let result = cx.update(|cx| resolve_path(&input, project, cx));
- result
+ cx.update(|cx| resolve_path(&input, project, cx))
}
fn assert_resolved_path_eq(path: anyhow::Result<ProjectPath>, expected: &str) {
@@ -216,7 +216,8 @@ impl Tool for TerminalTool {
async move |cx| {
let program = program.await;
let env = env.await;
- let terminal = project
+
+ project
.update(cx, |project, cx| {
project.create_terminal(
TerminalKind::Task(task::SpawnInTerminal {
@@ -229,8 +230,7 @@ impl Tool for TerminalTool {
cx,
)
})?
- .await;
- terminal
+ .await
}
});
@@ -494,11 +494,11 @@ mod linux {
Ok(Fork::Parent(_)) => Ok(()),
Ok(Fork::Child) => {
unsafe { std::env::set_var(FORCE_CLI_MODE_ENV_VAR_NAME, "") };
- if let Err(_) = fork::setsid() {
+ if fork::setsid().is_err() {
eprintln!("failed to setsid: {}", std::io::Error::last_os_error());
process::exit(1);
}
- if let Err(_) = fork::close_fd() {
+ if fork::close_fd().is_err() {
eprintln!("failed to close_fd: {}", std::io::Error::last_os_error());
}
let error =
@@ -534,8 +534,8 @@ mod flatpak {
use std::process::Command;
use std::{env, process};
- const EXTRA_LIB_ENV_NAME: &'static str = "ZED_FLATPAK_LIB_PATH";
- const NO_ESCAPE_ENV_NAME: &'static str = "ZED_FLATPAK_NO_ESCAPE";
+ const EXTRA_LIB_ENV_NAME: &str = "ZED_FLATPAK_LIB_PATH";
+ const NO_ESCAPE_ENV_NAME: &str = "ZED_FLATPAK_NO_ESCAPE";
/// Adds bundled libraries to LD_LIBRARY_PATH if running under flatpak
pub fn ld_extra_libs() {
@@ -4970,7 +4970,7 @@ async fn test_references(
"Rust",
FakeLspAdapter {
name: "my-fake-lsp-adapter",
- capabilities: capabilities,
+ capabilities,
..FakeLspAdapter::default()
},
);
@@ -397,11 +397,10 @@ impl MessageEditor {
) -> Option<(Anchor, String, &'static [StringMatchCandidate])> {
static EMOJI_FUZZY_MATCH_CANDIDATES: LazyLock<Vec<StringMatchCandidate>> =
LazyLock::new(|| {
- let emojis = emojis::iter()
+ emojis::iter()
.flat_map(|s| s.shortcodes())
.map(|emoji| StringMatchCandidate::new(0, emoji))
- .collect::<Vec<_>>();
- emojis
+ .collect::<Vec<_>>()
});
let end_offset = end_anchor.to_offset(buffer.read(cx));
@@ -77,7 +77,7 @@ impl McpServer {
socket_path,
_server_task: server_task,
tools,
- handlers: handlers,
+ handlers,
})
})
}
@@ -238,7 +238,7 @@ impl PythonDebugAdapter {
return Err("Failed to create base virtual environment".into());
}
- const DIR: &'static str = if cfg!(target_os = "windows") {
+ const DIR: &str = if cfg!(target_os = "windows") {
"Scripts"
} else {
"bin"
@@ -257,7 +257,7 @@ impl DebugPanel {
.as_ref()
.map(|entity| entity.downgrade()),
task_context: task_context.clone(),
- worktree_id: worktree_id,
+ worktree_id,
});
};
running.resolve_scenario(
@@ -87,7 +87,7 @@ impl DebugSession {
self.stack_trace_view.get_or_init(|| {
let stackframe_list = running_state.read(cx).stack_frame_list().clone();
- let stack_frame_view = cx.new(|cx| {
+ cx.new(|cx| {
StackTraceView::new(
workspace.clone(),
project.clone(),
@@ -95,9 +95,7 @@ impl DebugSession {
window,
cx,
)
- });
-
- stack_frame_view
+ })
})
}
@@ -358,7 +358,7 @@ pub(crate) fn new_debugger_pane(
}
};
- let ret = cx.new(move |cx| {
+ cx.new(move |cx| {
let mut pane = Pane::new(
workspace.clone(),
project.clone(),
@@ -562,9 +562,7 @@ pub(crate) fn new_debugger_pane(
}
});
pane
- });
-
- ret
+ })
}
pub struct DebugTerminal {
@@ -329,8 +329,8 @@ impl BreakpointList {
let text = self.input.read(cx).text(cx);
match mode {
- ActiveBreakpointStripMode::Log => match &entry.kind {
- BreakpointEntryKind::LineBreakpoint(line_breakpoint) => {
+ ActiveBreakpointStripMode::Log => {
+ if let BreakpointEntryKind::LineBreakpoint(line_breakpoint) = &entry.kind {
Self::edit_line_breakpoint_inner(
&self.breakpoint_store,
line_breakpoint.breakpoint.path.clone(),
@@ -339,10 +339,9 @@ impl BreakpointList {
cx,
);
}
- _ => {}
- },
- ActiveBreakpointStripMode::Condition => match &entry.kind {
- BreakpointEntryKind::LineBreakpoint(line_breakpoint) => {
+ }
+ ActiveBreakpointStripMode::Condition => {
+ if let BreakpointEntryKind::LineBreakpoint(line_breakpoint) = &entry.kind {
Self::edit_line_breakpoint_inner(
&self.breakpoint_store,
line_breakpoint.breakpoint.path.clone(),
@@ -351,10 +350,9 @@ impl BreakpointList {
cx,
);
}
- _ => {}
- },
- ActiveBreakpointStripMode::HitCondition => match &entry.kind {
- BreakpointEntryKind::LineBreakpoint(line_breakpoint) => {
+ }
+ ActiveBreakpointStripMode::HitCondition => {
+ if let BreakpointEntryKind::LineBreakpoint(line_breakpoint) = &entry.kind {
Self::edit_line_breakpoint_inner(
&self.breakpoint_store,
line_breakpoint.breakpoint.path.clone(),
@@ -363,8 +361,7 @@ impl BreakpointList {
cx,
);
}
- _ => {}
- },
+ }
}
self.focus_handle.focus(window);
} else {
@@ -426,13 +423,10 @@ impl BreakpointList {
return;
};
- match &mut entry.kind {
- BreakpointEntryKind::LineBreakpoint(line_breakpoint) => {
- let path = line_breakpoint.breakpoint.path.clone();
- let row = line_breakpoint.breakpoint.row;
- self.edit_line_breakpoint(path, row, BreakpointEditAction::Toggle, cx);
- }
- _ => {}
+ if let BreakpointEntryKind::LineBreakpoint(line_breakpoint) = &mut entry.kind {
+ let path = line_breakpoint.breakpoint.path.clone();
+ let row = line_breakpoint.breakpoint.row;
+ self.edit_line_breakpoint(path, row, BreakpointEditAction::Toggle, cx);
}
cx.notify();
}
@@ -967,7 +961,7 @@ impl LineBreakpoint {
props,
breakpoint: BreakpointEntry {
kind: BreakpointEntryKind::LineBreakpoint(self.clone()),
- weak: weak,
+ weak,
},
is_selected,
focus_handle,
@@ -1179,7 +1173,7 @@ impl ExceptionBreakpoint {
props,
breakpoint: BreakpointEntry {
kind: BreakpointEntryKind::ExceptionBreakpoint(self.clone()),
- weak: weak,
+ weak,
},
is_selected,
focus_handle,
@@ -947,7 +947,7 @@ impl VariableList {
#[track_caller]
#[cfg(test)]
pub(crate) fn assert_visual_entries(&self, expected: Vec<&str>) {
- const INDENT: &'static str = " ";
+ const INDENT: &str = " ";
let entries = &self.entries;
let mut visual_entries = Vec::with_capacity(entries.len());
@@ -1445,11 +1445,8 @@ async fn test_variable_list_only_sends_requests_when_rendering(
cx.run_until_parked();
- let running_state = active_debug_session_panel(workspace, cx).update_in(cx, |item, _, _| {
- let state = item.running_state().clone();
-
- state
- });
+ let running_state = active_debug_session_panel(workspace, cx)
+ .update_in(cx, |item, _, _| item.running_state().clone());
client
.fake_event(dap::messages::Events::Stopped(dap::StoppedEvent {
@@ -21,7 +21,7 @@ static KEYMAP_LINUX: LazyLock<KeymapFile> = LazyLock::new(|| {
static ALL_ACTIONS: LazyLock<Vec<ActionDef>> = LazyLock::new(dump_all_gpui_actions);
-const FRONT_MATTER_COMMENT: &'static str = "<!-- ZED_META {} -->";
+const FRONT_MATTER_COMMENT: &str = "<!-- ZED_META {} -->";
fn main() -> Result<()> {
zlog::init();
@@ -105,8 +105,8 @@ fn handle_preprocessing() -> Result<()> {
template_and_validate_actions(&mut book, &mut errors);
if !errors.is_empty() {
- const ANSI_RED: &'static str = "\x1b[31m";
- const ANSI_RESET: &'static str = "\x1b[0m";
+ const ANSI_RED: &str = "\x1b[31m";
+ const ANSI_RESET: &str = "\x1b[0m";
for error in &errors {
eprintln!("{ANSI_RED}ERROR{ANSI_RESET}: {}", error);
}
@@ -143,11 +143,8 @@ fn handle_frontmatter(book: &mut Book, errors: &mut HashSet<PreprocessorError>)
&serde_json::to_string(&metadata).expect("Failed to serialize metadata"),
)
});
- match new_content {
- Cow::Owned(content) => {
- chapter.content = content;
- }
- Cow::Borrowed(_) => {}
+ if let Cow::Owned(content) = new_content {
+ chapter.content = content;
}
});
}
@@ -409,13 +406,13 @@ fn handle_postprocessing() -> Result<()> {
.captures(contents)
.with_context(|| format!("Failed to find title in {:?}", pretty_path))
.expect("Page has <title> element")[1];
- let title = title_tag_contents
+
+ title_tag_contents
.trim()
.strip_suffix("- Zed")
.unwrap_or(title_tag_contents)
.trim()
- .to_string();
- title
+ .to_string()
}
}
@@ -61,14 +61,14 @@ pub fn replacement(c: char) -> Option<&'static str> {
// but could if we tracked state in the classifier.
const IDEOGRAPHIC_SPACE: char = '\u{3000}';
-const C0_SYMBOLS: &'static [&'static str] = &[
+const C0_SYMBOLS: &[&str] = &[
"␀", "␁", "␂", "␃", "␄", "␅", "␆", "␇", "␈", "␉", "␊", "␋", "␌", "␍", "␎", "␏", "␐", "␑", "␒",
"␓", "␔", "␕", "␖", "␗", "␘", "␙", "␚", "␛", "␜", "␝", "␞", "␟",
];
-const DEL: &'static str = "␡";
+const DEL: &str = "␡";
// generated using ucd-generate: ucd-generate general-category --include Format --chars ucd-16.0.0
-pub const FORMAT: &'static [(char, char)] = &[
+pub const FORMAT: &[(char, char)] = &[
('\u{ad}', '\u{ad}'),
('\u{600}', '\u{605}'),
('\u{61c}', '\u{61c}'),
@@ -93,7 +93,7 @@ pub const FORMAT: &'static [(char, char)] = &[
];
// hand-made base on https://invisible-characters.com (Excluding Cf)
-pub const OTHER: &'static [(char, char)] = &[
+pub const OTHER: &[(char, char)] = &[
('\u{034f}', '\u{034f}'),
('\u{115F}', '\u{1160}'),
('\u{17b4}', '\u{17b5}'),
@@ -107,7 +107,7 @@ pub const OTHER: &'static [(char, char)] = &[
];
// a subset of FORMAT/OTHER that may appear within glyphs
-const PRESERVE: &'static [(char, char)] = &[
+const PRESERVE: &[(char, char)] = &[
('\u{034f}', '\u{034f}'),
('\u{200d}', '\u{200d}'),
('\u{17b4}', '\u{17b5}'),
@@ -1943,26 +1943,24 @@ impl Editor {
let git_store = project.read(cx).git_store().clone();
let project = project.clone();
project_subscriptions.push(cx.subscribe(&git_store, move |this, _, event, cx| {
- match event {
- GitStoreEvent::RepositoryUpdated(
- _,
- RepositoryEvent::Updated {
- new_instance: true, ..
- },
- _,
- ) => {
- this.load_diff_task = Some(
- update_uncommitted_diff_for_buffer(
- cx.entity(),
- &project,
- this.buffer.read(cx).all_buffers(),
- this.buffer.clone(),
- cx,
- )
- .shared(),
- );
- }
- _ => {}
+ if let GitStoreEvent::RepositoryUpdated(
+ _,
+ RepositoryEvent::Updated {
+ new_instance: true, ..
+ },
+ _,
+ ) = event
+ {
+ this.load_diff_task = Some(
+ update_uncommitted_diff_for_buffer(
+ cx.entity(),
+ &project,
+ this.buffer.read(cx).all_buffers(),
+ this.buffer.clone(),
+ cx,
+ )
+ .shared(),
+ );
}
}));
}
@@ -3221,35 +3219,31 @@ impl Editor {
selections.select_anchors(other_selections);
});
- let other_subscription =
- cx.subscribe(&other, |this, other, other_evt, cx| match other_evt {
- EditorEvent::SelectionsChanged { local: true } => {
- let other_selections = other.read(cx).selections.disjoint.to_vec();
- if other_selections.is_empty() {
- return;
- }
- this.selections.change_with(cx, |selections| {
- selections.select_anchors(other_selections);
- });
+ let other_subscription = cx.subscribe(&other, |this, other, other_evt, cx| {
+ if let EditorEvent::SelectionsChanged { local: true } = other_evt {
+ let other_selections = other.read(cx).selections.disjoint.to_vec();
+ if other_selections.is_empty() {
+ return;
}
- _ => {}
- });
+ this.selections.change_with(cx, |selections| {
+ selections.select_anchors(other_selections);
+ });
+ }
+ });
- let this_subscription =
- cx.subscribe_self::<EditorEvent>(move |this, this_evt, cx| match this_evt {
- EditorEvent::SelectionsChanged { local: true } => {
- let these_selections = this.selections.disjoint.to_vec();
- if these_selections.is_empty() {
- return;
- }
- other.update(cx, |other_editor, cx| {
- other_editor.selections.change_with(cx, |selections| {
- selections.select_anchors(these_selections);
- })
- });
+ let this_subscription = cx.subscribe_self::<EditorEvent>(move |this, this_evt, cx| {
+ if let EditorEvent::SelectionsChanged { local: true } = this_evt {
+ let these_selections = this.selections.disjoint.to_vec();
+ if these_selections.is_empty() {
+ return;
}
- _ => {}
- });
+ other.update(cx, |other_editor, cx| {
+ other_editor.selections.change_with(cx, |selections| {
+ selections.select_anchors(these_selections);
+ })
+ });
+ }
+ });
Subscription::join(other_subscription, this_subscription)
}
@@ -5661,34 +5655,31 @@ impl Editor {
let Ok(()) = editor.update_in(cx, |editor, window, cx| {
// Newer menu already set, so exit.
- match editor.context_menu.borrow().as_ref() {
- Some(CodeContextMenu::Completions(prev_menu)) => {
- if prev_menu.id > id {
- return;
- }
- }
- _ => {}
+ if let Some(CodeContextMenu::Completions(prev_menu)) =
+ editor.context_menu.borrow().as_ref()
+ && prev_menu.id > id
+ {
+ return;
};
// Only valid to take prev_menu because it the new menu is immediately set
// below, or the menu is hidden.
- match editor.context_menu.borrow_mut().take() {
- Some(CodeContextMenu::Completions(prev_menu)) => {
- let position_matches =
- if prev_menu.initial_position == menu.initial_position {
- true
- } else {
- let snapshot = editor.buffer.read(cx).read(cx);
- prev_menu.initial_position.to_offset(&snapshot)
- == menu.initial_position.to_offset(&snapshot)
- };
- if position_matches {
- // Preserve markdown cache before `set_filter_results` because it will
- // try to populate the documentation cache.
- menu.preserve_markdown_cache(prev_menu);
- }
+ if let Some(CodeContextMenu::Completions(prev_menu)) =
+ editor.context_menu.borrow_mut().take()
+ {
+ let position_matches =
+ if prev_menu.initial_position == menu.initial_position {
+ true
+ } else {
+ let snapshot = editor.buffer.read(cx).read(cx);
+ prev_menu.initial_position.to_offset(&snapshot)
+ == menu.initial_position.to_offset(&snapshot)
+ };
+ if position_matches {
+ // Preserve markdown cache before `set_filter_results` because it will
+ // try to populate the documentation cache.
+ menu.preserve_markdown_cache(prev_menu);
}
- _ => {}
};
menu.set_filter_results(matches, provider, window, cx);
@@ -6179,12 +6170,11 @@ impl Editor {
}
});
Some(cx.background_spawn(async move {
- let scenarios = futures::future::join_all(scenarios)
+ futures::future::join_all(scenarios)
.await
.into_iter()
.flatten()
- .collect::<Vec<_>>();
- scenarios
+ .collect::<Vec<_>>()
}))
})
.unwrap_or_else(|| Task::ready(vec![]))
@@ -7740,12 +7730,9 @@ impl Editor {
self.edit_prediction_settings =
self.edit_prediction_settings_at_position(&buffer, cursor_buffer_position, cx);
- match self.edit_prediction_settings {
- EditPredictionSettings::Disabled => {
- self.discard_edit_prediction(false, cx);
- return None;
- }
- _ => {}
+ if let EditPredictionSettings::Disabled = self.edit_prediction_settings {
+ self.discard_edit_prediction(false, cx);
+ return None;
};
self.edit_prediction_indent_conflict = multibuffer.is_line_whitespace_upto(cursor);
@@ -10638,8 +10625,7 @@ impl Editor {
.buffer_snapshot
.anchor_after(Point::new(row, line_len));
- let bp = self
- .breakpoint_store
+ self.breakpoint_store
.as_ref()?
.read_with(cx, |breakpoint_store, cx| {
breakpoint_store
@@ -10664,8 +10650,7 @@ impl Editor {
None
}
})
- });
- bp
+ })
}
pub fn edit_log_breakpoint(
@@ -10701,7 +10686,7 @@ impl Editor {
let cursors = self
.selections
.disjoint_anchors()
- .into_iter()
+ .iter()
.map(|selection| {
let cursor_position: Point = selection.head().to_point(&snapshot.buffer_snapshot);
@@ -14878,7 +14863,7 @@ impl Editor {
let start = parent.start - offset;
offset += parent.len() - text.len();
selections.push(Selection {
- id: id,
+ id,
start,
end: start + text.len(),
reversed: false,
@@ -19202,7 +19187,7 @@ impl Editor {
let locations = self
.selections
.all_anchors(cx)
- .into_iter()
+ .iter()
.map(|selection| Location {
buffer: buffer.clone(),
range: selection.start.text_anchor..selection.end.text_anchor,
@@ -19914,11 +19899,8 @@ impl Editor {
event: &SessionEvent,
cx: &mut Context<Self>,
) {
- match event {
- SessionEvent::InvalidateInlineValue => {
- self.refresh_inline_values(cx);
- }
- _ => {}
+ if let SessionEvent::InvalidateInlineValue = event {
+ self.refresh_inline_values(cx);
}
}
@@ -21037,7 +21037,7 @@ fn assert_breakpoint(
let mut breakpoint = breakpoints
.get(path)
.unwrap()
- .into_iter()
+ .iter()
.map(|breakpoint| {
(
breakpoint.row,
@@ -23622,7 +23622,7 @@ pub fn handle_completion_request(
complete_from_position
);
Ok(Some(lsp::CompletionResponse::List(lsp::CompletionList {
- is_incomplete: is_incomplete,
+ is_incomplete,
item_defaults: None,
items: completions
.iter()
@@ -724,7 +724,7 @@ impl EditorElement {
ColumnarMode::FromMouse => true,
ColumnarMode::FromSelection => false,
},
- mode: mode,
+ mode,
goal_column: point_for_position.exact_unclipped.column(),
},
window,
@@ -2437,14 +2437,13 @@ impl EditorElement {
.unwrap_or_default()
.padding as f32;
- if let Some(edit_prediction) = editor.active_edit_prediction.as_ref() {
- match &edit_prediction.completion {
- EditPrediction::Edit {
- display_mode: EditDisplayMode::TabAccept,
- ..
- } => padding += INLINE_ACCEPT_SUGGESTION_EM_WIDTHS,
- _ => {}
- }
+ if let Some(edit_prediction) = editor.active_edit_prediction.as_ref()
+ && let EditPrediction::Edit {
+ display_mode: EditDisplayMode::TabAccept,
+ ..
+ } = &edit_prediction.completion
+ {
+ padding += INLINE_ACCEPT_SUGGESTION_EM_WIDTHS
}
padding * em_width
@@ -2978,8 +2977,8 @@ impl EditorElement {
.ilog10()
+ 1;
- let elements = buffer_rows
- .into_iter()
+ buffer_rows
+ .iter()
.enumerate()
.map(|(ix, row_info)| {
let ExpandInfo {
@@ -3034,9 +3033,7 @@ impl EditorElement {
Some((toggle, origin))
})
- .collect();
-
- elements
+ .collect()
}
fn calculate_relative_line_numbers(
@@ -3136,7 +3133,7 @@ impl EditorElement {
let relative_rows = self.calculate_relative_line_numbers(snapshot, &rows, relative_to);
let mut line_number = String::new();
let line_numbers = buffer_rows
- .into_iter()
+ .iter()
.enumerate()
.flat_map(|(ix, row_info)| {
let display_row = DisplayRow(rows.start.0 + ix as u32);
@@ -3213,7 +3210,7 @@ impl EditorElement {
&& self.editor.read(cx).is_singleton(cx);
if include_fold_statuses {
row_infos
- .into_iter()
+ .iter()
.enumerate()
.map(|(ix, info)| {
if info.expand_info.is_some() {
@@ -213,8 +213,8 @@ impl GitBlame {
let project_subscription = cx.subscribe(&project, {
let buffer = buffer.clone();
- move |this, _, event, cx| match event {
- project::Event::WorktreeUpdatedEntries(_, updated) => {
+ move |this, _, event, cx| {
+ if let project::Event::WorktreeUpdatedEntries(_, updated) = event {
let project_entry_id = buffer.read(cx).entry_id(cx);
if updated
.iter()
@@ -224,7 +224,6 @@ impl GitBlame {
this.generate(cx);
}
}
- _ => {}
}
});
@@ -292,7 +291,7 @@ impl GitBlame {
let buffer_id = self.buffer_snapshot.remote_id();
let mut cursor = self.entries.cursor::<u32>(&());
- rows.into_iter().map(move |info| {
+ rows.iter().map(move |info| {
let row = info
.buffer_row
.filter(|_| info.buffer_id == Some(buffer_id))?;
@@ -603,18 +603,15 @@ async fn parse_blocks(
})
.join("\n\n");
- let rendered_block = cx
- .new_window_entity(|_window, cx| {
- Markdown::new(
- combined_text.into(),
- language_registry.cloned(),
- language.map(|language| language.name()),
- cx,
- )
- })
- .ok();
-
- rendered_block
+ cx.new_window_entity(|_window, cx| {
+ Markdown::new(
+ combined_text.into(),
+ language_registry.cloned(),
+ language.map(|language| language.name()),
+ cx,
+ )
+ })
+ .ok()
}
pub fn hover_markdown_style(window: &Window, cx: &App) -> MarkdownStyle {
@@ -1009,16 +1009,12 @@ impl Item for Editor {
) {
self.workspace = Some((workspace.weak_handle(), workspace.database_id()));
if let Some(workspace) = &workspace.weak_handle().upgrade() {
- cx.subscribe(
- workspace,
- |editor, _, event: &workspace::Event, _cx| match event {
- workspace::Event::ModalOpened => {
- editor.mouse_context_menu.take();
- editor.inline_blame_popover.take();
- }
- _ => {}
- },
- )
+ cx.subscribe(workspace, |editor, _, event: &workspace::Event, _cx| {
+ if let workspace::Event::ModalOpened = event {
+ editor.mouse_context_menu.take();
+ editor.inline_blame_popover.take();
+ }
+ })
.detach();
}
}
@@ -808,10 +808,7 @@ mod jsx_tag_autoclose_tests {
);
buf
});
- let buffer_c = cx.new(|cx| {
- let buf = language::Buffer::local("<span", cx);
- buf
- });
+ let buffer_c = cx.new(|cx| language::Buffer::local("<span", cx));
let buffer = cx.new(|cx| {
let mut buf = MultiBuffer::new(language::Capability::ReadWrite);
buf.push_excerpts(
@@ -241,24 +241,13 @@ impl ProposedChangesEditor {
event: &BufferEvent,
_cx: &mut Context<Self>,
) {
- match event {
- BufferEvent::Operation { .. } => {
- self.recalculate_diffs_tx
- .unbounded_send(RecalculateDiff {
- buffer,
- debounce: true,
- })
- .ok();
- }
- // BufferEvent::DiffBaseChanged => {
- // self.recalculate_diffs_tx
- // .unbounded_send(RecalculateDiff {
- // buffer,
- // debounce: false,
- // })
- // .ok();
- // }
- _ => (),
+ if let BufferEvent::Operation { .. } = event {
+ self.recalculate_diffs_tx
+ .unbounded_send(RecalculateDiff {
+ buffer,
+ debounce: true,
+ })
+ .ok();
}
}
}
@@ -119,8 +119,8 @@ impl SelectionsCollection {
cx: &mut App,
) -> Option<Selection<D>> {
let map = self.display_map(cx);
- let selection = resolve_selections(self.pending_anchor().as_ref(), &map).next();
- selection
+
+ resolve_selections(self.pending_anchor().as_ref(), &map).next()
}
pub(crate) fn pending_mode(&self) -> Option<SelectMode> {
@@ -276,18 +276,18 @@ impl SelectionsCollection {
cx: &mut App,
) -> Selection<D> {
let map = self.display_map(cx);
- let selection = resolve_selections([self.newest_anchor()], &map)
+
+ resolve_selections([self.newest_anchor()], &map)
.next()
- .unwrap();
- selection
+ .unwrap()
}
pub fn newest_display(&self, cx: &mut App) -> Selection<DisplayPoint> {
let map = self.display_map(cx);
- let selection = resolve_selections_display([self.newest_anchor()], &map)
+
+ resolve_selections_display([self.newest_anchor()], &map)
.next()
- .unwrap();
- selection
+ .unwrap()
}
pub fn oldest_anchor(&self) -> &Selection<Anchor> {
@@ -303,10 +303,10 @@ impl SelectionsCollection {
cx: &mut App,
) -> Selection<D> {
let map = self.display_map(cx);
- let selection = resolve_selections([self.oldest_anchor()], &map)
+
+ resolve_selections([self.oldest_anchor()], &map)
.next()
- .unwrap();
- selection
+ .unwrap()
}
pub fn first_anchor(&self) -> Selection<Anchor> {
@@ -678,8 +678,8 @@ pub fn wait_for_lang_server(
[
cx.subscribe(&lsp_store, {
let log_prefix = log_prefix.clone();
- move |_, event, _| match event {
- project::LspStoreEvent::LanguageServerUpdate {
+ move |_, event, _| {
+ if let project::LspStoreEvent::LanguageServerUpdate {
message:
client::proto::update_language_server::Variant::WorkProgress(
LspWorkProgress {
@@ -688,8 +688,10 @@ pub fn wait_for_lang_server(
},
),
..
- } => println!("{}⟲ {message}", log_prefix),
- _ => {}
+ } = event
+ {
+ println!("{}⟲ {message}", log_prefix)
+ }
}
}),
cx.subscribe(project, {
@@ -484,14 +484,10 @@ impl ExtensionBuilder {
_ => {}
}
- match &payload {
- CustomSection(c) => {
- if strip_custom_section(c.name()) {
- continue;
- }
- }
-
- _ => {}
+ if let CustomSection(c) = &payload
+ && strip_custom_section(c.name())
+ {
+ continue;
}
if let Some((id, range)) = payload.as_section() {
RawSection {
@@ -1675,9 +1675,8 @@ impl ExtensionStore {
let schema_path = &extension::build_debug_adapter_schema_path(adapter_name, meta);
if fs.is_file(&src_dir.join(schema_path)).await {
- match schema_path.parent() {
- Some(parent) => fs.create_dir(&tmp_dir.join(parent)).await?,
- None => {}
+ if let Some(parent) = schema_path.parent() {
+ fs.create_dir(&tmp_dir.join(parent)).await?
}
fs.copy_file(
&src_dir.join(schema_path),
@@ -532,7 +532,7 @@ fn wasm_engine(executor: &BackgroundExecutor) -> wasmtime::Engine {
// `Future::poll`.
const EPOCH_INTERVAL: Duration = Duration::from_millis(100);
let mut timer = Timer::interval(EPOCH_INTERVAL);
- while let Some(_) = timer.next().await {
+ while (timer.next().await).is_some() {
// Exit the loop and thread once the engine is dropped.
let Some(engine) = engine_ref.upgrade() else {
break;
@@ -863,7 +863,7 @@ impl ExtensionsPage {
window: &mut Window,
cx: &mut App,
) -> Entity<ContextMenu> {
- let context_menu = ContextMenu::build(window, cx, |context_menu, window, _| {
+ ContextMenu::build(window, cx, |context_menu, window, _| {
context_menu
.entry(
"Install Another Version...",
@@ -887,9 +887,7 @@ impl ExtensionsPage {
cx.write_to_clipboard(ClipboardItem::new_string(authors.join(", ")));
}
})
- });
-
- context_menu
+ })
}
fn show_extension_version_list(
@@ -112,7 +112,7 @@ impl OpenPathDelegate {
entries,
..
} => user_input
- .into_iter()
+ .iter()
.filter(|user_input| !user_input.exists || !user_input.is_dir)
.map(|user_input| user_input.file.string.clone())
.chain(self.string_matches.iter().filter_map(|string_match| {
@@ -2419,12 +2419,11 @@ impl Fs for FakeFs {
let watcher = watcher.clone();
move |events| {
let result = events.iter().any(|evt_path| {
- let result = watcher
+ watcher
.prefixes
.lock()
.iter()
- .any(|prefix| evt_path.path.starts_with(prefix));
- result
+ .any(|prefix| evt_path.path.starts_with(prefix))
});
let executor = executor.clone();
async move {
@@ -2028,7 +2028,7 @@ fn parse_branch_input(input: &str) -> Result<Vec<Branch>> {
branches.push(Branch {
is_head: is_current_branch,
- ref_name: ref_name,
+ ref_name,
most_recent_commit: Some(CommitSummary {
sha: head_sha,
subject,
@@ -123,7 +123,7 @@ impl FileDiffView {
old_buffer,
new_buffer,
_recalculate_diff_task: cx.spawn(async move |this, cx| {
- while let Ok(_) = buffer_changes_rx.recv().await {
+ while buffer_changes_rx.recv().await.is_ok() {
loop {
let mut timer = cx
.background_executor()
@@ -426,7 +426,7 @@ impl GitPanel {
let git_store = project.read(cx).git_store().clone();
let active_repository = project.read(cx).active_repository(cx);
- let git_panel = cx.new(|cx| {
+ cx.new(|cx| {
let focus_handle = cx.focus_handle();
cx.on_focus(&focus_handle, window, Self::focus_in).detach();
cx.on_focus_out(&focus_handle, window, |this, _, window, cx| {
@@ -563,9 +563,7 @@ impl GitPanel {
this.schedule_update(false, window, cx);
this
- });
-
- git_panel
+ })
}
fn hide_scrollbars(&mut self, window: &mut Window, cx: &mut Context<Self>) {
@@ -1198,14 +1196,13 @@ impl GitPanel {
window,
cx,
);
- cx.spawn(async move |this, cx| match prompt.await {
- Ok(RestoreCancel::RestoreTrackedFiles) => {
+ cx.spawn(async move |this, cx| {
+ if let Ok(RestoreCancel::RestoreTrackedFiles) = prompt.await {
this.update(cx, |this, cx| {
this.perform_checkout(entries, cx);
})
.ok();
}
- _ => {}
})
.detach();
}
@@ -346,22 +346,19 @@ impl ProjectDiff {
window: &mut Window,
cx: &mut Context<Self>,
) {
- match event {
- EditorEvent::SelectionsChanged { local: true } => {
- let Some(project_path) = self.active_path(cx) else {
- return;
- };
- self.workspace
- .update(cx, |workspace, cx| {
- if let Some(git_panel) = workspace.panel::<GitPanel>(cx) {
- git_panel.update(cx, |git_panel, cx| {
- git_panel.select_entry_by_path(project_path, window, cx)
- })
- }
- })
- .ok();
- }
- _ => {}
+ if let EditorEvent::SelectionsChanged { local: true } = event {
+ let Some(project_path) = self.active_path(cx) else {
+ return;
+ };
+ self.workspace
+ .update(cx, |workspace, cx| {
+ if let Some(git_panel) = workspace.panel::<GitPanel>(cx) {
+ git_panel.update(cx, |git_panel, cx| {
+ git_panel.select_entry_by_path(project_path, window, cx)
+ })
+ }
+ })
+ .ok();
}
if editor.focus_handle(cx).contains_focused(window, cx)
&& self.multibuffer.read(cx).is_empty()
@@ -513,7 +510,7 @@ impl ProjectDiff {
mut recv: postage::watch::Receiver<()>,
cx: &mut AsyncWindowContext,
) -> Result<()> {
- while let Some(_) = recv.next().await {
+ while (recv.next().await).is_some() {
let buffers_to_load = this.update(cx, |this, cx| this.load_buffers(cx))?;
for buffer_to_load in buffers_to_load {
if let Some(buffer) = buffer_to_load.await.log_err() {
@@ -207,7 +207,7 @@ impl TextDiffView {
path: Some(format!("Clipboard ↔ {selection_location_path}").into()),
buffer_changes_tx,
_recalculate_diff_task: cx.spawn(async move |_, cx| {
- while let Ok(_) = buffer_changes_rx.recv().await {
+ while buffer_changes_rx.recv().await.is_ok() {
loop {
let mut timer = cx
.background_executor()
@@ -1707,8 +1707,8 @@ impl App {
.unwrap_or_else(|| {
is_first = true;
let future = A::load(source.clone(), self);
- let task = self.background_executor().spawn(future).shared();
- task
+
+ self.background_executor().spawn(future).shared()
});
self.loading_assets.insert(asset_id, Box::new(task.clone()));
@@ -326,7 +326,7 @@ impl TextLayout {
vec![text_style.to_run(text.len())]
};
- let layout_id = window.request_measured_layout(Default::default(), {
+ window.request_measured_layout(Default::default(), {
let element_state = self.clone();
move |known_dimensions, available_space, window, cx| {
@@ -416,9 +416,7 @@ impl TextLayout {
size
}
- });
-
- layout_id
+ })
}
fn prepaint(&self, bounds: Bounds<Pixels>, text: &str) {
@@ -949,11 +949,8 @@ impl Dispatch<WlCallback, ObjectId> for WaylandClientStatePtr {
};
drop(state);
- match event {
- wl_callback::Event::Done { .. } => {
- window.frame();
- }
- _ => {}
+ if let wl_callback::Event::Done { .. } = event {
+ window.frame();
}
}
}
@@ -2014,25 +2011,22 @@ impl Dispatch<wl_data_offer::WlDataOffer, ()> for WaylandClientStatePtr {
let client = this.get_client();
let mut state = client.borrow_mut();
- match event {
- wl_data_offer::Event::Offer { mime_type } => {
- // Drag and drop
- if mime_type == FILE_LIST_MIME_TYPE {
- let serial = state.serial_tracker.get(SerialKind::DataDevice);
- let mime_type = mime_type.clone();
- data_offer.accept(serial, Some(mime_type));
- }
+ if let wl_data_offer::Event::Offer { mime_type } = event {
+ // Drag and drop
+ if mime_type == FILE_LIST_MIME_TYPE {
+ let serial = state.serial_tracker.get(SerialKind::DataDevice);
+ let mime_type = mime_type.clone();
+ data_offer.accept(serial, Some(mime_type));
+ }
- // Clipboard
- if let Some(offer) = state
- .data_offers
- .iter_mut()
- .find(|wrapper| wrapper.inner.id() == data_offer.id())
- {
- offer.add_mime_type(mime_type);
- }
+ // Clipboard
+ if let Some(offer) = state
+ .data_offers
+ .iter_mut()
+ .find(|wrapper| wrapper.inner.id() == data_offer.id())
+ {
+ offer.add_mime_type(mime_type);
}
- _ => {}
}
}
}
@@ -2113,13 +2107,10 @@ impl Dispatch<zwp_primary_selection_offer_v1::ZwpPrimarySelectionOfferV1, ()>
let client = this.get_client();
let mut state = client.borrow_mut();
- match event {
- zwp_primary_selection_offer_v1::Event::Offer { mime_type } => {
- if let Some(offer) = state.primary_data_offer.as_mut() {
- offer.add_mime_type(mime_type);
- }
- }
- _ => {}
+ if let zwp_primary_selection_offer_v1::Event::Offer { mime_type } = event
+ && let Some(offer) = state.primary_data_offer.as_mut()
+ {
+ offer.add_mime_type(mime_type);
}
}
}
@@ -355,85 +355,82 @@ impl WaylandWindowStatePtr {
}
pub fn handle_xdg_surface_event(&self, event: xdg_surface::Event) {
- match event {
- xdg_surface::Event::Configure { serial } => {
- {
- let mut state = self.state.borrow_mut();
- if let Some(window_controls) = state.in_progress_window_controls.take() {
- state.window_controls = window_controls;
-
- drop(state);
- let mut callbacks = self.callbacks.borrow_mut();
- if let Some(appearance_changed) = callbacks.appearance_changed.as_mut() {
- appearance_changed();
- }
+ if let xdg_surface::Event::Configure { serial } = event {
+ {
+ let mut state = self.state.borrow_mut();
+ if let Some(window_controls) = state.in_progress_window_controls.take() {
+ state.window_controls = window_controls;
+
+ drop(state);
+ let mut callbacks = self.callbacks.borrow_mut();
+ if let Some(appearance_changed) = callbacks.appearance_changed.as_mut() {
+ appearance_changed();
}
}
- {
- let mut state = self.state.borrow_mut();
-
- if let Some(mut configure) = state.in_progress_configure.take() {
- let got_unmaximized = state.maximized && !configure.maximized;
- state.fullscreen = configure.fullscreen;
- state.maximized = configure.maximized;
- state.tiling = configure.tiling;
- // Limit interactive resizes to once per vblank
- if configure.resizing && state.resize_throttle {
- return;
- } else if configure.resizing {
- state.resize_throttle = true;
- }
- if !configure.fullscreen && !configure.maximized {
- configure.size = if got_unmaximized {
- Some(state.window_bounds.size)
- } else {
- compute_outer_size(state.inset(), configure.size, state.tiling)
- };
- if let Some(size) = configure.size {
- state.window_bounds = Bounds {
- origin: Point::default(),
- size,
- };
- }
- }
- drop(state);
+ }
+ {
+ let mut state = self.state.borrow_mut();
+
+ if let Some(mut configure) = state.in_progress_configure.take() {
+ let got_unmaximized = state.maximized && !configure.maximized;
+ state.fullscreen = configure.fullscreen;
+ state.maximized = configure.maximized;
+ state.tiling = configure.tiling;
+ // Limit interactive resizes to once per vblank
+ if configure.resizing && state.resize_throttle {
+ return;
+ } else if configure.resizing {
+ state.resize_throttle = true;
+ }
+ if !configure.fullscreen && !configure.maximized {
+ configure.size = if got_unmaximized {
+ Some(state.window_bounds.size)
+ } else {
+ compute_outer_size(state.inset(), configure.size, state.tiling)
+ };
if let Some(size) = configure.size {
- self.resize(size);
+ state.window_bounds = Bounds {
+ origin: Point::default(),
+ size,
+ };
}
}
- }
- let mut state = self.state.borrow_mut();
- state.xdg_surface.ack_configure(serial);
-
- let window_geometry = inset_by_tiling(
- state.bounds.map_origin(|_| px(0.0)),
- state.inset(),
- state.tiling,
- )
- .map(|v| v.0 as i32)
- .map_size(|v| if v <= 0 { 1 } else { v });
-
- state.xdg_surface.set_window_geometry(
- window_geometry.origin.x,
- window_geometry.origin.y,
- window_geometry.size.width,
- window_geometry.size.height,
- );
-
- let request_frame_callback = !state.acknowledged_first_configure;
- if request_frame_callback {
- state.acknowledged_first_configure = true;
drop(state);
- self.frame();
+ if let Some(size) = configure.size {
+ self.resize(size);
+ }
}
}
- _ => {}
+ let mut state = self.state.borrow_mut();
+ state.xdg_surface.ack_configure(serial);
+
+ let window_geometry = inset_by_tiling(
+ state.bounds.map_origin(|_| px(0.0)),
+ state.inset(),
+ state.tiling,
+ )
+ .map(|v| v.0 as i32)
+ .map_size(|v| if v <= 0 { 1 } else { v });
+
+ state.xdg_surface.set_window_geometry(
+ window_geometry.origin.x,
+ window_geometry.origin.y,
+ window_geometry.size.width,
+ window_geometry.size.height,
+ );
+
+ let request_frame_callback = !state.acknowledged_first_configure;
+ if request_frame_callback {
+ state.acknowledged_first_configure = true;
+ drop(state);
+ self.frame();
+ }
}
}
pub fn handle_toplevel_decoration_event(&self, event: zxdg_toplevel_decoration_v1::Event) {
- match event {
- zxdg_toplevel_decoration_v1::Event::Configure { mode } => match mode {
+ if let zxdg_toplevel_decoration_v1::Event::Configure { mode } = event {
+ match mode {
WEnum::Value(zxdg_toplevel_decoration_v1::Mode::ServerSide) => {
self.state.borrow_mut().decorations = WindowDecorations::Server;
if let Some(mut appearance_changed) =
@@ -457,17 +454,13 @@ impl WaylandWindowStatePtr {
WEnum::Unknown(v) => {
log::warn!("Unknown decoration mode: {}", v);
}
- },
- _ => {}
+ }
}
}
pub fn handle_fractional_scale_event(&self, event: wp_fractional_scale_v1::Event) {
- match event {
- wp_fractional_scale_v1::Event::PreferredScale { scale } => {
- self.rescale(scale as f32 / 120.0);
- }
- _ => {}
+ if let wp_fractional_scale_v1::Event::PreferredScale { scale } = event {
+ self.rescale(scale as f32 / 120.0);
}
}
@@ -232,15 +232,12 @@ impl X11ClientStatePtr {
};
let mut state = client.0.borrow_mut();
- if let Some(window_ref) = state.windows.remove(&x_window) {
- match window_ref.refresh_state {
- Some(RefreshState::PeriodicRefresh {
- event_loop_token, ..
- }) => {
- state.loop_handle.remove(event_loop_token);
- }
- _ => {}
- }
+ if let Some(window_ref) = state.windows.remove(&x_window)
+ && let Some(RefreshState::PeriodicRefresh {
+ event_loop_token, ..
+ }) = window_ref.refresh_state
+ {
+ state.loop_handle.remove(event_loop_token);
}
if state.mouse_focused_window == Some(x_window) {
state.mouse_focused_window = None;
@@ -876,22 +873,19 @@ impl X11Client {
let Some(reply) = reply else {
return Some(());
};
- match str::from_utf8(&reply.value) {
- Ok(file_list) => {
- let paths: SmallVec<[_; 2]> = file_list
- .lines()
- .filter_map(|path| Url::parse(path).log_err())
- .filter_map(|url| url.to_file_path().log_err())
- .collect();
- let input = PlatformInput::FileDrop(FileDropEvent::Entered {
- position: state.xdnd_state.position,
- paths: crate::ExternalPaths(paths),
- });
- drop(state);
- window.handle_input(input);
- self.0.borrow_mut().xdnd_state.retrieved = true;
- }
- Err(_) => {}
+ if let Ok(file_list) = str::from_utf8(&reply.value) {
+ let paths: SmallVec<[_; 2]> = file_list
+ .lines()
+ .filter_map(|path| Url::parse(path).log_err())
+ .filter_map(|url| url.to_file_path().log_err())
+ .collect();
+ let input = PlatformInput::FileDrop(FileDropEvent::Entered {
+ position: state.xdnd_state.position,
+ paths: crate::ExternalPaths(paths),
+ });
+ drop(state);
+ window.handle_input(input);
+ self.0.borrow_mut().xdnd_state.retrieved = true;
}
}
Event::ConfigureNotify(event) => {
@@ -426,7 +426,7 @@ unsafe fn parse_keystroke(native_event: id) -> Keystroke {
key_char = Some(chars_for_modified_key(native_event.keyCode(), mods));
}
- let mut key = if shift
+ if shift
&& chars_ignoring_modifiers
.chars()
.all(|c| c.is_ascii_lowercase())
@@ -437,9 +437,7 @@ unsafe fn parse_keystroke(native_event: id) -> Keystroke {
chars_with_shift
} else {
chars_ignoring_modifiers
- };
-
- key
+ }
}
};
@@ -2063,8 +2063,8 @@ fn screen_point_to_gpui_point(this: &Object, position: NSPoint) -> Point<Pixels>
let frame = get_frame(this);
let window_x = position.x - frame.origin.x;
let window_y = frame.size.height - (position.y - frame.origin.y);
- let position = point(px(window_x as f32), px(window_y as f32));
- position
+
+ point(px(window_x as f32), px(window_y as f32))
}
extern "C" fn dragging_entered(this: &Object, _: Sel, dragging_info: id) -> NSDragOperation {
@@ -228,7 +228,7 @@ fn run_capture(
display,
size,
}));
- if let Err(_) = stream_send_result {
+ if stream_send_result.is_err() {
return;
}
while !cancel_stream.load(std::sync::atomic::Ordering::SeqCst) {
@@ -1128,22 +1128,19 @@ impl WindowsWindowInner {
&& let Some(parameter_string) = unsafe { parameter.to_string() }.log_err()
{
log::info!("System settings changed: {}", parameter_string);
- match parameter_string.as_str() {
- "ImmersiveColorSet" => {
- let new_appearance = system_appearance()
- .context("unable to get system appearance when handling ImmersiveColorSet")
- .log_err()?;
- let mut lock = self.state.borrow_mut();
- if new_appearance != lock.appearance {
- lock.appearance = new_appearance;
- let mut callback = lock.callbacks.appearance_changed.take()?;
- drop(lock);
- callback();
- self.state.borrow_mut().callbacks.appearance_changed = Some(callback);
- configure_dwm_dark_mode(handle, new_appearance);
- }
+ if parameter_string.as_str() == "ImmersiveColorSet" {
+ let new_appearance = system_appearance()
+ .context("unable to get system appearance when handling ImmersiveColorSet")
+ .log_err()?;
+ let mut lock = self.state.borrow_mut();
+ if new_appearance != lock.appearance {
+ lock.appearance = new_appearance;
+ let mut callback = lock.callbacks.appearance_changed.take()?;
+ drop(lock);
+ callback();
+ self.state.borrow_mut().callbacks.appearance_changed = Some(callback);
+ configure_dwm_dark_mode(handle, new_appearance);
}
- _ => {}
}
}
Some(0)
@@ -1469,7 +1466,7 @@ pub(crate) fn current_modifiers() -> Modifiers {
#[inline]
pub(crate) fn current_capslock() -> Capslock {
let on = unsafe { GetKeyState(VK_CAPITAL.0 as i32) & 1 } > 0;
- Capslock { on: on }
+ Capslock { on }
}
fn get_client_area_insets(
@@ -58,23 +58,21 @@ impl TaffyLayoutEngine {
children: &[LayoutId],
) -> LayoutId {
let taffy_style = style.to_taffy(rem_size);
- let layout_id = if children.is_empty() {
+
+ if children.is_empty() {
self.taffy
.new_leaf(taffy_style)
.expect(EXPECT_MESSAGE)
.into()
} else {
- let parent_id = self
- .taffy
+ self.taffy
// This is safe because LayoutId is repr(transparent) to taffy::tree::NodeId.
.new_with_children(taffy_style, unsafe {
std::mem::transmute::<&[LayoutId], &[taffy::NodeId]>(children)
})
.expect(EXPECT_MESSAGE)
- .into();
- parent_id
- };
- layout_id
+ .into()
+ }
}
pub fn request_measured_layout(
@@ -91,8 +89,7 @@ impl TaffyLayoutEngine {
) -> LayoutId {
let taffy_style = style.to_taffy(rem_size);
- let layout_id = self
- .taffy
+ self.taffy
.new_leaf_with_context(
taffy_style,
NodeContext {
@@ -100,8 +97,7 @@ impl TaffyLayoutEngine {
},
)
.expect(EXPECT_MESSAGE)
- .into();
- layout_id
+ .into()
}
// Used to understand performance
@@ -44,7 +44,7 @@ impl LineWrapper {
let mut prev_c = '\0';
let mut index = 0;
let mut candidates = fragments
- .into_iter()
+ .iter()
.flat_map(move |fragment| fragment.wrap_boundary_candidates())
.peekable();
iter::from_fn(move || {
@@ -58,13 +58,7 @@ pub trait FluentBuilder {
where
Self: Sized,
{
- self.map(|this| {
- if let Some(_) = option {
- this
- } else {
- then(this)
- }
- })
+ self.map(|this| if option.is_some() { this } else { then(this) })
}
}
@@ -86,7 +86,7 @@ impl Parse for Args {
Ok(Args {
seeds,
max_retries,
- max_iterations: max_iterations,
+ max_iterations,
on_failure_fn_name,
})
}
@@ -435,8 +435,7 @@ impl HttpClient for FakeHttpClient {
&self,
req: Request<AsyncBody>,
) -> BoxFuture<'static, anyhow::Result<Response<AsyncBody>>> {
- let future = (self.handler.lock().as_ref().unwrap())(req);
- future
+ ((self.handler.lock().as_ref().unwrap())(req)) as _
}
fn user_agent(&self) -> Option<&HeaderValue> {
@@ -50,16 +50,13 @@ impl RealJujutsuRepository {
impl JujutsuRepository for RealJujutsuRepository {
fn list_bookmarks(&self) -> Vec<Bookmark> {
- let bookmarks = self
- .repository
+ self.repository
.view()
.bookmarks()
.map(|(ref_name, _target)| Bookmark {
ref_name: ref_name.as_str().to_string().into(),
})
- .collect();
-
- bookmarks
+ .collect()
}
}
@@ -195,11 +195,9 @@ pub fn new_journal_entry(workspace: &Workspace, window: &mut Window, cx: &mut Ap
}
fn journal_dir(path: &str) -> Option<PathBuf> {
- let expanded_journal_dir = shellexpand::full(path) //TODO handle this better
+ shellexpand::full(path) //TODO handle this better
.ok()
- .map(|dir| Path::new(&dir.to_string()).to_path_buf().join("journal"));
-
- expanded_journal_dir
+ .map(|dir| Path::new(&dir.to_string()).to_path_buf().join("journal"))
}
fn heading_entry(now: NaiveTime, hour_format: &Option<HourFormat>) -> String {
@@ -1128,7 +1128,7 @@ impl Buffer {
} else {
ranges.as_slice()
}
- .into_iter()
+ .iter()
.peekable();
let mut edits = Vec::new();
@@ -1395,7 +1395,8 @@ impl Buffer {
is_first = false;
return true;
}
- let any_sub_ranges_contain_range = layer
+
+ layer
.included_sub_ranges
.map(|sub_ranges| {
sub_ranges.iter().any(|sub_range| {
@@ -1404,9 +1405,7 @@ impl Buffer {
!is_before_start && !is_after_end
})
})
- .unwrap_or(true);
- let result = any_sub_ranges_contain_range;
- result
+ .unwrap_or(true)
})
.last()
.map(|info| info.language.clone())
@@ -2616,7 +2615,7 @@ impl Buffer {
self.completion_triggers = self
.completion_triggers_per_language_server
.values()
- .flat_map(|triggers| triggers.into_iter().cloned())
+ .flat_map(|triggers| triggers.iter().cloned())
.collect();
} else {
self.completion_triggers_per_language_server
@@ -2776,7 +2775,7 @@ impl Buffer {
self.completion_triggers = self
.completion_triggers_per_language_server
.values()
- .flat_map(|triggers| triggers.into_iter().cloned())
+ .flat_map(|triggers| triggers.iter().cloned())
.collect();
} else {
self.completion_triggers_per_language_server
@@ -1513,9 +1513,8 @@ impl Language {
.map(|ix| {
let mut config = BracketsPatternConfig::default();
for setting in query.property_settings(ix) {
- match setting.key.as_ref() {
- "newline.only" => config.newline_only = true,
- _ => {}
+ if setting.key.as_ref() == "newline.only" {
+ config.newline_only = true
}
}
config
@@ -300,7 +300,7 @@ impl From<AnthropicError> for LanguageModelCompletionError {
},
AnthropicError::ServerOverloaded { retry_after } => Self::ServerOverloaded {
provider,
- retry_after: retry_after,
+ retry_after,
},
AnthropicError::ApiError(api_error) => api_error.into(),
}
@@ -404,7 +404,7 @@ pub fn into_open_ai(
match content {
MessageContent::Text(text) | MessageContent::Thinking { text, .. } => {
add_message_content_part(
- open_ai::MessagePart::Text { text: text },
+ open_ai::MessagePart::Text { text },
message.role,
&mut messages,
)
@@ -234,7 +234,7 @@ impl JsonLspAdapter {
schemas
.as_array_mut()
.unwrap()
- .extend(cx.all_action_names().into_iter().map(|&name| {
+ .extend(cx.all_action_names().iter().map(|&name| {
project::lsp_store::json_language_server_ext::url_schema_for_action(name)
}));
@@ -711,7 +711,7 @@ impl Default for PythonToolchainProvider {
}
}
-static ENV_PRIORITY_LIST: &'static [PythonEnvironmentKind] = &[
+static ENV_PRIORITY_LIST: &[PythonEnvironmentKind] = &[
// Prioritize non-Conda environments.
PythonEnvironmentKind::Poetry,
PythonEnvironmentKind::Pipenv,
@@ -5205,13 +5205,9 @@ impl MultiBufferSnapshot {
if offset == diff_transforms.start().0
&& bias == Bias::Left
&& let Some(prev_item) = diff_transforms.prev_item()
+ && let DiffTransform::DeletedHunk { .. } = prev_item
{
- match prev_item {
- DiffTransform::DeletedHunk { .. } => {
- diff_transforms.prev();
- }
- _ => {}
- }
+ diff_transforms.prev();
}
let offset_in_transform = offset - diff_transforms.start().0;
let mut excerpt_offset = diff_transforms.start().1;
@@ -76,9 +76,8 @@ impl NodeRuntime {
let mut state = self.0.lock().await;
let options = loop {
- match state.options.borrow().as_ref() {
- Some(options) => break options.clone(),
- None => {}
+ if let Some(options) = state.options.borrow().as_ref() {
+ break options.clone();
}
match state.options.changed().await {
Ok(()) => {}
@@ -19,7 +19,7 @@ use util::ResultExt;
use workspace::{ModalView, Workspace};
use zed_actions::agent::OpenSettings;
-const FEATURED_PROVIDERS: [&'static str; 4] = ["anthropic", "google", "openai", "ollama"];
+const FEATURED_PROVIDERS: [&str; 4] = ["anthropic", "google", "openai", "ollama"];
fn render_llm_provider_section(
tab_index: &mut isize,
@@ -410,7 +410,7 @@ impl AiPrivacyTooltip {
impl Render for AiPrivacyTooltip {
fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
- const DESCRIPTION: &'static str = "We believe in opt-in data sharing as the default for building AI products, rather than opt-out. We'll only use or store your data if you affirmatively send it to us. ";
+ const DESCRIPTION: &str = "We believe in opt-in data sharing as the default for building AI products, rather than opt-out. We'll only use or store your data if you affirmatively send it to us. ";
tooltip_container(window, cx, move |this, _, _| {
this.child(
@@ -16,8 +16,8 @@ use vim_mode_setting::VimModeSetting;
use crate::theme_preview::{ThemePreviewStyle, ThemePreviewTile};
-const LIGHT_THEMES: [&'static str; 3] = ["One Light", "Ayu Light", "Gruvbox Light"];
-const DARK_THEMES: [&'static str; 3] = ["One Dark", "Ayu Dark", "Gruvbox Dark"];
+const LIGHT_THEMES: [&str; 3] = ["One Light", "Ayu Light", "Gruvbox Light"];
+const DARK_THEMES: [&str; 3] = ["One Dark", "Ayu Dark", "Gruvbox Dark"];
const FAMILY_NAMES: [SharedString; 3] = [
SharedString::new_static("One"),
SharedString::new_static("Ayu"),
@@ -114,7 +114,7 @@ fn render_theme_section(tab_index: &mut isize, cx: &mut App) -> impl IntoElement
let themes = theme_names.map(|theme| theme_registry.get(theme).unwrap());
- let theme_previews = [0, 1, 2].map(|index| {
+ [0, 1, 2].map(|index| {
let theme = &themes[index];
let is_selected = theme.name == current_theme_name;
let name = theme.name.clone();
@@ -176,9 +176,7 @@ fn render_theme_section(tab_index: &mut isize, cx: &mut App) -> impl IntoElement
.color(Color::Muted)
.size(LabelSize::Small),
)
- });
-
- theme_previews
+ })
}
fn write_mode_change(mode: ThemeMode, cx: &mut App) {
@@ -605,7 +605,7 @@ fn render_popular_settings_section(
window: &mut Window,
cx: &mut App,
) -> impl IntoElement {
- const LIGATURE_TOOLTIP: &'static str =
+ const LIGATURE_TOOLTIP: &str =
"Font ligatures combine two characters into one. For example, turning =/= into ≠.";
v_flex()
@@ -733,7 +733,8 @@ impl OutlinePanel {
) -> Entity<Self> {
let project = workspace.project().clone();
let workspace_handle = cx.entity().downgrade();
- let outline_panel = cx.new(|cx| {
+
+ cx.new(|cx| {
let filter_editor = cx.new(|cx| {
let mut editor = Editor::single_line(window, cx);
editor.set_placeholder_text("Filter...", cx);
@@ -912,9 +913,7 @@ impl OutlinePanel {
outline_panel.replace_active_editor(item, editor, window, cx);
}
outline_panel
- });
-
- outline_panel
+ })
}
fn serialization_key(workspace: &Workspace) -> Option<String> {
@@ -2624,7 +2623,7 @@ impl OutlinePanel {
}
fn entry_name(&self, worktree_id: &WorktreeId, entry: &Entry, cx: &App) -> String {
- let name = match self.project.read(cx).worktree_for_id(*worktree_id, cx) {
+ match self.project.read(cx).worktree_for_id(*worktree_id, cx) {
Some(worktree) => {
let worktree = worktree.read(cx);
match worktree.snapshot().root_entry() {
@@ -2645,8 +2644,7 @@ impl OutlinePanel {
}
}
None => file_name(entry.path.as_ref()),
- };
- name
+ }
}
fn update_fs_entries(
@@ -2681,7 +2679,8 @@ impl OutlinePanel {
new_collapsed_entries = outline_panel.collapsed_entries.clone();
new_unfolded_dirs = outline_panel.unfolded_dirs.clone();
let multi_buffer_snapshot = active_multi_buffer.read(cx).snapshot(cx);
- let buffer_excerpts = multi_buffer_snapshot.excerpts().fold(
+
+ multi_buffer_snapshot.excerpts().fold(
HashMap::default(),
|mut buffer_excerpts, (excerpt_id, buffer_snapshot, excerpt_range)| {
let buffer_id = buffer_snapshot.remote_id();
@@ -2728,8 +2727,7 @@ impl OutlinePanel {
);
buffer_excerpts
},
- );
- buffer_excerpts
+ )
}) else {
return;
};
@@ -4807,7 +4805,7 @@ impl OutlinePanel {
.with_compute_indents_fn(cx.entity(), |outline_panel, range, _, _| {
let entries = outline_panel.cached_entries.get(range);
if let Some(entries) = entries {
- entries.into_iter().map(|item| item.depth).collect()
+ entries.iter().map(|item| item.depth).collect()
} else {
smallvec::SmallVec::new()
}
@@ -413,13 +413,10 @@ impl LocalBufferStore {
cx: &mut Context<BufferStore>,
) {
cx.subscribe(worktree, |this, worktree, event, cx| {
- if worktree.read(cx).is_local() {
- match event {
- worktree::Event::UpdatedEntries(changes) => {
- Self::local_worktree_entries_changed(this, &worktree, changes, cx);
- }
- _ => {}
- }
+ if worktree.read(cx).is_local()
+ && let worktree::Event::UpdatedEntries(changes) = event
+ {
+ Self::local_worktree_entries_changed(this, &worktree, changes, cx);
}
})
.detach();
@@ -947,10 +944,9 @@ impl BufferStore {
}
pub fn get_by_path(&self, path: &ProjectPath) -> Option<Entity<Buffer>> {
- self.path_to_buffer_id.get(path).and_then(|buffer_id| {
- let buffer = self.get(*buffer_id);
- buffer
- })
+ self.path_to_buffer_id
+ .get(path)
+ .and_then(|buffer_id| self.get(*buffer_id))
}
pub fn get(&self, buffer_id: BufferId) -> Option<Entity<Buffer>> {
@@ -4,8 +4,8 @@ use gpui::{Hsla, Rgba};
use lsp::{CompletionItem, Documentation};
use regex::{Regex, RegexBuilder};
-const HEX: &'static str = r#"(#(?:[\da-fA-F]{3}){1,2})"#;
-const RGB_OR_HSL: &'static str = r#"(rgba?|hsla?)\(\s*(\d{1,3}%?)\s*,\s*(\d{1,3}%?)\s*,\s*(\d{1,3}%?)\s*(?:,\s*(1|0?\.\d+))?\s*\)"#;
+const HEX: &str = r#"(#(?:[\da-fA-F]{3}){1,2})"#;
+const RGB_OR_HSL: &str = r#"(rgba?|hsla?)\(\s*(\d{1,3}%?)\s*,\s*(\d{1,3}%?)\s*,\s*(\d{1,3}%?)\s*(?:,\s*(1|0?\.\d+))?\s*\)"#;
static RELAXED_HEX_REGEX: LazyLock<Regex> = LazyLock::new(|| {
RegexBuilder::new(HEX)
@@ -141,7 +141,7 @@ mod tests {
use gpui::rgba;
use lsp::{CompletionItem, CompletionItemKind};
- pub const COLOR_TABLE: &[(&'static str, Option<u32>)] = &[
+ pub const COLOR_TABLE: &[(&str, Option<u32>)] = &[
// -- Invalid --
// Invalid hex
("f0f", None),
@@ -642,8 +642,8 @@ mod tests {
#[gpui::test]
async fn test_context_server_status(cx: &mut TestAppContext) {
- const SERVER_1_ID: &'static str = "mcp-1";
- const SERVER_2_ID: &'static str = "mcp-2";
+ const SERVER_1_ID: &str = "mcp-1";
+ const SERVER_2_ID: &str = "mcp-2";
let (_fs, project) = setup_context_server_test(
cx,
@@ -722,8 +722,8 @@ mod tests {
#[gpui::test]
async fn test_context_server_status_events(cx: &mut TestAppContext) {
- const SERVER_1_ID: &'static str = "mcp-1";
- const SERVER_2_ID: &'static str = "mcp-2";
+ const SERVER_1_ID: &str = "mcp-1";
+ const SERVER_2_ID: &str = "mcp-2";
let (_fs, project) = setup_context_server_test(
cx,
@@ -784,7 +784,7 @@ mod tests {
#[gpui::test(iterations = 25)]
async fn test_context_server_concurrent_starts(cx: &mut TestAppContext) {
- const SERVER_1_ID: &'static str = "mcp-1";
+ const SERVER_1_ID: &str = "mcp-1";
let (_fs, project) = setup_context_server_test(
cx,
@@ -845,8 +845,8 @@ mod tests {
#[gpui::test]
async fn test_context_server_maintain_servers_loop(cx: &mut TestAppContext) {
- const SERVER_1_ID: &'static str = "mcp-1";
- const SERVER_2_ID: &'static str = "mcp-2";
+ const SERVER_1_ID: &str = "mcp-1";
+ const SERVER_2_ID: &str = "mcp-2";
let server_1_id = ContextServerId(SERVER_1_ID.into());
let server_2_id = ContextServerId(SERVER_2_ID.into());
@@ -1084,7 +1084,7 @@ mod tests {
#[gpui::test]
async fn test_context_server_enabled_disabled(cx: &mut TestAppContext) {
- const SERVER_1_ID: &'static str = "mcp-1";
+ const SERVER_1_ID: &str = "mcp-1";
let server_1_id = ContextServerId(SERVER_1_ID.into());
@@ -470,9 +470,8 @@ impl DapStore {
session_id: impl Borrow<SessionId>,
) -> Option<Entity<session::Session>> {
let session_id = session_id.borrow();
- let client = self.sessions.get(session_id).cloned();
- client
+ self.sessions.get(session_id).cloned()
}
pub fn sessions(&self) -> impl Iterator<Item = &Entity<Session>> {
self.sessions.values()
@@ -174,7 +174,7 @@ impl DapLocator for GoLocator {
request: "launch".to_string(),
mode: "test".to_string(),
program,
- args: args,
+ args,
build_flags,
cwd: build_config.cwd.clone(),
env: build_config.env.clone(),
@@ -185,7 +185,7 @@ impl DapLocator for GoLocator {
label: resolved_label.to_string().into(),
adapter: adapter.0.clone(),
build: None,
- config: config,
+ config,
tcp_connection: None,
})
}
@@ -220,7 +220,7 @@ impl DapLocator for GoLocator {
request: "launch".to_string(),
mode: "debug".to_string(),
program,
- args: args,
+ args,
build_flags,
})
.unwrap();
@@ -226,7 +226,7 @@ impl RunningMode {
fn unset_breakpoints_from_paths(&self, paths: &Vec<Arc<Path>>, cx: &mut App) -> Task<()> {
let tasks: Vec<_> = paths
- .into_iter()
+ .iter()
.map(|path| {
self.request(dap_command::SetBreakpoints {
source: client_source(path),
@@ -508,13 +508,12 @@ impl RunningMode {
.ok();
}
- let ret = if configuration_done_supported {
+ if configuration_done_supported {
this.request(ConfigurationDone {})
} else {
Task::ready(Ok(()))
}
- .await;
- ret
+ .await
}
});
@@ -839,7 +838,7 @@ impl Session {
})
.detach();
- let this = Self {
+ Self {
mode: SessionState::Booting(None),
id: session_id,
child_session_ids: HashSet::default(),
@@ -868,9 +867,7 @@ impl Session {
task_context,
memory: memory::Memory::new(),
quirks,
- };
-
- this
+ }
})
}
@@ -446,15 +446,12 @@ impl ImageStore {
event: &ImageItemEvent,
cx: &mut Context<Self>,
) {
- match event {
- ImageItemEvent::FileHandleChanged => {
- if let Some(local) = self.state.as_local() {
- local.update(cx, |local, cx| {
- local.image_changed_file(image, cx);
- })
- }
- }
- _ => {}
+ if let ImageItemEvent::FileHandleChanged = event
+ && let Some(local) = self.state.as_local()
+ {
+ local.update(cx, |local, cx| {
+ local.image_changed_file(image, cx);
+ })
}
}
}
@@ -531,13 +528,10 @@ impl ImageStoreImpl for Entity<LocalImageStore> {
impl LocalImageStore {
fn subscribe_to_worktree(&mut self, worktree: &Entity<Worktree>, cx: &mut Context<Self>) {
cx.subscribe(worktree, |this, worktree, event, cx| {
- if worktree.read(cx).is_local() {
- match event {
- worktree::Event::UpdatedEntries(changes) => {
- this.local_worktree_entries_changed(&worktree, changes, cx);
- }
- _ => {}
- }
+ if worktree.read(cx).is_local()
+ && let worktree::Event::UpdatedEntries(changes) = event
+ {
+ this.local_worktree_entries_changed(&worktree, changes, cx);
}
})
.detach();
@@ -2501,8 +2501,8 @@ pub(crate) fn parse_completion_text_edit(
};
Some(ParsedCompletionEdit {
- insert_range: insert_range,
- replace_range: replace_range,
+ insert_range,
+ replace_range,
new_text: new_text.clone(),
})
}
@@ -550,7 +550,7 @@ impl LocalLspStore {
if let Some(settings) = settings.binary.as_ref() {
if let Some(arguments) = &settings.arguments {
- binary.arguments = arguments.into_iter().map(Into::into).collect();
+ binary.arguments = arguments.iter().map(Into::into).collect();
}
if let Some(env) = &settings.env {
shell_env.extend(env.iter().map(|(k, v)| (k.clone(), v.clone())));
@@ -1060,8 +1060,8 @@ impl LocalLspStore {
};
let delegate: Arc<dyn ManifestDelegate> =
Arc::new(ManifestQueryDelegate::new(worktree.read(cx).snapshot()));
- let root = self
- .lsp_tree
+
+ self.lsp_tree
.get(
project_path,
language.name(),
@@ -1069,9 +1069,7 @@ impl LocalLspStore {
&delegate,
cx,
)
- .collect::<Vec<_>>();
-
- root
+ .collect::<Vec<_>>()
}
fn language_server_ids_for_buffer(
@@ -2397,7 +2395,8 @@ impl LocalLspStore {
let server_id = server_node.server_id_or_init(|disposition| {
let path = &disposition.path;
- let server_id = {
+
+ {
let uri =
Url::from_file_path(worktree.read(cx).abs_path().join(&path.path));
@@ -2415,9 +2414,7 @@ impl LocalLspStore {
state.add_workspace_folder(uri);
};
server_id
- };
-
- server_id
+ }
})?;
let server_state = self.language_servers.get(&server_id)?;
if let LanguageServerState::Running {
@@ -3047,16 +3044,14 @@ impl LocalLspStore {
buffer.edit([(range, text)], None, cx);
}
- let transaction = buffer.end_transaction(cx).and_then(|transaction_id| {
+ buffer.end_transaction(cx).and_then(|transaction_id| {
if push_to_history {
buffer.finalize_last_transaction();
buffer.get_transaction(transaction_id).cloned()
} else {
buffer.forget_transaction(transaction_id)
}
- });
-
- transaction
+ })
})?;
if let Some(transaction) = transaction {
project_transaction.0.insert(buffer_to_edit, transaction);
@@ -4370,13 +4365,11 @@ impl LspStore {
if let Some((client, downstream_project_id)) = self.downstream_client.clone()
&& let Some(diangostic_summaries) = self.diagnostic_summaries.get(&worktree.id())
{
- let mut summaries = diangostic_summaries
- .into_iter()
- .flat_map(|(path, summaries)| {
- summaries
- .into_iter()
- .map(|(server_id, summary)| summary.to_proto(*server_id, path))
- });
+ let mut summaries = diangostic_summaries.iter().flat_map(|(path, summaries)| {
+ summaries
+ .iter()
+ .map(|(server_id, summary)| summary.to_proto(*server_id, path))
+ });
if let Some(summary) = summaries.next() {
client
.send(proto::UpdateDiagnosticSummary {
@@ -4564,7 +4557,7 @@ impl LspStore {
anyhow::anyhow!(message)
})?;
- let response = request
+ request
.response_from_lsp(
response,
this.upgrade().context("no app context")?,
@@ -4572,8 +4565,7 @@ impl LspStore {
language_server.server_id(),
cx.clone(),
)
- .await;
- response
+ .await
})
}
@@ -4853,7 +4845,7 @@ impl LspStore {
push_to_history: bool,
cx: &mut Context<Self>,
) -> Task<anyhow::Result<ProjectTransaction>> {
- if let Some(_) = self.as_local() {
+ if self.as_local().is_some() {
cx.spawn(async move |lsp_store, cx| {
let buffers = buffers.into_iter().collect::<Vec<_>>();
let result = LocalLspStore::execute_code_action_kind_locally(
@@ -7804,7 +7796,7 @@ impl LspStore {
}
None => {
diagnostics_summary = Some(proto::UpdateDiagnosticSummary {
- project_id: project_id,
+ project_id,
worktree_id: worktree_id.to_proto(),
summary: Some(proto::DiagnosticSummary {
path: project_path.path.as_ref().to_proto(),
@@ -10054,7 +10046,7 @@ impl LspStore {
cx: &mut Context<Self>,
) -> Task<anyhow::Result<ProjectTransaction>> {
let logger = zlog::scoped!("format");
- if let Some(_) = self.as_local() {
+ if self.as_local().is_some() {
zlog::trace!(logger => "Formatting locally");
let logger = zlog::scoped!(logger => "local");
let buffers = buffers
@@ -43,12 +43,9 @@ impl WorktreeRoots {
match event {
WorktreeEvent::UpdatedEntries(changes) => {
for (path, _, kind) in changes.iter() {
- match kind {
- worktree::PathChange::Removed => {
- let path = TriePath::from(path.as_ref());
- this.roots.remove(&path);
- }
- _ => {}
+ if kind == &worktree::PathChange::Removed {
+ let path = TriePath::from(path.as_ref());
+ this.roots.remove(&path);
}
}
}
@@ -197,11 +194,8 @@ impl ManifestTree {
evt: &WorktreeStoreEvent,
_: &mut Context<Self>,
) {
- match evt {
- WorktreeStoreEvent::WorktreeRemoved(_, worktree_id) => {
- self.root_points.remove(worktree_id);
- }
- _ => {}
+ if let WorktreeStoreEvent::WorktreeRemoved(_, worktree_id) = evt {
+ self.root_points.remove(worktree_id);
}
}
}
@@ -2885,14 +2885,11 @@ impl Project {
event: &DapStoreEvent,
cx: &mut Context<Self>,
) {
- match event {
- DapStoreEvent::Notification(message) => {
- cx.emit(Event::Toast {
- notification_id: "dap".into(),
- message: message.clone(),
- });
- }
- _ => {}
+ if let DapStoreEvent::Notification(message) = event {
+ cx.emit(Event::Toast {
+ notification_id: "dap".into(),
+ message: message.clone(),
+ });
}
}
@@ -3179,14 +3176,11 @@ impl Project {
event: &ImageItemEvent,
cx: &mut Context<Self>,
) -> Option<()> {
- match event {
- ImageItemEvent::ReloadNeeded => {
- if !self.is_via_collab() {
- self.reload_images([image.clone()].into_iter().collect(), cx)
- .detach_and_log_err(cx);
- }
- }
- _ => {}
+ if let ImageItemEvent::ReloadNeeded = event
+ && !self.is_via_collab()
+ {
+ self.reload_images([image.clone()].into_iter().collect(), cx)
+ .detach_and_log_err(cx);
}
None
@@ -695,7 +695,7 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
assert_eq!(
buffer
.completion_triggers()
- .into_iter()
+ .iter()
.cloned()
.collect::<Vec<_>>(),
&[".".to_string(), "::".to_string()]
@@ -747,7 +747,7 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
assert_eq!(
buffer
.completion_triggers()
- .into_iter()
+ .iter()
.cloned()
.collect::<Vec<_>>(),
&[":".to_string()]
@@ -766,7 +766,7 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
assert_eq!(
buffer
.completion_triggers()
- .into_iter()
+ .iter()
.cloned()
.collect::<Vec<_>>(),
&[".".to_string(), "::".to_string()]
@@ -110,7 +110,7 @@ impl<T: InventoryContents> InventoryFor<T> {
fn global_scenarios(&self) -> impl '_ + Iterator<Item = (TaskSourceKind, T)> {
self.global.iter().flat_map(|(file_path, templates)| {
- templates.into_iter().map(|template| {
+ templates.iter().map(|template| {
(
TaskSourceKind::AbsPath {
id_base: Cow::Owned(format!("global {}", T::GLOBAL_SOURCE_FILE)),
@@ -67,13 +67,11 @@ pub struct SshDetails {
impl Project {
pub fn active_project_directory(&self, cx: &App) -> Option<Arc<Path>> {
- let worktree = self
- .active_entry()
+ self.active_entry()
.and_then(|entry_id| self.worktree_for_entry(entry_id, cx))
.into_iter()
.chain(self.worktrees(cx))
- .find_map(|tree| tree.read(cx).root_dir());
- worktree
+ .find_map(|tree| tree.read(cx).root_dir())
}
pub fn first_project_directory(&self, cx: &App) -> Option<PathBuf> {
@@ -3589,7 +3589,7 @@ impl ProjectPanel {
previous_components.next();
}
- if let Some(_) = suffix_components {
+ if suffix_components.is_some() {
new_path.push(previous_components);
}
if let Some(str) = new_path.to_str() {
@@ -4422,9 +4422,7 @@ impl ProjectPanel {
let components = Path::new(&file_name)
.components()
.map(|comp| {
- let comp_str =
- comp.as_os_str().to_string_lossy().into_owned();
- comp_str
+ comp.as_os_str().to_string_lossy().into_owned()
})
.collect::<Vec<_>>();
@@ -88,11 +88,8 @@ impl DisconnectedOverlay {
self.finished = true;
cx.emit(DismissEvent);
- match &self.host {
- Host::SshRemoteProject(ssh_connection_options) => {
- self.reconnect_to_ssh_remote(ssh_connection_options.clone(), window, cx);
- }
- _ => {}
+ if let Host::SshRemoteProject(ssh_connection_options) = &self.host {
+ self.reconnect_to_ssh_remote(ssh_connection_options.clone(), window, cx);
}
}
@@ -31,8 +31,8 @@ pub async fn read_message<S: AsyncRead + Unpin>(
stream.read_exact(buffer).await?;
let len = message_len_from_buffer(buffer);
- let result = read_message_with_len(stream, buffer, len).await;
- result
+
+ read_message_with_len(stream, buffer, len).await
}
pub async fn write_message<S: AsyncWrite + Unpin>(
@@ -194,15 +194,11 @@ impl HeadlessProject {
languages.clone(),
);
- cx.subscribe(
- &buffer_store,
- |_this, _buffer_store, event, cx| match event {
- BufferStoreEvent::BufferAdded(buffer) => {
- cx.subscribe(buffer, Self::on_buffer_event).detach();
- }
- _ => {}
- },
- )
+ cx.subscribe(&buffer_store, |_this, _buffer_store, event, cx| {
+ if let BufferStoreEvent::BufferAdded(buffer) = event {
+ cx.subscribe(buffer, Self::on_buffer_event).detach();
+ }
+ })
.detach();
let extensions = HeadlessExtensionStore::new(
@@ -285,18 +281,17 @@ impl HeadlessProject {
event: &BufferEvent,
cx: &mut Context<Self>,
) {
- match event {
- BufferEvent::Operation {
- operation,
- is_local: true,
- } => cx
- .background_spawn(self.session.request(proto::UpdateBuffer {
- project_id: SSH_PROJECT_ID,
- buffer_id: buffer.read(cx).remote_id().to_proto(),
- operations: vec![serialize_operation(operation)],
- }))
- .detach(),
- _ => {}
+ if let BufferEvent::Operation {
+ operation,
+ is_local: true,
+ } = event
+ {
+ cx.background_spawn(self.session.request(proto::UpdateBuffer {
+ project_id: SSH_PROJECT_ID,
+ buffer_id: buffer.read(cx).remote_id().to_proto(),
+ operations: vec![serialize_operation(operation)],
+ }))
+ .detach()
}
}
@@ -334,7 +334,7 @@ fn start_server(
let (mut stdin_msg_tx, mut stdin_msg_rx) = mpsc::unbounded::<Envelope>();
cx.background_spawn(async move {
while let Ok(msg) = read_message(&mut stdin_stream, &mut input_buffer).await {
- if let Err(_) = stdin_msg_tx.send(msg).await {
+ if (stdin_msg_tx.send(msg).await).is_err() {
break;
}
}
@@ -891,7 +891,8 @@ pub fn handle_settings_file_changes(
fn read_proxy_settings(cx: &mut Context<HeadlessProject>) -> Option<Url> {
let proxy_str = ProxySettings::get_global(cx).proxy.to_owned();
- let proxy_url = proxy_str
+
+ proxy_str
.as_ref()
.and_then(|input: &String| {
input
@@ -899,8 +900,7 @@ fn read_proxy_settings(cx: &mut Context<HeadlessProject>) -> Option<Url> {
.inspect_err(|e| log::error!("Error parsing proxy settings: {}", e))
.ok()
})
- .or_else(read_proxy_from_env);
- proxy_url
+ .or_else(read_proxy_from_env)
}
fn daemonize() -> Result<ControlFlow<()>> {
@@ -269,10 +269,9 @@ where
};
let picker_view = cx.new(|cx| {
- let picker = Picker::uniform_list(delegate, window, cx)
+ Picker::uniform_list(delegate, window, cx)
.width(rems(30.))
- .max_height(Some(rems(20.).into()));
- picker
+ .max_height(Some(rems(20.).into()))
});
PopoverMenu::new("kernel-switcher")
@@ -91,7 +91,7 @@ fn convert_outputs(
cx: &mut App,
) -> Vec<Output> {
outputs
- .into_iter()
+ .iter()
.map(|output| match output {
nbformat::v4::Output::Stream { text, .. } => Output::Stream {
content: cx.new(|cx| TerminalOutput::from(&text.0, window, cx)),
@@ -584,8 +584,8 @@ impl project::ProjectItem for NotebookItem {
Ok(nbformat::Notebook::Legacy(legacy_notebook)) => {
// TODO: Decide if we want to mutate the notebook by including Cell IDs
// and any other conversions
- let notebook = nbformat::upgrade_legacy_notebook(legacy_notebook)?;
- notebook
+
+ nbformat::upgrade_legacy_notebook(legacy_notebook)?
}
// Bad notebooks and notebooks v4.0 and below are not supported
Err(e) => {
@@ -68,7 +68,7 @@ pub fn text_style(window: &mut Window, cx: &mut App) -> TextStyle {
let theme = cx.theme();
- let text_style = TextStyle {
+ TextStyle {
font_family,
font_features,
font_weight,
@@ -81,9 +81,7 @@ pub fn text_style(window: &mut Window, cx: &mut App) -> TextStyle {
// These are going to be overridden per-cell
color: theme.colors().terminal_foreground,
..Default::default()
- };
-
- text_style
+ }
}
/// Returns the default terminal size for the terminal output.
@@ -543,7 +543,7 @@ impl Iterator for Tabs {
// Since tabs are 1 byte the tab offset is the same as the byte offset
let position = TabPosition {
byte_offset: tab_offset,
- char_offset: char_offset,
+ char_offset,
};
// Remove the tab we've just seen
self.tabs ^= 1 << tab_offset;
@@ -49,7 +49,7 @@ actions!(
]
);
-const BUILT_IN_TOOLTIP_TEXT: &'static str = concat!(
+const BUILT_IN_TOOLTIP_TEXT: &str = concat!(
"This rule supports special functionality.\n",
"It's read-only, but you can remove it from your default rules."
);
@@ -1113,8 +1113,8 @@ impl ProjectSearchView {
.await
.log_err();
}
- let should_search = result != 2;
- should_search
+
+ result != 2
} else {
true
};
@@ -1415,7 +1415,7 @@ pub fn get_key_equivalents(layout: &str) -> Option<HashMap<char, char>> {
_ => return None,
};
- Some(HashMap::from_iter(mappings.into_iter().cloned()))
+ Some(HashMap::from_iter(mappings.iter().cloned()))
}
#[cfg(not(target_os = "macos"))]
@@ -295,9 +295,9 @@ fn replace_value_in_json_text(
}
}
-const TS_DOCUMENT_KIND: &'static str = "document";
-const TS_ARRAY_KIND: &'static str = "array";
-const TS_COMMENT_KIND: &'static str = "comment";
+const TS_DOCUMENT_KIND: &str = "document";
+const TS_ARRAY_KIND: &str = "array";
+const TS_COMMENT_KIND: &str = "comment";
pub fn replace_top_level_array_value_in_json_text(
text: &str,
@@ -621,8 +621,7 @@ impl KeymapEditor {
let key_bindings_ptr = cx.key_bindings();
let lock = key_bindings_ptr.borrow();
let key_bindings = lock.bindings();
- let mut unmapped_action_names =
- HashSet::from_iter(cx.all_action_names().into_iter().copied());
+ let mut unmapped_action_names = HashSet::from_iter(cx.all_action_names().iter().copied());
let action_documentation = cx.action_documentation();
let mut generator = KeymapFile::action_schema_generator();
let actions_with_schemas = HashSet::from_iter(
@@ -1289,7 +1288,7 @@ struct HumanizedActionNameCache {
impl HumanizedActionNameCache {
fn new(cx: &App) -> Self {
- let cache = HashMap::from_iter(cx.all_action_names().into_iter().map(|&action_name| {
+ let cache = HashMap::from_iter(cx.all_action_names().iter().map(|&action_name| {
(
action_name,
command_palette::humanize_action_name(action_name).into(),
@@ -1857,18 +1856,15 @@ impl Render for KeymapEditor {
mouse_down_event: &gpui::MouseDownEvent,
window,
cx| {
- match mouse_down_event.button {
- MouseButton::Right => {
- this.select_index(
- row_index, None, window, cx,
- );
- this.create_context_menu(
- mouse_down_event.position,
- window,
- cx,
- );
- }
- _ => {}
+ if mouse_down_event.button == MouseButton::Right {
+ this.select_index(
+ row_index, None, window, cx,
+ );
+ this.create_context_menu(
+ mouse_down_event.position,
+ window,
+ cx,
+ );
}
},
))
@@ -19,7 +19,7 @@ actions!(
]
);
-const KEY_CONTEXT_VALUE: &'static str = "KeystrokeInput";
+const KEY_CONTEXT_VALUE: &str = "KeystrokeInput";
const CLOSE_KEYSTROKE_CAPTURE_END_TIMEOUT: std::time::Duration =
std::time::Duration::from_millis(300);
@@ -213,7 +213,7 @@ impl TableInteractionState {
let mut column_ix = 0;
let resizable_columns_slice = *resizable_columns;
- let mut resizable_columns = resizable_columns.into_iter();
+ let mut resizable_columns = resizable_columns.iter();
let dividers = intersperse_with(spacers, || {
window.with_id(column_ix, |window| {
@@ -801,7 +801,7 @@ impl<const COLS: usize> Table<COLS> {
) -> Self {
self.rows = TableContents::UniformList(UniformListData {
element_id: id.into(),
- row_count: row_count,
+ row_count,
render_item_fn: Box::new(render_item_fn),
});
self
@@ -109,15 +109,13 @@ static ALL_STORY_SELECTORS: OnceLock<Vec<StorySelector>> = OnceLock::new();
impl ValueEnum for StorySelector {
fn value_variants<'a>() -> &'a [Self] {
- let stories = ALL_STORY_SELECTORS.get_or_init(|| {
+ (ALL_STORY_SELECTORS.get_or_init(|| {
let component_stories = ComponentStory::iter().map(StorySelector::Component);
component_stories
.chain(std::iter::once(StorySelector::KitchenSink))
.collect::<Vec<_>>()
- });
-
- stories
+ })) as _
}
fn to_possible_value(&self) -> Option<clap::builder::PossibleValue> {
@@ -157,18 +157,15 @@ impl SvgPreviewView {
&active_editor,
window,
|this: &mut SvgPreviewView, _editor, event: &EditorEvent, window, cx| {
- match event {
- EditorEvent::Saved => {
- // Remove cached image to force reload
- if let Some(svg_path) = &this.svg_path {
- let resource = Resource::Path(svg_path.clone().into());
- this.image_cache.update(cx, |cache, cx| {
- cache.remove(&resource, window, cx);
- });
- }
- cx.notify();
+ if event == &EditorEvent::Saved {
+ // Remove cached image to force reload
+ if let Some(svg_path) = &this.svg_path {
+ let resource = Resource::Path(svg_path.clone().into());
+ this.image_cache.update(cx, |cache, cx| {
+ cache.remove(&resource, window, cx);
+ });
}
- _ => {}
+ cx.notify();
}
},
);
@@ -184,22 +181,18 @@ impl SvgPreviewView {
event: &workspace::Event,
_window,
cx| {
- match event {
- workspace::Event::ActiveItemChanged => {
- let workspace_read = workspace.read(cx);
- if let Some(active_item) = workspace_read.active_item(cx)
- && let Some(editor_entity) =
- active_item.downcast::<Editor>()
- && Self::is_svg_file(&editor_entity, cx)
- {
- let new_path = Self::get_svg_path(&editor_entity, cx);
- if this.svg_path != new_path {
- this.svg_path = new_path;
- cx.notify();
- }
+ if let workspace::Event::ActiveItemChanged = event {
+ let workspace_read = workspace.read(cx);
+ if let Some(active_item) = workspace_read.active_item(cx)
+ && let Some(editor_entity) = active_item.downcast::<Editor>()
+ && Self::is_svg_file(&editor_entity, cx)
+ {
+ let new_path = Self::get_svg_path(&editor_entity, cx);
+ if this.svg_path != new_path {
+ this.svg_path = new_path;
+ cx.notify();
}
}
- _ => {}
}
},
)
@@ -237,13 +237,11 @@ impl ShellBuilder {
task_args: &Vec<String>,
) -> (String, Vec<String>) {
if let Some(task_command) = task_command {
- let combined_command = task_args
- .into_iter()
- .fold(task_command, |mut command, arg| {
- command.push(' ');
- command.push_str(&self.kind.to_shell_variable(arg));
- command
- });
+ let combined_command = task_args.iter().fold(task_command, |mut command, arg| {
+ command.push(' ');
+ command.push_str(&self.kind.to_shell_variable(arg));
+ command
+ });
self.args
.extend(self.kind.args_for_shell(self.interactive, combined_command));
@@ -550,7 +550,7 @@ impl PickerDelegate for TasksModalDelegate {
list_item.tooltip(move |_, _| item_label.clone())
})
.map(|item| {
- let item = if matches!(source_kind, TaskSourceKind::UserInput)
+ if matches!(source_kind, TaskSourceKind::UserInput)
|| Some(ix) <= self.divider_index
{
let task_index = hit.candidate_id;
@@ -579,8 +579,7 @@ impl PickerDelegate for TasksModalDelegate {
item.end_hover_slot(delete_button)
} else {
item
- };
- item
+ }
})
.toggle_state(selected)
.child(highlighted_location.render(window, cx)),
@@ -236,7 +236,7 @@ impl TerminalPanel {
) -> Result<Entity<Self>> {
let mut terminal_panel = None;
- match workspace
+ if let Some((database_id, serialization_key)) = workspace
.read_with(&cx, |workspace, _| {
workspace
.database_id()
@@ -244,34 +244,29 @@ impl TerminalPanel {
})
.ok()
.flatten()
+ && let Some(serialized_panel) = cx
+ .background_spawn(async move { KEY_VALUE_STORE.read_kvp(&serialization_key) })
+ .await
+ .log_err()
+ .flatten()
+ .map(|panel| serde_json::from_str::<SerializedTerminalPanel>(&panel))
+ .transpose()
+ .log_err()
+ .flatten()
+ && let Ok(serialized) = workspace
+ .update_in(&mut cx, |workspace, window, cx| {
+ deserialize_terminal_panel(
+ workspace.weak_handle(),
+ workspace.project().clone(),
+ database_id,
+ serialized_panel,
+ window,
+ cx,
+ )
+ })?
+ .await
{
- Some((database_id, serialization_key)) => {
- if let Some(serialized_panel) = cx
- .background_spawn(async move { KEY_VALUE_STORE.read_kvp(&serialization_key) })
- .await
- .log_err()
- .flatten()
- .map(|panel| serde_json::from_str::<SerializedTerminalPanel>(&panel))
- .transpose()
- .log_err()
- .flatten()
- && let Ok(serialized) = workspace
- .update_in(&mut cx, |workspace, window, cx| {
- deserialize_terminal_panel(
- workspace.weak_handle(),
- workspace.project().clone(),
- database_id,
- serialized_panel,
- window,
- cx,
- )
- })?
- .await
- {
- terminal_panel = Some(serialized);
- }
- }
- _ => {}
+ terminal_panel = Some(serialized);
}
let terminal_panel = if let Some(panel) = terminal_panel {
@@ -629,7 +624,7 @@ impl TerminalPanel {
workspace
.read(cx)
.panes()
- .into_iter()
+ .iter()
.cloned()
.flat_map(pane_terminal_views),
)
@@ -1937,7 +1937,8 @@ impl SearchableItem for TerminalView {
// Selection head might have a value if there's a selection that isn't
// associated with a match. Therefore, if there are no matches, we should
// report None, no matter the state of the terminal
- let res = if !matches.is_empty() {
+
+ if !matches.is_empty() {
if let Some(selection_head) = self.terminal().read(cx).selection_head {
// If selection head is contained in a match. Return that match
match direction {
@@ -1977,9 +1978,7 @@ impl SearchableItem for TerminalView {
}
} else {
None
- };
-
- res
+ }
}
fn replace(
&mut self,
@@ -398,7 +398,7 @@ static DEFAULT_ICON_THEME: LazyLock<Arc<IconTheme>> = LazyLock::new(|| {
},
file_stems: icon_keys_by_association(FILE_STEMS_BY_ICON_KEY),
file_suffixes: icon_keys_by_association(FILE_SUFFIXES_BY_ICON_KEY),
- file_icons: HashMap::from_iter(FILE_ICONS.into_iter().map(|(ty, path)| {
+ file_icons: HashMap::from_iter(FILE_ICONS.iter().map(|(ty, path)| {
(
ty.to_string(),
IconDefinition {
@@ -41,7 +41,8 @@ fn toggle_screen_sharing(
let Some(room) = call.room().cloned() else {
return;
};
- let toggle_screen_sharing = room.update(cx, |room, cx| {
+
+ room.update(cx, |room, cx| {
let clicked_on_currently_shared_screen =
room.shared_screen_id().is_some_and(|screen_id| {
Some(screen_id)
@@ -78,8 +79,7 @@ fn toggle_screen_sharing(
} else {
Task::ready(Ok(()))
}
- });
- toggle_screen_sharing
+ })
}
Err(e) => Task::ready(Err(e)),
};
@@ -78,7 +78,7 @@ impl RenderOnce for Facepile {
}
}
-pub const EXAMPLE_FACES: [&'static str; 6] = [
+pub const EXAMPLE_FACES: [&str; 6] = [
"https://avatars.githubusercontent.com/u/326587?s=60&v=4",
"https://avatars.githubusercontent.com/u/2280405?s=60&v=4",
"https://avatars.githubusercontent.com/u/1789?s=60&v=4",
@@ -616,7 +616,7 @@ impl SwitchField {
Self {
id: id.into(),
label: label.into(),
- description: description,
+ description,
toggle_state: toggle_state.into(),
on_click: Arc::new(on_click),
disabled: false,
@@ -175,7 +175,7 @@ impl Tooltip {
move |_, cx| {
let title = title.clone();
cx.new(|_| Self {
- title: title,
+ title,
meta: None,
key_binding: None,
})
@@ -201,10 +201,7 @@ impl Vim {
let right_kind = classifier.kind_with(right, ignore_punctuation);
let at_newline = (left == '\n') ^ (right == '\n');
- let found = (left_kind != right_kind && right_kind != CharKind::Whitespace)
- || at_newline;
-
- found
+ (left_kind != right_kind && right_kind != CharKind::Whitespace) || at_newline
})
}
Motion::NextWordEnd { ignore_punctuation } => {
@@ -213,10 +210,7 @@ impl Vim {
let right_kind = classifier.kind_with(right, ignore_punctuation);
let at_newline = (left == '\n') ^ (right == '\n');
- let found = (left_kind != right_kind && left_kind != CharKind::Whitespace)
- || at_newline;
-
- found
+ (left_kind != right_kind && left_kind != CharKind::Whitespace) || at_newline
})
}
Motion::PreviousWordStart { ignore_punctuation } => {
@@ -225,10 +219,7 @@ impl Vim {
let right_kind = classifier.kind_with(right, ignore_punctuation);
let at_newline = (left == '\n') ^ (right == '\n');
- let found = (left_kind != right_kind && left_kind != CharKind::Whitespace)
- || at_newline;
-
- found
+ (left_kind != right_kind && left_kind != CharKind::Whitespace) || at_newline
})
}
Motion::PreviousWordEnd { ignore_punctuation } => {
@@ -237,10 +228,7 @@ impl Vim {
let right_kind = classifier.kind_with(right, ignore_punctuation);
let at_newline = (left == '\n') ^ (right == '\n');
- let found = (left_kind != right_kind && right_kind != CharKind::Whitespace)
- || at_newline;
-
- found
+ (left_kind != right_kind && right_kind != CharKind::Whitespace) || at_newline
})
}
Motion::FindForward {
@@ -155,12 +155,11 @@ fn expand_changed_word_selection(
let classifier = map
.buffer_snapshot
.char_classifier_at(selection.start.to_point(map));
- let in_word = map
- .buffer_chars_at(selection.head().to_offset(map, Bias::Left))
+
+ map.buffer_chars_at(selection.head().to_offset(map, Bias::Left))
.next()
.map(|(c, _)| !classifier.is_whitespace(c))
- .unwrap_or_default();
- in_word
+ .unwrap_or_default()
};
if (times.is_none() || times.unwrap() == 1) && is_in_word() {
let next_char = map
@@ -255,16 +255,11 @@ impl MarksState {
pub fn new(workspace: &Workspace, cx: &mut App) -> Entity<MarksState> {
cx.new(|cx| {
let buffer_store = workspace.project().read(cx).buffer_store().clone();
- let subscription =
- cx.subscribe(
- &buffer_store,
- move |this: &mut Self, _, event, cx| match event {
- project::buffer_store::BufferStoreEvent::BufferAdded(buffer) => {
- this.on_buffer_loaded(buffer, cx);
- }
- _ => {}
- },
- );
+ let subscription = cx.subscribe(&buffer_store, move |this: &mut Self, _, event, cx| {
+ if let project::buffer_store::BufferStoreEvent::BufferAdded(buffer) = event {
+ this.on_buffer_loaded(buffer, cx);
+ }
+ });
let mut this = Self {
workspace: workspace.weak_handle(),
@@ -596,7 +591,7 @@ impl MarksState {
if let Some(anchors) = self.buffer_marks.get(&buffer_id) {
let text_anchors = anchors.get(name)?;
let anchors = text_anchors
- .into_iter()
+ .iter()
.map(|anchor| Anchor::in_buffer(excerpt_id, buffer_id, *anchor))
.collect();
return Some(Mark::Local(anchors));
@@ -1710,26 +1705,25 @@ impl VimDb {
marks: HashMap<String, Vec<Point>>,
) -> Result<()> {
log::debug!("Setting path {path:?} for {} marks", marks.len());
- let result = self
- .write(move |conn| {
- let mut query = conn.exec_bound(sql!(
- INSERT OR REPLACE INTO vim_marks
- (workspace_id, mark_name, path, value)
- VALUES
- (?, ?, ?, ?)
- ))?;
- for (mark_name, value) in marks {
- let pairs: Vec<(u32, u32)> = value
- .into_iter()
- .map(|point| (point.row, point.column))
- .collect();
- let serialized = serde_json::to_string(&pairs)?;
- query((workspace_id, mark_name, path.clone(), serialized))?;
- }
- Ok(())
- })
- .await;
- result
+
+ self.write(move |conn| {
+ let mut query = conn.exec_bound(sql!(
+ INSERT OR REPLACE INTO vim_marks
+ (workspace_id, mark_name, path, value)
+ VALUES
+ (?, ?, ?, ?)
+ ))?;
+ for (mark_name, value) in marks {
+ let pairs: Vec<(u32, u32)> = value
+ .into_iter()
+ .map(|point| (point.row, point.column))
+ .collect();
+ let serialized = serde_json::to_string(&pairs)?;
+ query((workspace_id, mark_name, path.clone(), serialized))?;
+ }
+ Ok(())
+ })
+ .await
}
fn get_marks(&self, workspace_id: WorkspaceId) -> Result<Vec<SerializedMark>> {
@@ -590,7 +590,7 @@ fn parse_state(marked_text: &str) -> (String, Vec<Range<Point>>) {
#[cfg(feature = "neovim")]
fn encode_ranges(text: &str, point_ranges: &Vec<Range<Point>>) -> String {
let byte_ranges = point_ranges
- .into_iter()
+ .iter()
.map(|range| {
let mut byte_range = 0..0;
let mut ix = 0;
@@ -50,7 +50,7 @@ impl State {
}
}
-pub const ZED_WEB_SEARCH_PROVIDER_ID: &'static str = "zed.dev";
+pub const ZED_WEB_SEARCH_PROVIDER_ID: &str = "zed.dev";
impl WebSearchProvider for CloudWebSearchProvider {
fn id(&self) -> WebSearchProviderId {
@@ -27,11 +27,10 @@ fn register_web_search_providers(
cx.subscribe(
&LanguageModelRegistry::global(cx),
- move |this, registry, event, cx| match event {
- language_model::Event::DefaultModelChanged => {
+ move |this, registry, event, cx| {
+ if let language_model::Event::DefaultModelChanged = event {
register_zed_web_search_provider(this, client.clone(), ®istry, cx)
}
- _ => {}
},
)
.detach();
@@ -33,13 +33,12 @@ impl SharedScreen {
cx: &mut Context<Self>,
) -> Self {
let my_sid = track.sid();
- cx.subscribe(&room, move |_, _, ev, cx| match ev {
- call::room::Event::RemoteVideoTrackUnsubscribed { sid } => {
- if sid == &my_sid {
- cx.emit(Event::Close)
- }
+ cx.subscribe(&room, move |_, _, ev, cx| {
+ if let call::room::Event::RemoteVideoTrackUnsubscribed { sid } = ev
+ && sid == &my_sid
+ {
+ cx.emit(Event::Close)
}
- _ => {}
})
.detach();
@@ -3283,7 +3283,8 @@ impl Workspace {
let task = self.load_path(project_path.clone(), window, cx);
window.spawn(cx, async move |cx| {
let (project_entry_id, build_item) = task.await?;
- let result = pane.update_in(cx, |pane, window, cx| {
+
+ pane.update_in(cx, |pane, window, cx| {
pane.open_item(
project_entry_id,
project_path,
@@ -3295,8 +3296,7 @@ impl Workspace {
cx,
build_item,
)
- });
- result
+ })
})
}
@@ -9150,13 +9150,12 @@ mod tests {
fn split_pane(cx: &mut VisualTestContext, workspace: &Entity<Workspace>) -> Entity<Pane> {
workspace.update_in(cx, |workspace, window, cx| {
- let new_pane = workspace.split_pane(
+ workspace.split_pane(
workspace.active_pane().clone(),
SplitDirection::Right,
window,
cx,
- );
- new_pane
+ )
})
}
@@ -9413,7 +9412,7 @@ mod tests {
let workspace = workspace.clone();
move |cx: &mut VisualTestContext| {
workspace.update_in(cx, |workspace, window, cx| {
- if let Some(_) = workspace.active_modal::<TestModal>(cx) {
+ if workspace.active_modal::<TestModal>(cx).is_some() {
workspace.toggle_modal(window, cx, TestModal::new);
workspace.toggle_modal(window, cx, TestModal::new);
} else {
@@ -80,12 +80,9 @@ fn files_not_created_on_launch(errors: HashMap<io::ErrorKind, Vec<&Path>>) {
#[cfg(unix)]
{
- match kind {
- io::ErrorKind::PermissionDenied => {
- error_kind_details.push_str("\n\nConsider using chown and chmod tools for altering the directories permissions if your user has corresponding rights.\
- \nFor example, `sudo chown $(whoami):staff ~/.config` and `chmod +uwrx ~/.config`");
- }
- _ => {}
+ if kind == io::ErrorKind::PermissionDenied {
+ error_kind_details.push_str("\n\nConsider using chown and chmod tools for altering the directories permissions if your user has corresponding rights.\
+ \nFor example, `sudo chown $(whoami):staff ~/.config` and `chmod +uwrx ~/.config`");
}
}
@@ -1620,13 +1620,12 @@ fn open_local_file(
.read_with(cx, |tree, _| tree.abs_path().join(settings_relative_path))?;
let fs = project.read_with(cx, |project, _| project.fs().clone())?;
- let file_exists = fs
- .metadata(&full_path)
+
+ fs.metadata(&full_path)
.await
.ok()
.flatten()
- .is_some_and(|metadata| !metadata.is_dir && !metadata.is_fifo);
- file_exists
+ .is_some_and(|metadata| !metadata.is_dir && !metadata.is_fifo)
};
if !file_exists {
@@ -60,8 +60,8 @@ pub fn init(client: Arc<Client>, user_store: Entity<UserStore>, cx: &mut App) {
cx.subscribe(&user_store, {
let editors = editors.clone();
let client = client.clone();
- move |user_store, event, cx| match event {
- client::user::Event::PrivateUserInfoUpdated => {
+ move |user_store, event, cx| {
+ if let client::user::Event::PrivateUserInfoUpdated = event {
assign_edit_prediction_providers(
&editors,
provider,
@@ -70,7 +70,6 @@ pub fn init(client: Arc<Client>, user_store: Entity<UserStore>, cx: &mut App) {
cx,
);
}
- _ => {}
}
})
.detach();
@@ -55,10 +55,10 @@ use workspace::Workspace;
use workspace::notifications::{ErrorMessagePrompt, NotificationId};
use worktree::Worktree;
-const CURSOR_MARKER: &'static str = "<|user_cursor_is_here|>";
-const START_OF_FILE_MARKER: &'static str = "<|start_of_file|>";
-const EDITABLE_REGION_START_MARKER: &'static str = "<|editable_region_start|>";
-const EDITABLE_REGION_END_MARKER: &'static str = "<|editable_region_end|>";
+const CURSOR_MARKER: &str = "<|user_cursor_is_here|>";
+const START_OF_FILE_MARKER: &str = "<|start_of_file|>";
+const EDITABLE_REGION_START_MARKER: &str = "<|editable_region_start|>";
+const EDITABLE_REGION_END_MARKER: &str = "<|editable_region_end|>";
const BUFFER_CHANGE_GROUPING_INTERVAL: Duration = Duration::from_secs(1);
const ZED_PREDICT_DATA_COLLECTION_CHOICE: &str = "zed_predict_data_collection_choice";
@@ -166,7 +166,7 @@ fn interpolate(
) -> Option<Vec<(Range<Anchor>, String)>> {
let mut edits = Vec::new();
- let mut model_edits = current_edits.into_iter().peekable();
+ let mut model_edits = current_edits.iter().peekable();
for user_edit in new_snapshot.edits_since::<usize>(&old_snapshot.version) {
while let Some((model_old_range, _)) = model_edits.peek() {
let model_old_range = model_old_range.to_offset(old_snapshot);
@@ -2123,7 +2123,7 @@ mod tests {
let completion = completion_task.await.unwrap().unwrap();
completion
.edits
- .into_iter()
+ .iter()
.map(|(old_range, new_text)| (old_range.to_point(&snapshot), new_text.clone()))
.collect::<Vec<_>>()
}
@@ -190,9 +190,8 @@ async fn get_context(
.await;
// Disable data collection for these requests, as this is currently just used for evals
- match gather_context_output.as_mut() {
- Ok(gather_context_output) => gather_context_output.body.can_collect_data = false,
- Err(_) => {}
+ if let Ok(gather_context_output) = gather_context_output.as_mut() {
+ gather_context_output.body.can_collect_data = false
}
gather_context_output
@@ -277,8 +276,8 @@ pub fn wait_for_lang_server(
let subscriptions = [
cx.subscribe(&lsp_store, {
let log_prefix = log_prefix.clone();
- move |_, event, _| match event {
- project::LspStoreEvent::LanguageServerUpdate {
+ move |_, event, _| {
+ if let project::LspStoreEvent::LanguageServerUpdate {
message:
client::proto::update_language_server::Variant::WorkProgress(
client::proto::LspWorkProgress {
@@ -287,8 +286,10 @@ pub fn wait_for_lang_server(
},
),
..
- } => println!("{}⟲ {message}", log_prefix),
- _ => {}
+ } = event
+ {
+ println!("{}⟲ {message}", log_prefix)
+ }
}
}),
cx.subscribe(project, {
@@ -4,7 +4,6 @@ use std::{
OnceLock, RwLock,
atomic::{AtomicU8, Ordering},
},
- usize,
};
use crate::{SCOPE_DEPTH_MAX, SCOPE_STRING_SEP_STR, Scope, ScopeAlloc, env_config, private};
@@ -152,7 +151,7 @@ fn scope_alloc_from_scope_str(scope_str: &str) -> Option<ScopeAlloc> {
if index == 0 {
return None;
}
- if let Some(_) = scope_iter.next() {
+ if scope_iter.next().is_some() {
crate::warn!(
"Invalid scope key, too many nested scopes: '{scope_str}'. Max depth is {SCOPE_DEPTH_MAX}",
);
@@ -204,12 +203,10 @@ impl ScopeMap {
.map(|(scope_str, level_filter)| (scope_str.as_str(), *level_filter))
});
- let new_filters = items_input_map
- .into_iter()
- .filter_map(|(scope_str, level_str)| {
- let level_filter = level_filter_from_str(level_str)?;
- Some((scope_str.as_str(), level_filter))
- });
+ let new_filters = items_input_map.iter().filter_map(|(scope_str, level_str)| {
+ let level_filter = level_filter_from_str(level_str)?;
+ Some((scope_str.as_str(), level_filter))
+ });
let all_filters = default_filters
.iter()
@@ -10,12 +10,9 @@ pub use sink::{flush, init_output_file, init_output_stderr, init_output_stdout};
pub const SCOPE_DEPTH_MAX: usize = 4;
pub fn init() {
- match try_init() {
- Err(err) => {
- log::error!("{err}");
- eprintln!("{err}");
- }
- Ok(()) => {}
+ if let Err(err) = try_init() {
+ log::error!("{err}");
+ eprintln!("{err}");
}
}
@@ -268,7 +265,7 @@ pub mod private {
pub type Scope = [&'static str; SCOPE_DEPTH_MAX];
pub type ScopeAlloc = [String; SCOPE_DEPTH_MAX];
-const SCOPE_STRING_SEP_STR: &'static str = ".";
+const SCOPE_STRING_SEP_STR: &str = ".";
const SCOPE_STRING_SEP_CHAR: char = '.';
#[derive(Clone, Copy, Debug, PartialEq, Eq)]