diff src/testdir/test_expand.vim @ 17020:1841c03a9b5e v8.1.1510

patch 8.1.1510: a plugin cannot easily expand a command like done internally commit https://github.com/vim/vim/commit/80dad48c5095d30873a42ec82628bdb213125d8e Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jun 9 17:22:31 2019 +0200 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 https://github.com/vim/vim/issues/4514)
author Bram Moolenaar <Bram@vim.org>
date Sun, 09 Jun 2019 17:30:04 +0200
parents c62601adad69
children 73ddc462979d
line wrap: on
line diff
--- a/src/testdir/test_expand.vim
+++ b/src/testdir/test_expand.vim
@@ -47,3 +47,37 @@ func Test_expand_tilde_filename()
   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