fix(tui): hint mention depth cap on misses

This commit is contained in:
cyq
2026-06-02 02:02:40 +08:00
committed by Hunter Bown
parent c81d1c272f
commit a976758245
2 changed files with 33 additions and 1 deletions
+14 -1
View File
@@ -270,7 +270,10 @@ pub fn try_autocomplete_file_mention(app: &mut App) -> bool {
let ws = workspace_for_app(app);
let candidates = find_file_mention_completions(&ws, &partial, FILE_MENTION_COMPLETION_LIMIT);
if candidates.is_empty() {
app.status_message = Some(format!("No files match @{partial}"));
app.status_message = Some(no_file_mention_matches_status(
&partial,
app.mention_walk_depth,
));
return true;
}
if candidates.len() == 1 {
@@ -297,6 +300,16 @@ pub fn try_autocomplete_file_mention(app: &mut App) -> bool {
true
}
fn no_file_mention_matches_status(partial: &str, walk_depth: usize) -> String {
if walk_depth > 0 && (partial.contains('/') || partial.contains('\\')) {
format!(
"No files match @{partial} (mention_walk_depth={walk_depth}; use /config set mention_walk_depth 0 to search deeper)"
)
} else {
format!("No files match @{partial}")
}
}
/// Splice a completion into the input, replacing the `@<partial>` token at
/// `byte_start` with `@<replacement>`. Cursor moves to the end of the new
/// token so further keystrokes extend (or escape via space) naturally.
+19
View File
@@ -4729,6 +4729,25 @@ fn try_autocomplete_file_mention_no_match_reports_status() {
);
}
#[test]
fn try_autocomplete_file_mention_no_match_mentions_depth_cap_for_path_like_partial() {
let tmpdir = TempDir::new().expect("tempdir");
let mut app = create_test_app();
app.workspace = tmpdir.path().to_path_buf();
app.mention_walk_depth = 6;
app.input = "@a/b/c/d/e/f/g/target".to_string();
app.cursor_position = app.input.chars().count();
assert!(try_autocomplete_file_mention(&mut app));
assert_eq!(
app.status_message.as_deref(),
Some(
"No files match @a/b/c/d/e/f/g/target (mention_walk_depth=6; use /config set mention_walk_depth 0 to search deeper)"
)
);
}
#[test]
fn try_autocomplete_file_mention_returns_false_outside_mention() {
let mut app = create_test_app();