mirror of
https://github.com/neovim/neovim.git
synced 2025-10-01 07:28:34 +00:00
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:

committed by
Justin M. Keyes

parent
2d9c7dd840
commit
667c1dc4de
@@ -1378,7 +1378,7 @@ find_file_in_path_option (
|
|||||||
/* copy file name into NameBuff, expanding environment variables */
|
/* copy file name into NameBuff, expanding environment variables */
|
||||||
save_char = ptr[len];
|
save_char = ptr[len];
|
||||||
ptr[len] = NUL;
|
ptr[len] = NUL;
|
||||||
expand_env(ptr, NameBuff, MAXPATHL);
|
expand_env_esc(ptr, NameBuff, MAXPATHL, false, true, NULL);
|
||||||
ptr[len] = save_char;
|
ptr[len] = save_char;
|
||||||
|
|
||||||
xfree(ff_file_to_find);
|
xfree(ff_file_to_find);
|
||||||
|
@@ -585,7 +585,7 @@ static int included_patches[] = {
|
|||||||
// 1111,
|
// 1111,
|
||||||
1110,
|
1110,
|
||||||
// 1109 NA
|
// 1109 NA
|
||||||
// 1108,
|
1108,
|
||||||
1107,
|
1107,
|
||||||
// 1106 NA
|
// 1106 NA
|
||||||
1105,
|
1105,
|
||||||
|
@@ -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)
|
|
65
test/functional/legacy/expand_spec.lua
Normal file
65
test/functional/legacy/expand_spec.lua
Normal 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)
|
Reference in New Issue
Block a user