@@ -374,7 +374,7 @@ func Test_findexpr()
374374
375375 " Expression returning a string
376376 set findexpr= ' abc'
377- call assert_fails (' find Xfindexpr1.c' , ' E1514: findexpr did not return a List type' )
377+ call assert_fails (' find Xfindexpr1.c' , " E1514: ' findexpr' did not return a List type" )
378378
379379 set findexpr&
380380 delfunc! FindExpr1
@@ -454,29 +454,52 @@ endfunc
454454
455455" Test for expanding the argument to the :find command using 'findexpr'
456456func Test_findexpr_expand_arg ()
457- func FindExpr1 ()
458- let fnames = [' Xfindexpr1.c' , ' Xfindexpr2.c' , ' Xfindexpr3.c' ]
459- return fnames- >copy ()- >filter (' v:val =~? v:fname' )
457+ let s: fnames = [' Xfindexpr1.c' , ' Xfindexpr2.c' , ' Xfindexpr3.c' ]
458+
459+ " 'findexpr' that accepts a regular expression
460+ func FindExprRegexp ()
461+ return s: fnames- >copy ()- >filter (' v:val =~? v:fname' )
460462 endfunc
461- set findexpr= FindExpr1 ()
462463
463- call feedkeys (" :find \<Tab>\<C-B> \" \<CR> " , " xt" )
464- call assert_equal (' "find Xfindexpr1.c' , @: )
464+ " 'findexpr' that accepts a glob
465+ func FindExprGlob ()
466+ let pat = glob2regpat (v: cmdcomplete ? $ ' *{v:fname}*' : v: fname )
467+ return s: fnames- >copy ()- >filter (' v:val =~? pat' )
468+ endfunc
469+
470+ for regexp in [v: true , v: false ]
471+ let &findexpr = regexp ? ' FindExprRegexp()' : ' FindExprGlob()'
472+
473+ call feedkeys (" :find \<Tab>\<C-B> \" \<CR> " , " xt" )
474+ call assert_equal (' "find Xfindexpr1.c' , @: )
475+
476+ call feedkeys (" :find Xfind\<Tab>\<Tab>\<C-B> \" \<CR> " , " xt" )
477+ call assert_equal (' "find Xfindexpr2.c' , @: )
465478
466- call feedkeys ( " : find Xfind \<Tab>\<Tab>\<C-B> \" \<CR> " , " xt " )
467- call assert_equal (' " find Xfindexpr2.c ' , @: )
479+ call assert_equal ( s: fnames , getcompletion ( ' find ' , ' cmdline ' ) )
480+ call assert_equal (s: fnames , getcompletion ( ' find Xfind ' , ' cmdline ' ) )
468481
469- call feedkeys (" :find *3*\<Tab>\<C-B> \" \<CR> " , " xt" )
470- call assert_equal (' "find Xfindexpr3.c' , @: )
482+ let pat = regexp ? ' X.*1\.c' : ' X*1.c'
483+ call feedkeys ($ " :find {pat}\<Tab>\<C-B> \" \<CR> " , " xt" )
484+ call assert_equal (' "find Xfindexpr1.c' , @: )
485+ call assert_equal ([' Xfindexpr1.c' ], getcompletion ($ ' find {pat}' , ' cmdline' ))
471486
472- call feedkeys (" :find Xfind\<C-A>\<C-B> \" \<CR> " , " xt" )
473- call assert_equal (' "find Xfindexpr1.c Xfindexpr2.c Xfindexpr3.c' , @: )
487+ call feedkeys (" :find 3\<Tab>\<C-B> \" \<CR> " , " xt" )
488+ call assert_equal (' "find Xfindexpr3.c' , @: )
489+ call assert_equal ([' Xfindexpr3.c' ], getcompletion ($ ' find 3' , ' cmdline' ))
474490
475- call feedkeys (" :find abc\<Tab>\<C-B> \" \<CR> " , " xt" )
476- call assert_equal (' "find abc' , @: )
491+ call feedkeys (" :find Xfind\<C-A>\<C-B> \" \<CR> " , " xt" )
492+ call assert_equal (' "find Xfindexpr1.c Xfindexpr2.c Xfindexpr3.c' , @: )
493+
494+ call feedkeys (" :find abc\<Tab>\<C-B> \" \<CR> " , " xt" )
495+ call assert_equal (' "find abc' , @: )
496+ call assert_equal ([], getcompletion (' find abc' , ' cmdline' ))
497+ endfor
477498
478499 set findexpr&
479- delfunc! FindExpr1
500+ delfunc! FindExprRegexp
501+ delfunc! FindExprGlob
502+ unlet s: fnames
480503endfunc
481504
482505" vim: shiftwidth = 2 sts = 2 expandtab
0 commit comments