vim-patch:8.1.2125: fnamemodify() fails when repeating :e

Problem:    Fnamemodify() fails when repeating :e.
Solution:   Do not go before the tail. (Rob Pilling, closes vim/vim#5024)
b189295b72
This commit is contained in:
Justin M. Keyes 2019-10-10 22:13:23 -07:00
parent 5f60861f5a
commit 401398bc4b

View File

@ -45,3 +45,31 @@ func Test_fnamemodify()
let $HOME = save_home
let &shell = save_shell
endfunc
func Test_fnamemodify_er()
call assert_equal("with", fnamemodify("path/to/file.with.extensions", ':e:e:r:r'))
call assert_equal('c', fnamemodify('a.c', ':e'))
call assert_equal('c', fnamemodify('a.c', ':e:e'))
call assert_equal('c', fnamemodify('a.c', ':e:e:r'))
call assert_equal('c', fnamemodify('a.c', ':e:e:r:r'))
call assert_equal('rb', fnamemodify('a.spec.rb', ':e:r'))
call assert_equal('rb', fnamemodify('a.spec.rb', ':e:r'))
call assert_equal('spec.rb', fnamemodify('a.spec.rb', ':e:e'))
call assert_equal('spec', fnamemodify('a.spec.rb', ':e:e:r'))
call assert_equal('spec', fnamemodify('a.spec.rb', ':e:e:r:r'))
call assert_equal('spec', fnamemodify('a.b.spec.rb', ':e:e:r'))
call assert_equal('b.spec', fnamemodify('a.b.spec.rb', ':e:e:e:r'))
call assert_equal('b', fnamemodify('a.b.spec.rb', ':e:e:e:r:r'))
call assert_equal('spec', fnamemodify('a.b.spec.rb', ':r:e'))
call assert_equal('b', fnamemodify('a.b.spec.rb', ':r:r:e'))
call assert_equal('c', fnamemodify('a.b.c.d.e', ':r:r:e'))
call assert_equal('b.c', fnamemodify('a.b.c.d.e', ':r:r:e:e'))
" :e never includes the whole filename, so "a.b":e:e:e --> "b"
call assert_equal('b.c', fnamemodify('a.b.c.d.e', ':r:r:e:e:e'))
call assert_equal('b.c', fnamemodify('a.b.c.d.e', ':r:r:e:e:e:e'))
endfunc