mirror of
https://github.com/neovim/neovim.git
synced 2026-07-11 20:09:44 +00:00
vim-patch:8.1.1510: a plugin cannot easily expand a command like done internally
Problem: A plugin cannot easily expand a command like done internally.
Solution: Add the expandcmd() function. (Yegappan Lakshmanan, closes vim/vim#4514)
80dad48c50
This commit is contained in:
@@ -70,6 +70,40 @@ describe('expand file name', function()
|
||||
call assert_match('\~', expand('%:p'))
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_expandcmd()
|
||||
let $FOO = 'Test'
|
||||
call assert_equal('e x/Test/y', expandcmd('e x/$FOO/y'))
|
||||
unlet $FOO
|
||||
|
||||
new
|
||||
edit Xfile1
|
||||
call assert_equal('e Xfile1', expandcmd('e %'))
|
||||
edit Xfile2
|
||||
edit Xfile1
|
||||
call assert_equal('e Xfile2', expandcmd('e #'))
|
||||
edit Xfile2
|
||||
edit Xfile3
|
||||
edit Xfile4
|
||||
let bnum = bufnr('Xfile2')
|
||||
call assert_equal('e Xfile2', expandcmd('e #' . bnum))
|
||||
call setline('.', 'Vim!@#')
|
||||
call assert_equal('e Vim', expandcmd('e <cword>'))
|
||||
call assert_equal('e Vim!@#', expandcmd('e <cWORD>'))
|
||||
enew!
|
||||
edit Xfile.java
|
||||
call assert_equal('e Xfile.py', expandcmd('e %:r.py'))
|
||||
call assert_equal('make abc.java', expandcmd('make abc.%:e'))
|
||||
call assert_equal('make Xabc.java', expandcmd('make %:s?file?abc?'))
|
||||
edit a1a2a3.rb
|
||||
call assert_equal('make b1b2b3.rb a1a2a3 Xfile.o', expandcmd('make %:gs?a?b? %< #<.o'))
|
||||
|
||||
call assert_fails('call expandcmd("make <afile>")', 'E495:')
|
||||
call assert_fails('call expandcmd("make <afile>")', 'E495:')
|
||||
enew
|
||||
call assert_fails('call expandcmd("make %")', 'E499:')
|
||||
close
|
||||
endfunc
|
||||
]])
|
||||
end)
|
||||
|
||||
@@ -87,4 +121,9 @@ describe('expand file name', function()
|
||||
call('Test_expand_tilde_filename')
|
||||
expected_empty()
|
||||
end)
|
||||
|
||||
it('works with expandcmd()', function()
|
||||
call('Test_expandcmd')
|
||||
expected_empty()
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user