summaryrefslogtreecommitdiff
path: root/runtime/filetype.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-06-04 19:00:32 +0200
committerBram Moolenaar <Bram@vim.org>2017-06-04 19:00:32 +0200
commit3e54569b17683318e0cb6693ab0024c2ad1e3e8f (patch)
tree53920e6f30fd8390d9232bd7062959c802d6ba64 /runtime/filetype.vim
parentce876aaa9a250a5a0d0e34b3a2625e51cf9bf5bb (diff)
downloadvim-git-3e54569b17683318e0cb6693ab0024c2ad1e3e8f.tar.gz
patch 8.0.0613: the conf filetype is used before ftdetect from packagesv8.0.0613
Problem: The conf filetype detection is done before ftdetect scripts from packages that are added later. Solution: Add the FALLBACK argument to :setfiletype. (closes #1679, closes #1693)
Diffstat (limited to 'runtime/filetype.vim')
-rw-r--r--runtime/filetype.vim33
1 files changed, 26 insertions, 7 deletions
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 8758dd2f7..9878236b6 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2017 May 27
+" Last Change: 2017 Jun 04
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -1181,14 +1181,21 @@ au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md setf markdown
" Mason
au BufNewFile,BufRead *.mason,*.mhtml,*.comp setf mason
-" Matlab or Objective C
+" Mathematica, Matlab, Murphi or Objective C
au BufNewFile,BufRead *.m call s:FTm()
func! s:FTm()
let n = 1
- while n < 10
+ let saw_comment = 0 " Whether we've seen a multiline comment leader.
+ while n < 100
let line = getline(n)
- if line =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|/\*\|//\)'
+ if line =~ '^\s*/\*'
+ " /* ... */ is a comment in Objective C and Murphi, so we can't conclude
+ " it's either of them yet, but track this as a hint in case we don't see
+ " anything more definitive.
+ let saw_comment = 1
+ endif
+ if line =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|//\)'
setf objc
return
endif
@@ -1200,11 +1207,23 @@ func! s:FTm()
setf mma
return
endif
+ if line =~ '^\c\s*\(\(type\|var\)\>\|--\)'
+ setf murphi
+ return
+ endif
let n = n + 1
endwhile
- if exists("g:filetype_m")
+
+ if saw_comment
+ " We didn't see anything definitive, but this looks like either Objective C
+ " or Murphi based on the comment leader. Assume the former as it is more
+ " common.
+ setf objc
+ elseif exists("g:filetype_m")
+ " Use user specified default filetype for .m
exe "setf " . g:filetype_m
else
+ " Default is matlab
setf matlab
endif
endfunc
@@ -2777,12 +2796,12 @@ runtime! ftdetect/*.vim
" state.
augroup END
-" Generic configuration file (check this last, it's just guessing!)
+" Generic configuration file. Use FALLBACK, it's just guessing!
au filetypedetect BufNewFile,BufRead,StdinReadPost *
\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
\ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
\ || getline(4) =~ '^#' || getline(5) =~ '^#') |
- \ setf conf |
+ \ setf FALLBACK conf |
\ endif