Gracefully handle models searching for empty glob (#27370)
Sometimes we've seen models provide an empty string for the path search glob. This assumes they meant "*" when that happens. Separately, this also removes an unnecessary `clone` of a `String`. Release Notes: - N/A
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
use language::{BufferSnapshot, Diff, Point, ToOffset};
|
||||
use project::search::SearchQuery;
|
||||
use std::iter;
|
||||
use util::{paths::PathMatcher, ResultExt as _};
|
||||
|
||||
/// Performs an exact string replacement in a buffer, requiring precise character-for-character matching.
|
||||
@@ -11,8 +12,8 @@ pub async fn replace_exact(old: &str, new: &str, snapshot: &BufferSnapshot) -> O
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
PathMatcher::new(&[]).ok()?,
|
||||
PathMatcher::new(&[]).ok()?,
|
||||
PathMatcher::new(iter::empty::<&str>()).ok()?,
|
||||
PathMatcher::new(iter::empty::<&str>()).ok()?,
|
||||
None,
|
||||
)
|
||||
.log_err()?;
|
||||
|
||||
@@ -71,7 +71,11 @@ impl Tool for PathSearchTool {
|
||||
Ok(input) => (input.offset.unwrap_or(0), input.glob),
|
||||
Err(err) => return Task::ready(Err(anyhow!(err))),
|
||||
};
|
||||
let path_matcher = match PathMatcher::new(&[glob.clone()]) {
|
||||
|
||||
let path_matcher = match PathMatcher::new([
|
||||
// Sometimes models try to search for "". In this case, return all paths in the project.
|
||||
if glob.is_empty() { "*" } else { &glob },
|
||||
]) {
|
||||
Ok(matcher) => matcher,
|
||||
Err(err) => return Task::ready(Err(anyhow!("Invalid glob: {err}"))),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user