Merge pull request #2431 from reidliu41/fix/attach-absolute-path-completion

fix(tui): suppress inline skill completions in slash command args
This commit is contained in:
Hunter Bown
2026-05-31 10:03:08 -07:00
committed by GitHub
2 changed files with 26 additions and 0 deletions
+4
View File
@@ -87,6 +87,10 @@ pub(crate) fn partial_inline_skill_mention_at_cursor(
input: &str, input: &str,
cursor_chars: usize, cursor_chars: usize,
) -> Option<(usize, String)> { ) -> Option<(usize, String)> {
if looks_like_slash_command_input(input) {
return None;
}
let chars: Vec<char> = input.chars().collect(); let chars: Vec<char> = input.chars().collect();
if cursor_chars > chars.len() { if cursor_chars > chars.len() {
return None; return None;
+22
View File
@@ -3536,6 +3536,28 @@ fn inline_skill_slash_popup_filters_partial_without_leaking_to_command_position(
); );
} }
#[test]
fn inline_skill_slash_popup_does_not_open_inside_command_arguments() {
let mut app = create_test_app();
app.cached_skills = vec![
(
"config-doctor".to_string(),
"Diagnose configuration".to_string(),
),
("cargo-ci-fixer".to_string(), "Fix CI failures".to_string()),
];
app.input = "/attach /".to_string();
app.cursor_position = app.input.chars().count();
let entries = visible_slash_menu_entries(&app, 128);
assert!(
entries.is_empty(),
"command argument paths should not show inline skill entries: {:?}",
entries.iter().map(|entry| &entry.name).collect::<Vec<_>>()
);
}
#[test] #[test]
fn apply_slash_menu_selection_splices_inline_skill_mention() { fn apply_slash_menu_selection_splices_inline_skill_mention() {
let mut app = create_test_app(); let mut app = create_test_app();