From 58adb14739fa240ca6020cede9ab1f1cb07bd90a Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 16 Jan 2016 21:50:51 +0100 Subject: patch 7.4.1108 Problem: Expanding "~" halfway a file name. Solution: Handle the file name as one name. (Marco Hinz) Add a test. Closes #564. --- src/Makefile | 5 ++++- src/misc2.c | 2 +- src/testdir/test27.in | 20 -------------------- src/testdir/test27.ok | 2 -- src/testdir/test_alot.vim | 1 + src/testdir/test_expand.vim | 36 ++++++++++++++++++++++++++++++++++++ src/version.c | 2 ++ 7 files changed, 44 insertions(+), 24 deletions(-) delete mode 100644 src/testdir/test27.in delete mode 100644 src/testdir/test27.ok create mode 100644 src/testdir/test_expand.vim diff --git a/src/Makefile b/src/Makefile index 42c86f30b5..4977d7cb27 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1975,12 +1975,15 @@ test1 \ test70 test71 test72 test73 test74 test75 test76 test77 test78 test79 \ test80 test81 test82 test83 test84 test85 test86 test87 test88 test89 \ test90 test91 test92 test93 test94 test95 test96 test97 test98 test99 \ - test100 test101 test102 test103 test104 test105 test106 test107: + test100 test101 test102 test103 test104 test105 test106 test107 test108: cd testdir; rm -f $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE) test_assert \ test_backspace_opt \ test_cdo \ + test_cursor_func \ + test_delete \ + test_expand \ test_hardcopy \ test_increment \ test_lispwords \ diff --git a/src/misc2.c b/src/misc2.c index 0ee57fc4a6..4e9e47357e 100644 --- a/src/misc2.c +++ b/src/misc2.c @@ -5543,7 +5543,7 @@ find_file_in_path_option(ptr, len, options, first, path_option, /* copy file name into NameBuff, expanding environment variables */ save_char = ptr[len]; ptr[len] = NUL; - expand_env(ptr, NameBuff, MAXPATHL); + expand_env_esc(ptr, NameBuff, MAXPATHL, FALSE, TRUE, NULL); ptr[len] = save_char; vim_free(ff_file_to_find); diff --git a/src/testdir/test27.in b/src/testdir/test27.in deleted file mode 100644 index 2df16d9eff..0000000000 --- a/src/testdir/test27.in +++ /dev/null @@ -1,20 +0,0 @@ -Test for expanding file names - -STARTTEST -:!mkdir Xdir1 -:!mkdir Xdir2 -:!mkdir Xdir3 -:cd Xdir3 -:!mkdir Xdir4 -:cd .. -:w Xdir1/file -:w Xdir3/Xdir4/file -:n Xdir?/*/file -Go%:.w! test.out -:n! Xdir?/*/nofile -Go%:.w >>test.out -:e! xx -:!rm -rf Xdir1 Xdir2 Xdir3 -:qa! -ENDTEST - diff --git a/src/testdir/test27.ok b/src/testdir/test27.ok deleted file mode 100644 index c35f2438a9..0000000000 --- a/src/testdir/test27.ok +++ /dev/null @@ -1,2 +0,0 @@ -Xdir3/Xdir4/file -Xdir?/*/nofile diff --git a/src/testdir/test_alot.vim b/src/testdir/test_alot.vim index 3cd1f824ee..e89afb49ad 100644 --- a/src/testdir/test_alot.vim +++ b/src/testdir/test_alot.vim @@ -4,6 +4,7 @@ source test_backspace_opt.vim source test_cursor_func.vim source test_delete.vim +source test_expand.vim source test_lispwords.vim source test_menu.vim source test_searchpos.vim diff --git a/src/testdir/test_expand.vim b/src/testdir/test_expand.vim new file mode 100644 index 0000000000..fd999db1b7 --- /dev/null +++ b/src/testdir/test_expand.vim @@ -0,0 +1,36 @@ +" Test for expanding file names + +func Test_with_directories() + call mkdir('Xdir1') + call mkdir('Xdir2') + call mkdir('Xdir3') + cd Xdir3 + call mkdir('Xdir4') + cd .. + + split Xdir1/file + call setline(1, ['a', 'b']) + w + w Xdir3/Xdir4/file + close + + next Xdir?/*/file + call assert_equal('Xdir3/Xdir4/file', expand('%')) + next! Xdir?/*/nofile + call assert_equal('Xdir?/*/nofile', expand('%')) + + call delete('Xdir1', 'rf') + call delete('Xdir2', 'rf') + call delete('Xdir3', 'rf') +endfunc + +func Test_with_tilde() + let dir = getcwd() + call mkdir('Xdir ~ dir') + call assert_true(isdirectory('Xdir ~ dir')) + cd Xdir\ ~\ dir + call assert_true(getcwd() =~ 'Xdir \~ dir') + exe 'cd ' . fnameescape(dir) + call delete('Xdir ~ dir', 'd') + call assert_false(isdirectory('Xdir ~ dir')) +endfunc diff --git a/src/version.c b/src/version.c index 9c24efd0df..1a61df43a0 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1108, /**/ 1107, /**/ -- cgit v1.2.3