vim-patch:7.4.1108 (#4872)

Problem:    Expanding "~" halfway a file name.
Solution:   Handle the file name as one name. (Marco Hinz)  Add a test.
            Closes vim/vim#564.

58adb14739
This commit is contained in:
James McCoy 2016-06-03 22:18:40 -05:00 committed by Justin M. Keyes
parent 2d9c7dd840
commit 667c1dc4de
4 changed files with 67 additions and 39 deletions

View File

@ -1378,7 +1378,7 @@ find_file_in_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;
xfree(ff_file_to_find);

View File

@ -585,7 +585,7 @@ static int included_patches[] = {
// 1111,
1110,
// 1109 NA
// 1108,
1108,
1107,
// 1106 NA
1105,

View File

@ -1,37 +0,0 @@
-- Test for expanding file names
local helpers = require('test.functional.helpers')
local clear, feed = helpers.clear, helpers.feed
local execute = helpers.execute
local curbuf_contents = helpers.curbuf_contents
local eq = helpers.eq
describe('expand file name', function()
setup(clear)
it('is working', function()
execute('!mkdir Xdir1')
execute('!mkdir Xdir2')
execute('!mkdir Xdir3')
execute('cd Xdir3')
execute('!mkdir Xdir4')
execute('cd ..')
execute('w Xdir1/file')
execute('w Xdir3/Xdir4/file')
execute('n Xdir?/*/file')
-- Yank current file path to @a register
feed('i<C-R>%<Esc>V"ad')
-- Put @a and current file path in the current buffer
execute('n! Xdir?/*/nofile')
feed('V"ap')
feed('o<C-R>%<Esc>')
eq("Xdir3/Xdir4/file\nXdir?/*/nofile", curbuf_contents())
end)
teardown(function()
os.execute('rm -rf Xdir1 Xdir2 Xdir3')
end)
end)

View File

@ -0,0 +1,65 @@
-- Test for expanding file names
local helpers = require('test.functional.helpers')
local eq = helpers.eq
local call = helpers.call
local nvim = helpers.meths
local clear = helpers.clear
local source = helpers.source
local function expected_empty()
eq({}, nvim.get_vvar('errors'))
end
describe('expand file name', function()
before_each(function()
clear()
source([[
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
]])
end)
it('works with directories', function()
call('Test_with_directories')
expected_empty()
end)
it('works with tilde', function()
call('Test_with_tilde')
expected_empty()
end)
end)