patch 9.1.1135: 'suffixesadd' doesn't work with multiple items
Problem: 'suffixesadd' doesn't work with multiple items
(after 9.1.1122).
Solution: Don't concat multiple suffixes together.
(zeertzjq)
fixes: #16694
closes: #16699
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/test_findfile.vim b/src/testdir/test_findfile.vim
index c974c40..a7c3dc2 100644
--- a/src/testdir/test_findfile.vim
+++ b/src/testdir/test_findfile.vim
@@ -222,6 +222,36 @@
call assert_fails('call finddir("x", repeat("x", 5000))', 'E854:')
endfunc
+func Test_findfile_with_suffixesadd()
+ let save_path = &path
+ let save_dir = getcwd()
+ set path=,,
+ call mkdir('Xfinddir1', 'pR')
+ cd Xfinddir1
+
+ call writefile([], 'foo.c', 'D')
+ call writefile([], 'bar.cpp', 'D')
+ call writefile([], 'baz.cc', 'D')
+ call writefile([], 'foo.o', 'D')
+ call writefile([], 'bar.o', 'D')
+ call writefile([], 'baz.o', 'D')
+
+ set suffixesadd=.c,.cpp
+ call assert_equal('foo.c', findfile('foo'))
+ call assert_equal('./foo.c', findfile('./foo'))
+ call assert_equal('bar.cpp', findfile('bar'))
+ call assert_equal('./bar.cpp', findfile('./bar'))
+ call assert_equal('', findfile('baz'))
+ call assert_equal('', findfile('./baz'))
+ set suffixesadd+=.cc
+ call assert_equal('baz.cc', findfile('baz'))
+ call assert_equal('./baz.cc', findfile('./baz'))
+
+ set suffixesadd&
+ call chdir(save_dir)
+ let &path = save_path
+endfunc
+
" Test for the :find, :sfind and :tabfind commands
func Test_find_cmd()
new
diff --git a/src/testdir/test_gf.vim b/src/testdir/test_gf.vim
index cc12b36..4dc01c9 100644
--- a/src/testdir/test_gf.vim
+++ b/src/testdir/test_gf.vim
@@ -353,4 +353,36 @@
%bw!
endfunc
+func Test_gf_with_suffixesadd()
+ let cwd = getcwd()
+ let dir = 'Xtestgf_sua_dir'
+ call mkdir(dir, 'R')
+ call chdir(dir)
+
+ call writefile([], 'foo.c', 'D')
+ call writefile([], 'bar.cpp', 'D')
+ call writefile([], 'baz.cc', 'D')
+ call writefile([], 'foo.o', 'D')
+ call writefile([], 'bar.o', 'D')
+ call writefile([], 'baz.o', 'D')
+
+ new
+ setlocal path=,, suffixesadd=.c,.cpp
+ call setline(1, ['./foo', './bar', './baz'])
+ exe "normal! gg\<C-W>f"
+ call assert_equal('foo.c', expand('%:t'))
+ close
+ exe "normal! 2gg\<C-W>f"
+ call assert_equal('bar.cpp', expand('%:t'))
+ close
+ call assert_fails('exe "normal! 3gg\<C-W>f"', 'E447:')
+ setlocal suffixesadd+=.cc
+ exe "normal! 3gg\<C-W>f"
+ call assert_equal('baz.cc', expand('%:t'))
+ close
+
+ %bwipe!
+ call chdir(cwd)
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab