0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

Fix a few problems for :find completion. Test much more. (Nazri Ramliy)

This commit is contained in:
Bram Moolenaar 2010-08-05 21:40:16 +02:00
parent 74cbdf0334
commit 84f888a5b3
5 changed files with 102 additions and 13 deletions

View File

@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.3e. Last change: 2010 Aug 04 *todo.txt* For Vim version 7.3e. Last change: 2010 Aug 05
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -33,8 +33,6 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
Before release 7.3: Before release 7.3:
- Rename vim73 branch to default (hints: Xavier de Gaye, 2010 May 23) - Rename vim73 branch to default (hints: Xavier de Gaye, 2010 May 23)
test73 doesn't work on MS-Windows.
Better Czech keymap. (Stepnem, 2010 May 4) Use if no response from Jiri Better Czech keymap. (Stepnem, 2010 May 4) Use if no response from Jiri
Tobisek. Tobisek.
@ -54,6 +52,8 @@ Should readfile() ignore BOM when not in binary mode?
Bug: searching for tags file uses 'suffixesadd', should not happen. (Dominique Bug: searching for tags file uses 'suffixesadd', should not happen. (Dominique
Pelle, 2010 June 28) Pelle, 2010 June 28)
Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5)
When directory "/tmp/tags" contains "tags1" and "tags2", setting 'tags' to When directory "/tmp/tags" contains "tags1" and "tags2", setting 'tags' to
"/tmp/tags/*" doesn't pick up these files. (Simon Ruggier, 2010 Mar 17) "/tmp/tags/*" doesn't pick up these files. (Simon Ruggier, 2010 Mar 17)
@ -257,6 +257,8 @@ There should be a way after an abbreviation has expanded to go back to what
was typed. CTRL-G h ? Would also undo last word or line break inserted was typed. CTRL-G h ? Would also undo last word or line break inserted
perhaps. And undo CTRL-W. CTRL-G l would redo. perhaps. And undo CTRL-W. CTRL-G l would redo.
Diff mode out of sync. (Gary Johnson, 2010 Aug 4)
Win32: A --remote command that has a directory name starting with a ( doesn't Win32: A --remote command that has a directory name starting with a ( doesn't
work, the backslash is removed, assuming that it escapes the (. (Valery work, the backslash is removed, assuming that it escapes the (. (Valery
Kondakoff, 2009 May 13) Kondakoff, 2009 May 13)

View File

@ -5045,15 +5045,16 @@ globpath(path, file, expand_options)
{ {
/* Copy one item of the path to buf[] and concatenate the file name. */ /* Copy one item of the path to buf[] and concatenate the file name. */
copy_option_part(&path, buf, MAXPATHL, ","); copy_option_part(&path, buf, MAXPATHL, ",");
if (path_with_url(buf))
continue;
/*
* FIXME: should we proactively skip 'path' with limiter (/usr/ **N)
* and upward search (;) notations, just like we did with url above?
*/
if (STRLEN(buf) + STRLEN(file) + 2 < MAXPATHL) if (STRLEN(buf) + STRLEN(file) + 2 < MAXPATHL)
{ {
# ifdef WIN3264
/* Using the platform's path separator (\) makes vim incorrectly
* treat it as an escape character, use '/' instead. */
if (*buf != NUL && !after_pathsep(buf, buf + STRLEN(buf)))
STRCAT(buf, "/");
# else
add_pathsep(buf); add_pathsep(buf);
# endif
STRCAT(buf, file); STRCAT(buf, file);
if (ExpandFromContext(&xpc, buf, &num_p, &p, if (ExpandFromContext(&xpc, buf, &num_p, &p,
WILD_SILENT|expand_options) != FAIL && num_p > 0) WILD_SILENT|expand_options) != FAIL && num_p > 0)

View File

@ -9337,6 +9337,8 @@ expand_path_option(curdir, gap)
} }
else if (buf[0] == NUL) /* relative to current directory */ else if (buf[0] == NUL) /* relative to current directory */
STRCPY(buf, curdir); STRCPY(buf, curdir);
else if (path_with_url(buf))
continue;
else if (!mch_isFullName(buf)) else if (!mch_isFullName(buf))
{ {
/* Expand relative path to their full path equivalent */ /* Expand relative path to their full path equivalent */

View File

@ -1,23 +1,99 @@
Tests for find completion. Tests for find completion.
STARTTEST STARTTEST
:" Do all test in a separate window to avoid E211 when we recursively
:" delete the Xfind directory during cleanup
:"
:" This will cause a few errors, do it silently.
:set visualbell
:"
:function! DeleteDirectory(dir)
: if has("win16") || has("win32") || has("win64")
: exec "silent !rmdir /Q /S " . a:dir
: else
: exec "silent !rm -rf " . a:dir
: endif
:endfun
:" On windows a stale "Xfind" directory may exist, remove it so that
:" we start from a clean state.
:call DeleteDirectory("Xfind")
:set nocp
:new
:let cwd=getcwd()
:!mkdir Xfind :!mkdir Xfind
:!mkdir Xfind/in :cd Xfind
:!mkdir Xfind/in/path :set path=
:find
:w! ../test.out
:close
:new
:set path=.
:find
:w >>../test.out
:close
:new
:set path=.,,
:find
:w >>../test.out
:close
:new
:set path=./**
:find
:w >>../test.out
:close
:new
:" We shouldn't find any file at this point, ../test.out must be empty.
:!mkdir in
:cd in
:!mkdir path
:exec "cd " . cwd
:e Xfind/file.txt :e Xfind/file.txt
SHoly Grail:w SHoly Grail:w
:e Xfind/in/file.txt :e Xfind/in/file.txt
SJimmy Hoffa:w SJimmy Hoffa:w
:e Xfind/in/stuff.txt
SAnother Holy Grail:w
:e Xfind/in/path/file.txt :e Xfind/in/path/file.txt
SE.T.:w SE.T.:w
:set path=Xfind/** :set path=Xfind/**
:set nocp
:find file :find file
:w! test.out :w >> test.out
:find file :find file
:w >>test.out :w >>test.out
:find file :find file
:w >>test.out :w >>test.out
:" Rerun the previous three find completions, using fullpath in 'path'
:exec "set path=" . cwd . "/Xfind/**"
:find file
:w >> test.out
:find file
:w >>test.out
:find file
:w >>test.out
:" Same steps again, using relative and fullpath items that point to the same
:" recursive location.
:" This is to test that there are no duplicates in the completion list.
:exec "set path+=Xfind/**"
:find file
:w >> test.out
:find file
:w >>test.out
:find file
:w >>test.out
:find file
:" Test find completion for directory of current buffer, which at this point
:" is Xfind/in/file.txt.
:set path=.
:find st
:w >> test.out
:" Test find completion for empty path item ",," which is the current directory
:cd Xfind
:set path=,,
:find f
:w >> ../test.out
:cd ..
:q
:call DeleteDirectory("Xfind")
:qa! :qa!
ENDTEST ENDTEST

View File

@ -1,3 +1,11 @@
Holy Grail Holy Grail
Jimmy Hoffa Jimmy Hoffa
E.T. E.T.
Holy Grail
Jimmy Hoffa
E.T.
Holy Grail
Jimmy Hoffa
E.T.
Another Holy Grail
Holy Grail