patch 9.0.1643: filetype detection fails if file name ends in many '~'
Problem: Filetype detection fails if file name ends in many '~'.
Solution: Strip multiple '~' at the same time. (closes #12553)
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index c93ce5e..9daf5a3 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -21,7 +21,7 @@
\ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r"))
au BufNewFile,BufRead *~
\ let s:name = expand("<afile>") |
- \ let s:short = substitute(s:name, '\~$', '', '') |
+ \ let s:short = substitute(s:name, '\~\+$', '', '') |
\ if s:name != s:short && s:short != "" |
\ exe "doau filetypedetect BufRead " . fnameescape(s:short) |
\ endif |
diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim
index 41b9106..9c1b11d 100644
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -1,5 +1,16 @@
" Test :setfiletype
+func Test_backup_strip()
+ filetype on
+ let fname = 'Xdetect.js~~~~~~~~~~~'
+ call writefile(['one', 'two', 'three'], fname, 'D')
+ exe 'edit ' .. fname
+ call assert_equal('javascript', &filetype)
+
+ bwipe!
+ filetype off
+endfunc
+
func Test_detection()
filetype on
augroup filetypedetect
diff --git a/src/version.c b/src/version.c
index 1d29427..c5aa47a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1643,
+/**/
1642,
/**/
1641,