diff runtime/filetype.vim @ 1648:58cad056e608 v7.2a.00

updated for version 7.2a-00
author vimboss
date Wed, 25 Jun 2008 20:13:35 +0000
parents a0c01df852e1
children 0b796e045c42
line wrap: on
line diff
--- 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:	2007 May 15
+" Last Change:	2008 Jun 20
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -320,6 +320,9 @@ au BufNewFile,BufRead *.cs			setf cs
 " Cdrdao TOC
 au BufNewFile,BufRead *.toc			setf cdrtoc
 
+" Cdrdao config
+au BufNewFile,BufRead etc/cdrdao.conf,etc/defaults/cdrdao,etc/default/cdrdao,~/.cdrdao						setf cdrdaoconf
+
 " Cfengine
 au BufNewFile,BufRead cfengine.conf		setf cfengine
 
@@ -349,12 +352,22 @@ else
   au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
 endif
 
-" .h files can be C, Ch or C++, set c_syntax_for_h if you want C,
-" ch_syntax_for_h if you want Ch.
-au BufNewFile,BufRead *.h
-	\ if exists("c_syntax_for_h") | setf c |
-	\ elseif exists("ch_syntax_for_h") | setf ch |
-	\ else | setf cpp | endif
+" .h files can be C, Ch C++, ObjC or ObjC++.
+" Set c_syntax_for_h if you want C, ch_syntax_for_h if you want Ch. ObjC is
+" detected automatically.
+au BufNewFile,BufRead *.h			call s:FTheader()
+
+func! s:FTheader()
+  if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1
+    setf objc
+  elseif exists("c_syntax_for_h")
+    setf c
+  elseif exists("ch_syntax_for_h")
+    setf ch
+  else
+    setf cpp
+  endif
+endfunc
 
 " Ch (CHscript)
 au BufNewFile,BufRead *.chf			setf ch
@@ -476,12 +489,18 @@ au BufNewFile,BufRead *.cpy
 	\   setf cobol |
 	\ endif
 
+" Coco/R
+au BufNewFile,BufRead *.atg			setf coco
+
 " Cold Fusion
 au BufNewFile,BufRead *.cfm,*.cfi,*.cfc		setf cf
 
 " Configure scripts
 au BufNewFile,BufRead configure.in,configure.ac setf config
 
+" CUDA  Cumpute Unified Device Architecture
+au BufNewFile,BufRead *.cu			setf cuda
+
 " WildPackets EtherPeek Decoder
 au BufNewFile,BufRead *.dcd			setf dcd
 
@@ -513,15 +532,31 @@ au BufNewFile,BufRead *.si			setf cuplsi
 
 " Debian Control
 au BufNewFile,BufRead */debian/control		setf debcontrol
+au BufNewFile,BufRead control
+	\  if getline(1) =~ '^Source:'
+	\|   setf debcontrol
+	\| endif
 
 " Debian Sources.list
 au BufNewFile,BufRead /etc/apt/sources.list	setf debsources
 
+" Deny hosts
+au BufNewFile,BufRead denyhosts.conf		setf denyhosts
+
 " ROCKLinux package description
 au BufNewFile,BufRead *.desc			setf desc
 
-" the D language
-au BufNewFile,BufRead *.d			setf d
+" the D language or dtrace
+au BufNewFile,BufRead *.d			call s:DtraceCheck()
+
+func! s:DtraceCheck()
+  let lines = getline(1, min([line("$"), 100]))
+  if match(lines, '^#!\S\+dtrace\|#pragma\s\+D\s\+option\|:\S\{-}:\S\{-}:') > -1
+    setf dtrace
+  else
+    setf d
+  endif
+endfunc
 
 " Desktop files
 au BufNewFile,BufRead *.desktop,.directory	setf desktop
@@ -597,8 +632,8 @@ func! s:FTe()
   setf eiffel
 endfunc
 
-" ERicsson LANGuage
-au BufNewFile,BufRead *.erl			setf erlang
+" ERicsson LANGuage; Yaws is erlang too
+au BufNewFile,BufRead *.erl,*.yaws		setf erlang
 
 " Elm Filter Rules file
 au BufNewFile,BufRead filter-rules		setf elmfilt
@@ -643,11 +678,14 @@ au BufNewFile,BufRead *.mas,*.master		se
 " Forth
 au BufNewFile,BufRead *.fs,*.ft			setf forth
 
+" Reva Forth
+au BufNewFile,BufRead *.frt			setf reva
+
 " Fortran
 if has("fname_case")
   au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95	 setf fortran
 endif
-au BufNewFile,BufRead   *.f,*.for,*.fpp,*.ftn,*.f77,*.f90,*.f95  setf fortran
+au BufNewFile,BufRead   *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95  setf fortran
 
 " FStab
 au BufNewFile,BufRead fstab,mtab		setf fstab
@@ -661,6 +699,19 @@ au BufNewFile,BufRead *.mo,*.gdmo		setf 
 " Gedcom
 au BufNewFile,BufRead *.ged			setf gedcom
 
+" Git
+autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG    setf gitcommit
+autocmd BufNewFile,BufRead *.git/config,.gitconfig setf gitconfig
+autocmd BufNewFile,BufRead git-rebase-todo         setf gitrebase
+autocmd BufNewFile,BufRead .msg.[0-9]*
+      \ if getline(1) =~ '^From.*# This line is ignored.$' |
+      \   setf gitsendemail |
+      \ endif
+autocmd BufNewFile,BufRead *.git/**
+      \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
+      \   setf git |
+      \ endif
+
 " Gkrellmrc
 au BufNewFile,BufRead gkrellmrc,gkrellmrc_?	setf gkrellmrc
 
@@ -701,6 +752,9 @@ au BufNewFile,BufRead *.hs			setf haskel
 au BufNewFile,BufRead *.lhs			setf lhaskell
 au BufNewFile,BufRead *.chs			setf chaskell
 
+" Haste
+au BufNewFile,BufRead *.ht			setf haste
+
 " Hercules
 au BufNewFile,BufRead *.vc,*.ev,*.rs,*.sum,*.errsum	setf hercules
 
@@ -739,6 +793,9 @@ au BufNewFile,BufRead *.html.m4			setf h
 " HTML Cheetah template
 au BufNewFile,BufRead *.tmpl			setf htmlcheetah
 
+" Host config
+au BufNewFile,BufRead /etc/host.conf		setf hostconf
+
 " Hyper Builder
 au BufNewFile,BufRead *.hb			setf hb
 
@@ -922,6 +979,9 @@ au BufNewFile,BufRead *.lou,*.lout		setf
 " Lua
 au BufNewFile,BufRead *.lua			setf lua
 
+" Linden Scripting Language (Second Life)
+au BufNewFile,BufRead *.lsl			setf lsl
+
 " Lynx style file (or LotusScript!)
 au BufNewFile,BufRead *.lss			setf lss
 
@@ -933,7 +993,7 @@ au BufNewFile,BufRead *.m4
 au BufNewFile,BufRead *.mgp			setf mgp
 
 " Mail (for Elm, trn, mutt, muttng, rn, slrn)
-au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]._-]\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
+au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
 
 " Mail aliases
 au BufNewFile,BufRead /etc/mail/aliases,/etc/aliases	setf mailaliases
@@ -987,6 +1047,9 @@ func! s:FTm()
   endif
 endfunc
 
+" Mathematica notebook
+au BufNewFile,BufRead *.nb			setf mma
+
 " Maya Extension Language
 au BufNewFile,BufRead *.mel			setf mel
 
@@ -1005,6 +1068,9 @@ au BufNewFile,BufRead *.mgl			setf mgl
 " MMIX or VMS makefile
 au BufNewFile,BufRead *.mms			call s:FTmms()
 
+" Symbian meta-makefile definition (MMP)
+au BufNewFile,BufRead *.mmp			setf mmp
+
 func! s:FTmms()
   let n = 1
   while n < 10
@@ -1075,8 +1141,7 @@ au BufRead,BufNewFile *.mu			setf mupad
 au BufNewFile,BufRead *.mush			setf mush
 
 " Mutt setup file (also for Muttng)
-au BufNewFile,BufRead Mutt{ng,}rc			setf muttrc
-au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
+au BufNewFile,BufRead Mutt{ng,}rc		setf muttrc
 
 " Nano
 au BufNewFile,BufRead /etc/nanorc,.nanorc	setf nanorc
@@ -1169,6 +1234,9 @@ au BufNewFile,BufRead *.pas			setf pasca
 " Delphi project file
 au BufNewFile,BufRead *.dpr			setf pascal
 
+" PDF
+au BufNewFile,BufRead *.pdf			setf pdf
+
 " Perl
 if has("fname_case")
   au BufNewFile,BufRead *.pl,*.PL		call s:FTpl()
@@ -1206,10 +1274,9 @@ au BufNewFile,BufRead *.pm
 au BufNewFile,BufRead *.pod			setf pod
 
 " Php, php3, php4, etc.
-au BufNewFile,BufRead *.php,*.php\d		setf php
-
-" Phtml
-au BufNewFile,BufRead *.phtml			setf phtml
+" Also Phtml (was used for PHP 2 in the past)
+" Also .ctp for Cake template file
+au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp	setf php
 
 " Pike
 au BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod setf pike
@@ -1377,6 +1444,9 @@ au BufNewFile,BufRead INDEX,INFO
 " Prolog
 au BufNewFile,BufRead *.pdb			setf prolog
 
+" Promela
+au BufNewFile,BufRead *.pml			setf promela
+
 " Protocols
 au BufNewFile,BufRead /etc/protocols		setf protocols
 
@@ -1406,7 +1476,7 @@ au BufNewFile,BufRead *.reg
 au BufNewFile,BufRead *.rib			setf rib
 
 " Rexx
-au BufNewFile,BufRead *.rexx,*.rex		setf rexx
+au BufNewFile,BufRead *.rexx,*.rex,*.jrexx,*.rxj,*.orx	setf rexx
 
 " R (Splus)
 if has("fname_case")
@@ -1437,7 +1507,7 @@ func! s:FTr()
 
   for n in range(1, max)
     " Rebol is easy to recognize, check for that first
-    if getline(n) =~ '\<REBOL\>'
+    if getline(n) =~? '\<REBOL\>'
       setf rebol
       return
     endif
@@ -1523,8 +1593,24 @@ au BufNewFile,BufRead *.siv			setf sieve
 " Sendmail
 au BufNewFile,BufRead sendmail.cf		setf sm
 
-" Sendmail .mc files are actually m4
-au BufNewFile,BufRead *.mc			setf m4
+" Sendmail .mc files are actually m4.  Could also be MS Message text file.
+au BufNewFile,BufRead *.mc			call s:McSetf()
+
+func! s:McSetf()
+  " Rely on the file to start with a comment.
+  " MS message text files use ';', Sendmail files use '#' or 'dnl'
+  for lnum in range(1, min([line("$"), 20]))
+    let line = getline(lnum)
+    if line =~ '^\s*\(#\|dnl\)'
+      setf m4  " Sendmail .mc file
+      return
+    elseif line =~ '^\s*;'
+      setf msmessages  " MS Message text file
+      return
+    endif
+  endfor
+  setf m4  " Default: Sendmail .mc file
+endfunc
 
 " Services
 au BufNewFile,BufRead /etc/services		setf services
@@ -1710,17 +1796,21 @@ au BufNewFile,BufRead *.rules			call s:F
 
 let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
 func! s:FTRules()
+  if expand('<amatch>:p') =~ '^/etc/udev/rules\.d/.*\.rules$'
+    setf udevrules
+    return
+  endif
   try
     let config_lines = readfile('/etc/udev/udev.conf')
   catch /^Vim\%((\a\+)\)\=:E484/
     setf hog
     return
   endtry
+  let dir = expand('<amatch>:p:h')
   for line in config_lines
     if line =~ s:ft_rules_udev_rules_pattern
       let udev_rules = substitute(line, s:ft_rules_udev_rules_pattern, '\1', "")
-      let amatch_dirname = substitute(expand('<amatch>'), '^\(.*\)/[^/]\+$', '\1', "")
-      if amatch_dirname == udev_rules
+      if dir == udev_rules
         setf udevrules
       endif
       break
@@ -1786,6 +1876,9 @@ au BufNewFile,BufRead *.stp			setf stp
 " Standard ML
 au BufNewFile,BufRead *.sml			setf sml
 
+" Sratus VOS command macro
+au BufNewFile,BufRead *.cm			setf voscm
+
 " Sysctl
 au BufNewFile,BufRead /etc/sysctl.conf		setf sysctl
 
@@ -1892,8 +1985,8 @@ func! s:FTtex()
   return
 endfunc
 
-" Context
-au BufNewFile,BufRead tex/context/*/*.tex	setf context
+" ConTeXt
+au BufNewFile,BufRead tex/context/*/*.tex,*.mkii,*.mkiv   setf context
 
 " Texinfo
 au BufNewFile,BufRead *.texinfo,*.texi,*.txi	setf texinfo
@@ -1928,9 +2021,6 @@ au BufNewFile,BufRead *.uit,*.uil		setf 
 " Udev conf
 au BufNewFile,BufRead /etc/udev/udev.conf	setf udevconf
 
-" Udev rules
-au BufNewFile,BufRead /etc/udev/rules.d/*.rules setf udevrules
-
 " Udev permissions
 au BufNewFile,BufRead /etc/udev/permissions.d/*.permissions setf udevperm
 "
@@ -2049,14 +2139,26 @@ au BufNewFile,BufRead *.msc,*.msf		setf 
 au BufNewFile,BufRead *.ms
 	\ if !s:FTnroff() | setf xmath | endif
 
-" XML
-au BufNewFile,BufRead *.xml
-	\ if getline(1) . getline(2) . getline(3) =~ '<!DOCTYPE.*DocBook' |
-	\   let b:docbk_type="xml" |
-	\   setf docbk |
-	\ else |
-	\   setf xml |
-	\ endif
+" XML  specific variants: docbk and xbl
+au BufNewFile,BufRead *.xml			call s:FTxml()
+
+func! s:FTxml()
+  let n = 1
+  while n < 100 && n < line("$")
+    let line = getline(n)
+    if line =~ '<!DOCTYPE.*DocBook'
+      let b:docbk_type = "xml"
+      setf docbk
+      return
+    endif
+    if line =~ 'xmlns:xbl="http://www.mozilla.org/xbl"'
+      setf xbl
+      return
+    endif
+    let n += 1
+  endwhile
+  setf xml
+endfunc
 
 " XMI (holding UML models) is also XML
 au BufNewFile,BufRead *.xmi			setf xml
@@ -2073,6 +2175,16 @@ au BufNewFile,BufRead *.tpm			setf xml
 " Xdg menus
 au BufNewFile,BufRead /etc/xdg/menus/*.menu	setf xml
 
+" ATI graphics driver configuration
+au BufNewFile,BufRead fglrxrc			setf xml
+
+" XLIFF (XML Localisation Interchange File Format) is also XML
+au BufNewFile,BufRead *.xlf			setf xml
+au BufNewFile,BufRead *.xliff			setf xml
+
+" X11 xmodmap (also see below)
+au BufNewFile,BufRead *Xmodmap			setf xmodmap
+
 " Xquery
 au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy	setf xquery
 
@@ -2201,13 +2313,17 @@ au BufNewFile,BufRead Kconfig.*			call s
 " Makefile
 au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')
 
+" Ruby Makefile
+au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')
+
+" Mail (also matches muttrc.vim, so this is below the other checks)
+au BufNewFile,BufRead mutt[[:alnum:]._-]\{6\}	setf mail
+
 " Modconf
 au BufNewFile,BufRead /etc/modprobe.*		call s:StarSetf('modconf')
 
-" Ruby Makefile
-au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')
-
 " Mutt setup file
+au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
 au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc*		call s:StarSetf('muttrc')
 
 " Nroff macros