vim-patch:8.2.3679: objc file detected as Octave (#16446)

Problem:    objc file detected as Octave. (Antony Lee)
Solution:   Detect objc by preprocessor lines. (Doug Kearns, closes vim/vim#9223,
            closes vim/vim#9220)
7329cfab36
This commit is contained in:
Christian Clason 2021-11-26 17:34:45 +01:00 committed by GitHub
parent 7ded880227
commit afbf89dc01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 1 deletions

View File

@ -272,6 +272,8 @@ func dist#ft#FTm()
" excluding end(for|function|if|switch|while) common to Murphi
let octave_block_terminators = '\<end\%(_try_catch\|classdef\|enumeration\|events\|methods\|parfor\|properties\)\>'
let objc_preprocessor = '^\s*#\s*\%(import\|include\|define\|if\|ifn\=def\|undef\|line\|error\|pragma\)\>'
let n = 1
let saw_comment = 0 " Whether we've seen a multiline comment leader.
while n < 100
@ -282,7 +284,7 @@ func dist#ft#FTm()
" anything more definitive.
let saw_comment = 1
endif
if line =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|//\)'
if line =~ '^\s*//' || line =~ '^\s*@import\>' || line =~ objc_preprocessor
setf objc
return
endif

View File

@ -866,6 +866,16 @@ func Test_m_file()
call assert_equal('objc', &filetype)
bwipe!
call writefile(['#include <header.h>'], 'Xfile.m')
split Xfile.m
call assert_equal('objc', &filetype)
bwipe!
call writefile(['#define FORTY_TWO'], 'Xfile.m')
split Xfile.m
call assert_equal('objc', &filetype)
bwipe!
" Octave
call writefile(['# Octave line comment'], 'Xfile.m')