vim-patch:9.0.0270: some values of 'path' and 'tags' invalid in the tiny version

Problem:    Some values of 'path' and 'tags' do not work in the tiny version.
Solution:   Graduate the +path_extra feature.
2bd9dbc19f
This commit is contained in:
zeertzjq
2022-08-26 06:44:42 +08:00
parent 4dd34989cd
commit 207fe4810e

View File

@@ -110,16 +110,15 @@ typedef struct ff_stack {
typedef struct ff_visited { typedef struct ff_visited {
struct ff_visited *ffv_next; struct ff_visited *ffv_next;
/* Visited directories are different if the wildcard string are // Visited directories are different if the wildcard string are
* different. So we have to save it. // different. So we have to save it.
*/
char_u *ffv_wc_path; char_u *ffv_wc_path;
// use FileID for comparison (needed because of links), else use filename. // use FileID for comparison (needed because of links), else use filename.
bool file_id_valid; bool file_id_valid;
FileID file_id; FileID file_id;
/* The memory for this struct is allocated according to the length of // The memory for this struct is allocated according to the length of
* ffv_fname. // ffv_fname.
*/
char_u ffv_fname[1]; // actually longer char_u ffv_fname[1]; // actually longer
} ff_visited_T; } ff_visited_T;
@@ -510,9 +509,7 @@ void *vim_findfile_init(char_u *path, char_u *filename, char_u *stopdirs, int le
xfree(buf); xfree(buf);
} }
sptr = ff_create_stack_element(ff_expand_buffer, sptr = ff_create_stack_element(ff_expand_buffer, search_ctx->ffsc_wc_path, level, 0);
search_ctx->ffsc_wc_path,
level, 0);
ff_push(search_ctx, sptr); ff_push(search_ctx, sptr);
search_ctx->ffsc_file_to_search = vim_strsave(filename); search_ctx->ffsc_file_to_search = vim_strsave(filename);
@@ -641,11 +638,8 @@ char_u *vim_findfile(void *search_ctx_arg)
* first time (hence stackp->ff_filearray == NULL) * first time (hence stackp->ff_filearray == NULL)
*/ */
if (stackp->ffs_filearray == NULL if (stackp->ffs_filearray == NULL
&& ff_check_visited(&search_ctx->ffsc_dir_visited_list && ff_check_visited(&search_ctx->ffsc_dir_visited_list->ffvl_visited_list,
->ffvl_visited_list, stackp->ffs_fix_path, stackp->ffs_wc_path) == FAIL) {
stackp->ffs_fix_path,
stackp->ffs_wc_path
) == FAIL) {
#ifdef FF_VERBOSE #ifdef FF_VERBOSE
if (p_verbose >= 5) { if (p_verbose >= 5) {
verbose_enter_scroll(); verbose_enter_scroll();
@@ -790,8 +784,7 @@ char_u *vim_findfile(void *search_ctx_arg)
stackp->ffs_filearray_cur = 0; stackp->ffs_filearray_cur = 0;
stackp->ffs_stage = 0; stackp->ffs_stage = 0;
} else { } else {
rest_of_wildcards = &stackp->ffs_wc_path[ rest_of_wildcards = &stackp->ffs_wc_path[STRLEN(stackp->ffs_wc_path)];
STRLEN(stackp->ffs_wc_path)];
} }
if (stackp->ffs_stage == 0) { if (stackp->ffs_stage == 0) {
@@ -833,23 +826,17 @@ char_u *vim_findfile(void *search_ctx_arg)
// if file exists and we didn't already find it // if file exists and we didn't already find it
if ((path_with_url((char *)file_path) if ((path_with_url((char *)file_path)
|| (os_path_exists(file_path) || (os_path_exists(file_path)
&& (search_ctx->ffsc_find_what && (search_ctx->ffsc_find_what == FINDFILE_BOTH
== FINDFILE_BOTH || ((search_ctx->ffsc_find_what == FINDFILE_DIR)
|| ((search_ctx->ffsc_find_what
== FINDFILE_DIR)
== os_isdir(file_path))))) == os_isdir(file_path)))))
#ifndef FF_VERBOSE #ifndef FF_VERBOSE
&& (ff_check_visited(&search_ctx->ffsc_visited_list->ffvl_visited_list, && (ff_check_visited(&search_ctx->ffsc_visited_list->ffvl_visited_list,
file_path, file_path, (char_u *)"") == OK)
(char_u *)""
) == OK)
#endif #endif
) { ) {
#ifdef FF_VERBOSE #ifdef FF_VERBOSE
if (ff_check_visited(&search_ctx->ffsc_visited_list->ffvl_visited_list, if (ff_check_visited(&search_ctx->ffsc_visited_list->ffvl_visited_list,
file_path, file_path, (char_u *)"") == FAIL) {
(char_u *)""
) == FAIL) {
if (p_verbose >= 5) { if (p_verbose >= 5) {
verbose_enter_scroll(); verbose_enter_scroll();
smsg("Already: %s", file_path); smsg("Already: %s", file_path);