patch 9.1.1194: filetype: false positive help filetype detection
Problem: filetype: false positive help filetype detection
Solution: Only detect a file as help if modeline appears either at start
of line or is preceded by whitespace (zeertzjq).
closes: #16845
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 0ee875c..77ca3a3 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: The Vim Project <https://github.com/vim/vim>
-" Last Change: 2025 Mar 08
+" Last Change: 2025 Mar 10
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" Listen very carefully, I will say this only once
@@ -53,7 +53,7 @@
" Vim help file, set ft explicitly, because 'modeline' might be off
au BufNewFile,BufRead */doc/*.txt
- \ if getline('$') =~ 'vim:.*\<\(ft\|filetype\)=help\>'
+ \ if getline('$') =~ '\(^\|\s\)vim:.*\<\(ft\|filetype\)=help\>'
\| setf help
\| endif
diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim
index ae69a04..84a4864 100644
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -1634,11 +1634,22 @@
call assert_equal('help', &filetype)
bwipe!
+ call writefile(['some text', 'Copyright: |manual-copyright| vim:ft=help:'],
+ \ 'doc/help1.txt', 'D')
+ split doc/help1.txt
+ call assert_equal('help', &filetype)
+ bwipe!
+
call writefile(['some text'], 'doc/nothelp.txt', 'D')
split doc/nothelp.txt
call assert_notequal('help', &filetype)
bwipe!
+ call writefile(['some text', '`vim:ft=help`'], 'doc/nothelp1.txt', 'D')
+ split doc/nothelp1.txt
+ call assert_notequal('help', &filetype)
+ bwipe!
+
filetype off
set modeline&
endfunc
diff --git a/src/version.c b/src/version.c
index bc21b03..3375888 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1194,
+/**/
1193,
/**/
1192,