Patch 8.2.3219
Problem: :find searches non-existing directories.
Solution: Check the path is not "..". Update help. (Christian Brabandt,
closes #8612, closes #8533)
Files: runtime/doc/editing.txt, src/findfile.c,
src/testdir/test_findfile.vim
*** ../vim-8.2.3218/runtime/doc/editing.txt 2021-01-31 17:02:06.246490203
+0100
--- runtime/doc/editing.txt 2021-07-25 15:02:24.242119813 +0200
***************
*** 1749,1754 ****
--- 1752,1763 ----
/u/user_x/work/include
/u/user_x/include
+ < Note: If your 'path' setting includes an non-existing directory, Vim will
+ skip the non-existing directory, but continues searching in the parent of
+ the non-existing directory if upwards searching is used. E.g. when
+ searching "../include" and that doesn't exist, and upward searching is
+ used, also searches in "..".
+
3) Combined up/downward search:
If Vim's current path is /u/user_x/work/release and you do >
set path=**;/u/user_x
*** ../vim-8.2.3218/src/findfile.c 2021-06-06 14:14:35.348774346 +0200
--- src/findfile.c 2021-07-25 15:07:03.273462128 +0200
***************
*** 578,584 ****
--- 578,593 ----
if (p > search_ctx->ffsc_fix_path)
{
+ // do not add '..' to the path and start upwards searching
len = (int)(p - search_ctx->ffsc_fix_path) - 1;
+ if ((len >= 2
+ && STRNCMP(search_ctx->ffsc_fix_path, "..", 2) == 0)
+ && (len == 2
+ || search_ctx->ffsc_fix_path[2] == PATHSEP))
+ {
+ vim_free(buf);
+ goto error_return;
+ }
STRNCAT(ff_expand_buffer, search_ctx->ffsc_fix_path, len);
add_pathsep(ff_expand_buffer);
}
*** ../vim-8.2.3218/src/testdir/test_findfile.vim 2020-08-12
18:50:31.875655822 +0200
--- src/testdir/test_findfile.vim 2021-07-25 14:56:59.922845141 +0200
***************
*** 228,231 ****
--- 228,253 ----
call assert_fails('tabfind', 'E471:')
endfunc
+ func Test_find_non_existing_path()
+ new
+ let save_path = &path
+ let save_dir = getcwd()
+ call mkdir('dir1/dir2', 'p')
+ call writefile([], 'dir1/file.txt')
+ call writefile([], 'dir1/dir2/base.txt')
+ call chdir('dir1/dir2')
+ e base.txt
+ set path=../include
+
+ call assert_fails(':find file.txt', 'E345:')
+
+ call chdir(save_dir)
+ bw!
+ call delete('dir1/dir2/base.txt', 'rf')
+ call delete('dir1/dir2', 'rf')
+ call delete('dir1/file.txt', 'rf')
+ call delete('dir1', 'rf')
+ let &path = save_path
+ endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.3218/src/version.c 2021-07-25 14:36:01.569551193 +0200
--- src/version.c 2021-07-25 15:07:23.657412208 +0200
***************
*** 757,758 ****
--- 757,760 ----
{ /* Add new patch number below this line */
+ /**/
+ 3219,
/**/
--
hundred-and-one symptoms of being an internet addict:
234. You started college as a chemistry major, and walk out four years
later as an Internet provider.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/202107251308.16PD8vAv1072574%40masaka.moolenaar.net.