mirror of
https://github.com/neovim/neovim.git
synced 2026-05-23 21:30:11 +00:00
vim-patch:9.2.0489: filetype: some Objective-C files are not recognized
Problem: filetype: some Objective-C files are not recognized
Solution: Add g:filetype_mm override variable, improve the objective c
pattern detection (Keith Smiley).
closes: vim/vim#20221
bc7f736a39
Co-authored-by: Keith Smiley <keithbsmiley@gmail.com>
This commit is contained in:
@@ -158,6 +158,7 @@ variables can be used to overrule the filetype used for certain extensions:
|
||||
`*.int` g:filetype_int
|
||||
`*.lsl` g:filetype_lsl
|
||||
`*.m` g:filetype_m |ft-mathematica-syntax|
|
||||
`*.mm` g:filetype_mm
|
||||
`*.mac` g:filetype_mac
|
||||
`*[mM]makefile,*.mk,*.mak,[mM]akefile*`
|
||||
g:make_flavor |ft-make-syntax|
|
||||
|
||||
@@ -1258,8 +1258,12 @@ end
|
||||
|
||||
--- @type vim.filetype.mapfn
|
||||
function M.mm(_, bufnr)
|
||||
if vim.g.filetype_mm then
|
||||
return vim.g.filetype_mm
|
||||
end
|
||||
|
||||
for _, line in ipairs(getlines(bufnr, 1, 20)) do
|
||||
if matchregex(line, [[\c^\s*\(#\s*\(include\|import\)\>\|@import\>\|/\*\)]]) then
|
||||
if matchregex(line, [[\c^\s*\(//\|#\s*\(include\|import\)\>\|@import\>\|/\*\)]]) then
|
||||
return 'objcpp'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2054,6 +2054,37 @@ func Test_m4_file()
|
||||
endtry
|
||||
endfunc
|
||||
|
||||
func Test_mm_file()
|
||||
filetype on
|
||||
|
||||
call writefile(['#import "test.h"'], 'Xfile.mm', 'D')
|
||||
split Xfile.mm
|
||||
call assert_equal('objcpp', &filetype)
|
||||
bwipe!
|
||||
|
||||
call writefile(['// Objective-C++ line comment'], 'Xfile.mm', 'D')
|
||||
split Xfile.mm
|
||||
call assert_equal('objcpp', &filetype)
|
||||
bwipe!
|
||||
|
||||
call writefile(['.TH VIM 1 "YYYY Mth DD"'], 'Xfile.mm', 'D')
|
||||
split Xfile.mm
|
||||
call assert_equal('nroff', &filetype)
|
||||
bwipe!
|
||||
|
||||
try
|
||||
let g:filetype_mm = 'objcpp'
|
||||
call writefile(['.TH VIM 1 "YYYY Mth DD"'], 'Xfile_override.mm', 'D')
|
||||
split Xfile_override.mm
|
||||
call assert_equal('objcpp', &filetype)
|
||||
bwipe!
|
||||
finally
|
||||
unlet! g:filetype_mm
|
||||
endtry
|
||||
|
||||
filetype off
|
||||
endfunc
|
||||
|
||||
func Test_mod_file()
|
||||
filetype on
|
||||
|
||||
|
||||
Reference in New Issue
Block a user