@@ -2258,6 +2258,30 @@ fn extern_custom_completion_short_flag(mut extern_completer: NuCompleter) {
22582258 match_suggestions ( & expected, & suggestions) ;
22592259}
22602260
2261+ /// When we're completing the flag name itself, not its value,
2262+ /// custom completions should not be used
2263+ #[ rstest]
2264+ fn custom_completion_flag_name_not_value ( mut extern_completer : NuCompleter ) {
2265+ let suggestions = extern_completer. complete ( "spam --f" , 8 ) ;
2266+ assert ! (
2267+ suggestions. iter( ) . any( |s| s. value == "--foo" ) ,
2268+ "Should contain --foo flag"
2269+ ) ;
2270+ let should_not_contain: Vec < _ > = vec ! [ "cat" , "dog" , "eel" ] ;
2271+ for item in should_not_contain {
2272+ assert ! (
2273+ !suggestions. iter( ) . any( |s| s. value == item) ,
2274+ "Should not contain custom completion {}" ,
2275+ item
2276+ ) ;
2277+ }
2278+
2279+ // Also test with partial short flag
2280+ let suggestions = extern_completer. complete ( "spam -f" , 7 ) ;
2281+ assert_eq ! ( 1 , suggestions. len( ) , "Should only have one suggestion" ) ;
2282+ assert_eq ! ( "-f" , suggestions[ 0 ] . value, "Should suggest -f flag" ) ;
2283+ }
2284+
22612285#[ rstest]
22622286fn extern_complete_flags ( mut extern_completer : NuCompleter ) {
22632287 let suggestions = extern_completer. complete ( "spam -" , 6 ) ;
0 commit comments