0
0
mirror of https://github.com/vim/vim.git synced 2025-07-25 10:54:51 -04:00

updated for version 7.3.1297

Problem:    findfile() directory matching does not work when a star follows
            text. (Markus Braun)
Solution:   Make a wildcard work properly. (Christian Brabandt)
This commit is contained in:
Bram Moolenaar 2013-07-03 17:14:00 +02:00
parent 8968a31179
commit f4c5fcb3ad
4 changed files with 75 additions and 5 deletions

View File

@ -4679,8 +4679,58 @@ vim_findfile_init(path, filename, stopdirs, level, free_visited, find_what,
} }
STRCPY(ff_expand_buffer, search_ctx->ffsc_start_dir); STRCPY(ff_expand_buffer, search_ctx->ffsc_start_dir);
add_pathsep(ff_expand_buffer); add_pathsep(ff_expand_buffer);
STRCAT(ff_expand_buffer, search_ctx->ffsc_fix_path); {
add_pathsep(ff_expand_buffer); char_u *buf = alloc(STRLEN(ff_expand_buffer)
+ STRLEN(search_ctx->ffsc_fix_path));
STRCPY(buf, ff_expand_buffer);
STRCAT(buf, search_ctx->ffsc_fix_path);
if (mch_isdir(buf))
{
STRCAT(ff_expand_buffer, search_ctx->ffsc_fix_path);
add_pathsep(ff_expand_buffer);
}
#ifdef FEAT_PATH_EXTRA
else
{
char_u *p = vim_strrchr(search_ctx->ffsc_fix_path, PATHSEP);
char_u *wc_path = NUL;
char_u *temp = NUL;
int len = 0;
if (p != NULL)
{
len = p - search_ctx->ffsc_fix_path;
STRNCAT(ff_expand_buffer, search_ctx->ffsc_fix_path, len);
add_pathsep(ff_expand_buffer);
}
else
len = STRLEN(search_ctx->ffsc_fix_path);
if (search_ctx->ffsc_wc_path != NULL)
{
wc_path = vim_strsave(search_ctx->ffsc_wc_path);
temp = alloc(STRLEN(search_ctx->ffsc_wc_path)
+ (STRLEN(search_ctx->ffsc_fix_path) - len));
}
if (temp == NULL || wc_path == NULL)
{
vim_free(buf);
vim_free(temp);
vim_free(wc_path);
goto error_return;
}
STRCPY(temp, search_ctx->ffsc_fix_path + len);
STRCAT(temp, search_ctx->ffsc_wc_path);
vim_free(search_ctx->ffsc_wc_path);
vim_free(wc_path);
search_ctx->ffsc_wc_path = temp;
}
#endif
vim_free(buf);
}
sptr = ff_create_stack_element(ff_expand_buffer, sptr = ff_create_stack_element(ff_expand_buffer,
#ifdef FEAT_PATH_EXTRA #ifdef FEAT_PATH_EXTRA

View File

@ -1,6 +1,7 @@
Some tests for setting 'number' and 'relativenumber' - Some tests for setting 'number' and 'relativenumber'
This is not all that useful now that the options are no longer reset when This is not all that useful now that the options are no longer reset when
setting the other. setting the other.
- Some tests for findfile() function
STARTTEST STARTTEST
:so small.vim :so small.vim
@ -49,6 +50,17 @@ STARTTEST
:$put g :$put g
:$put h :$put h
:" :"
:let cwd=getcwd()
:cd ../..
:$put =''
:$put ='Testing findfile'
:$put =''
:$put =findfile('test19.in','src/test*')
:exe "cd" cwd
:cd ..
:$put =findfile('test19.in','test*')
:$put =findfile('test19.in','testdir')
:exe "cd" cwd
:/^results/,$w! test.out :/^results/,$w! test.out
:q! :q!
ENDTEST ENDTEST

View File

@ -20,3 +20,9 @@ results:
number number
relativenumber relativenumber
Testing findfile
src/testdir/test19.in
testdir/test19.in
testdir/test19.in

View File

@ -728,6 +728,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1297,
/**/ /**/
1296, 1296,
/**/ /**/