mirror of
https://github.com/neovim/neovim.git
synced 2026-01-04 02:17:09 +10:00
vim-patch:9.1.1186: filetype: help files in git repos are not detected
Problem: filetype: help files in git repos are not detected
Solution: detect */doc/*.txt files as help if they end with a help
modeline, even if 'modeline' is off
Here's how I checked that this would still detect vim's own help files
correctly:
$ find . -type f -path '*/doc/*.txt' \
> -exec awk '{ } ENDFILE { print FILENAME ":" $0; }' '{}' + |
> grep -v 'vim:.*\<\(ft\|filetype\)=help\>'
./src/libvterm/doc/seqs.txt: 23 DECSM 42 = DECNRCM, national/multinational character
closes: vim/vim#16817
16d6fff98e
Split the pattern into a Lua pattern for the first part and a Vim regex
pattern for the second part, so that if the first part doesn't match
there is no need to use the Vim regex.
Co-authored-by: David Mandelberg <david@mandelberg.org>
This commit is contained in:
@@ -2415,7 +2415,13 @@ local pattern = {
|
||||
['/boot/grub/menu%.lst$'] = 'grub',
|
||||
-- gtkrc* and .gtkrc*
|
||||
['^%.?gtkrc'] = starsetf('gtkrc'),
|
||||
['^${VIMRUNTIME}/doc/.*%.txt$'] = 'help',
|
||||
['/doc/.*%.txt$'] = function(_, bufnr)
|
||||
local line = M._getline(bufnr, -1)
|
||||
local ml = line:find('vim:')
|
||||
if ml and M._matchregex(line:sub(ml), [[\<\(ft\|filetype\)=help\>]]) then
|
||||
return 'help'
|
||||
end
|
||||
end,
|
||||
['^hg%-editor%-.*%.txt$'] = 'hgcommit',
|
||||
['%.html%.m4$'] = 'htmlm4',
|
||||
['^JAM.*%.'] = starsetf('jam'),
|
||||
|
||||
@@ -916,8 +916,6 @@ func s:GetFilenameChecks() abort
|
||||
\ '.zcompdump', '.zlogin', '.zlogout', '.zshenv', '.zshrc', '.zsh_history',
|
||||
\ '.zcompdump-file', '.zlog', '.zlog-file', '.zsh', '.zsh-file',
|
||||
\ 'any/etc/zprofile', 'zlog', 'zlog-file', 'zsh', 'zsh-file'],
|
||||
\
|
||||
\ 'help': [$VIMRUNTIME .. '/doc/help.txt'],
|
||||
\ }
|
||||
endfunc
|
||||
|
||||
@@ -1620,6 +1618,23 @@ func Test_haredoc_file()
|
||||
filetype off
|
||||
endfunc
|
||||
|
||||
func Test_help_file()
|
||||
filetype on
|
||||
call assert_true(mkdir('doc', 'pR'))
|
||||
|
||||
call writefile(['some text', 'vim:ft=help:'], 'doc/help.txt', 'D')
|
||||
split doc/help.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!
|
||||
|
||||
filetype off
|
||||
endfunc
|
||||
|
||||
func Test_hook_file()
|
||||
filetype on
|
||||
|
||||
|
||||
Reference in New Issue
Block a user