assistant find-replace: Fall back to replace_with_flexible_indent (#27795)

Agus Zubiaga created

Release Notes:

- N/A

Change summary

crates/assistant_tools/src/find_replace_file_tool.rs | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

Detailed changes

crates/assistant_tools/src/find_replace_file_tool.rs 🔗

@@ -1,4 +1,4 @@
-use crate::schema::json_schema_for;
+use crate::{replace::replace_with_flexible_indent, schema::json_schema_for};
 use anyhow::{anyhow, Context as _, Result};
 use assistant_tool::{ActionLog, Tool};
 use gpui::{App, AppContext, Entity, Task};
@@ -188,7 +188,11 @@ impl Tool for FindReplaceFileTool {
 
             let result = cx
                 .background_spawn(async move {
-                    replace_exact(&input.find, &input.replace, &snapshot).await
+                    // Try to match exactly
+                    replace_exact(&input.find, &input.replace, &snapshot)
+                    .await
+                    // If that fails, try being flexible about indentation
+                    .or_else(|| replace_with_flexible_indent(&input.find, &input.replace, &snapshot))
                 })
                 .await;