@@ -1469,19 +1469,26 @@ impl AcpThreadView {
tool_call: &ToolCall,
cx: &Context<Self>,
) -> Div {
- let tool_icon = Icon::new(match tool_call.kind {
- acp::ToolKind::Read => IconName::ToolRead,
- acp::ToolKind::Edit => IconName::ToolPencil,
- acp::ToolKind::Delete => IconName::ToolDeleteFile,
- acp::ToolKind::Move => IconName::ArrowRightLeft,
- acp::ToolKind::Search => IconName::ToolSearch,
- acp::ToolKind::Execute => IconName::ToolTerminal,
- acp::ToolKind::Think => IconName::ToolThink,
- acp::ToolKind::Fetch => IconName::ToolWeb,
- acp::ToolKind::Other => IconName::ToolHammer,
- })
- .size(IconSize::Small)
- .color(Color::Muted);
+ let tool_icon =
+ if tool_call.kind == acp::ToolKind::Edit && tool_call.locations.len() == 1 {
+ FileIcons::get_icon(&tool_call.locations[0].path, cx)
+ .map(Icon::from_path)
+ .unwrap_or(Icon::new(IconName::ToolPencil))
+ } else {
+ Icon::new(match tool_call.kind {
+ acp::ToolKind::Read => IconName::ToolRead,
+ acp::ToolKind::Edit => IconName::ToolPencil,
+ acp::ToolKind::Delete => IconName::ToolDeleteFile,
+ acp::ToolKind::Move => IconName::ArrowRightLeft,
+ acp::ToolKind::Search => IconName::ToolSearch,
+ acp::ToolKind::Execute => IconName::ToolTerminal,
+ acp::ToolKind::Think => IconName::ToolThink,
+ acp::ToolKind::Fetch => IconName::ToolWeb,
+ acp::ToolKind::Other => IconName::ToolHammer,
+ })
+ }
+ .size(IconSize::Small)
+ .color(Color::Muted);
let base_container = h_flex().size_4().justify_center();