1 " Vim support file to detect file types
3 " Maintainer: Bram Moolenaar <Bram@vim.org>
4 " Last change: 2001 May 29
6 if !exists("did_load_filetypes")
7 let did_load_filetypes = 1
9 " Line continuation is used here, remove 'C' from 'cpoptions'
10 let ft_cpo_save = &cpo
16 au BufNewFile,BufRead *.orig,*.bak,*.old,*.new exe "doau filetype BufRead " . expand("<afile>:r")
17 au BufNewFile,BufRead *~ exe "doau filetype BufRead " . substitute(expand("<afile>"), '\~$', '', '')
21 au BufNewFile,BufRead *.inp call FTCheck_inp()
24 if getline(1) =~ '^\*'
34 if getline(n) =~? "^header surface data"
44 au BufNewFile,BufRead *.abc set ft=abc
47 au BufNewFile,BufRead *.abl set ft=abel
50 au BufNewFile,BufRead *.wrm set ft=acedb
53 au BufNewFile,BufRead *.adb,*.ads set ft=ada
56 au BufNewFile,BufRead *.tdf set ft=ahdl
58 " Apache style config file
59 au BufNewFile,BufRead proftpd.conf* set ft=apachestyle
62 au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,.htaccess,apache.conf* set ft=apache
65 au BufNewFile,BufRead *.am set ft=elf
68 au BufNewFile,BufRead *.aml set ft=aml
71 au BufNewFile,BufRead *.asn,*.asn1 set ft=asn
73 " Active Server Pages (with Visual Basic Script)
74 au BufNewFile,BufRead *.asa set ft=aspvbs
76 " Active Server Pages (with Perl or Visual Basic Script)
77 au BufNewFile,BufRead *.asp if getline(1) . getline(2) . getline(3) =~? "perlscript" | set ft=aspperl | else | set ft=aspvbs | endif
79 " Assembly (all kinds)
80 " *.lst is not pure assembly, it has two extra columns (address, byte codes)
81 au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call FTCheck_asm()
83 " This function checks for the kind of assembly that is wanted by the user, or
84 " can be detected from the first five lines of the file.
86 " make sure b:asmsyntax exists
87 if !exists("b:asmsyntax")
92 call FTCheck_asmsyntax()
95 " if b:asmsyntax still isn't set, default to asmsyntax or GNU
97 if exists("g:asmsyntax")
98 let b:asmsyntax = g:asmsyntax
100 let b:asmsyntax = "asm"
104 exe "set ft=" . b:asmsyntax
107 fun! FTCheck_asmsyntax()
108 " see if file contains any asmsyntax=foo overrides. If so, change
109 " b:asmsyntax appropriately
110 let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4).
112 if head =~ '\sasmsyntax=\S\+\s'
113 let b:asmsyntax = substitute(head, '.*\sasmsyntax=\(\S\+\)\s.*','\1', "")
118 au BufNewFile,BufRead *.atl,*.as set ft=atlas
121 au BufNewFile,BufRead [mM]akefile.am set ft=automake
124 au BufNewFile,BufRead *.ave set ft=ave
127 au BufNewFile,BufRead *.awk set ft=awk
130 au BufNewFile,BufRead *.mch,*.ref,*.imp set ft=b
132 " BASIC or Visual Basic
133 au BufNewFile,BufRead *.bas call FTCheck_VB("basic")
135 " Check if one of the first five lines contains "VB_Name". In that case it is
136 " probably a Visual Basic file. Otherwise it's assumed to be "alt" filetype.
138 if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'VB_Name'
141 exe "set ft=" . a:alt
145 " Batch file for MSDOS (*.cmd is close enough)
146 au BufNewFile,BufRead *.bat,*.sys,*.cmd set ft=dosbatch|set nobin|set ff=dos
148 " Batch file for 4DOS
149 au BufNewFile,BufRead *.btm set ft=btm
152 au BufNewFile,BufRead *.bc set ft=bc
154 " BibTeX bibliography database file
155 au BufNewFile,BufRead *.bib set ft=bib
158 au BufNewFile,BufRead named.conf set ft=named
161 au BufNewFile,BufRead /var/named/*,named.root set ft=bindzone
164 au BufNewFile,BufRead *.bl set ft=blank
167 au BufNewFile,BufRead *.c set ft=c
170 "au BufNewFile,BufRead *.cs set ft=cs
173 au BufNewFile,BufRead *.cyn set ft=cynpp
176 " .cc and .cpp files can be C++ or Cynlib.
177 au BufNewFile,BufRead *.cc if exists("cynlib_syntax_for_cc")|set ft=cynlib|else|set ft=cpp|endif
178 au BufNewFile,BufRead *.cpp if exists("cynlib_syntax_for_cpp")|set ft=cynlib|else|set ft=cpp|endif
182 au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.tcc,*.inl set ft=cpp
184 au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.tcc,*.inl set ft=cpp
187 " .h files can be C or C++, set c_syntax_for_h if you want C
188 au BufNewFile,BufRead *.h if exists("c_syntax_for_h")|set ft=c|else|set ft=cpp|endif
190 " Cascading Style Sheets
191 au BufNewFile,BufRead *.css set ft=css
193 " Century Term Command Scripts (*.cmd too)
194 au BufNewFile,BufRead *.con set ft=cterm
197 au BufNewFile,BufRead changelog.Debian set ft=debchangelog
198 au BufNewFile,BufRead [cC]hange[lL]og if getline(1) =~ '; urgency='
199 \| set ft=debchangelog | else | set ft=changelog | endif
202 au BufNewFile,BufRead *..ch set ft=ch
204 " Changes for WEB and CWEB or CHILL
205 au BufNewFile,BufRead *.ch call FTCheck_change()
207 " This function checks if one of the first ten lines start with a '@'. In
208 " that case it is probably a change file, otherwise CHILL is assumed.
209 fun! FTCheck_change()
212 if getline(lnum)[0] == '@'
222 au BufNewFile,BufRead *.dcl,*.icl set ft=clean
224 " Clever (also: *.ent)
225 au BufNewFile,BufRead *.eni set ft=cl
228 au BufNewFile,BufRead *.ent call FTCheck_ent()
231 " This function checks for valid cl syntax in the first five lines.
232 " Look for either an opening comment, '#', or a block start, '{".
233 " If not found, assume SGML.
236 let line = getline(lnum)
237 if line =~ '^\s*[#{]'
240 elseif line !~ '^\s*$'
241 " Not a blank line, not a comment, and not a block start,
242 " so doesn't look like valid cl code.
251 au BufNewFile,BufRead *.prg set ft=clipper
254 au BufNewFile,BufRead *.cbl,*.cob,*.cpy,*.lib set ft=cobol
257 au BufNewFile,BufRead *.cfm,*.cfi set ft=cf
260 au BufNewFile,BufRead configure.in,configure.ac set ft=config
263 au BufNewFile,BufRead *.cfg set ft=cfg
265 " Communicating Sequential Processes
266 au BufNewFile,BufRead *.csp,*.fdr set ft=csp
268 " CUPL logic description and simulation
269 au BufNewFile,BufRead *.pld set ft=cupl
270 au BufNewFile,BufRead *.si set ft=cuplsim
273 au BufNewFile,BufRead */debian/control set ft=debcontrol
276 au BufNewFile,BufRead *.diff,*.rej set ft=diff
278 " Diva (with Skill) or InstallShield
279 au BufNewFile,BufRead *.rul if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield'|set ft=ishd|else|set ft=diva|endif
281 " DCL (Digital Command Language - vms) or DNS zone file
282 au BufNewFile,BufRead *.com
283 \ if getline(1) =~ '\($ORIGIN\|$TTL\|IN\s*SOA\)'
284 \ || getline(2) =~ '\($ORIGIN\|$TTL\|IN\s*SOA\)'
285 \ || getline(1).getline(2).getline(3).getline(4) =~ 'BIND.*named'
286 \ | set ft=dns | else | set ft=dcl | endif
289 au BufNewFile,BufRead *.lid set ft=dylanlid
291 " Dylan - intr files (melange)
292 au BufNewFile,BufRead *.intr set ft=dylanintr
295 au BufNewFile,BufRead *.dylan set ft=dylan
297 " Microsoft Module Definition
298 au BufNewFile,BufRead *.def set ft=def
301 au BufNewFile,BufRead drac.*,*.drac,*.drc,*lvs,*lpe set ft=dracula
303 " DTD (Document Type Definition for XML)
304 au BufNewFile,BufRead *.dtd set ft=dtd
306 " Embedix Component Description
307 au BufNewFile,BufRead *.ecd set ft=ecd
310 au BufNewFile,BufRead *.e,*.E set ft=eiffel
313 au BufNewFile,BufRead *.erl set ft=erlang
315 " Elm Filter Rules file
316 au BufNewFile,BufRead filter-rules set ft=elmfilt
319 au BufNewFile,BufRead *.ec,*.EC set ft=esqlc
322 au BufNewFile,BufRead *.csc set ft=csc
325 au BufNewFile,BufRead *.exp set ft=expect
328 au BufNewFile,BufRead exports set ft=exports
331 au BufNewFile,BufRead *.fex,*.focexec set ft=focexec
334 au BufNewFile,BufRead *.mas,*.master set ft=master
337 au BufNewFile,BufRead *.fs,*.ft set ft=forth
340 au BufNewFile,BufRead *.f,*.F,*.for,*.fpp,*.ftn,*.f77,*.f90,*.f95 set ft=fortran
343 au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
344 \ let b:fvwm_version = 1 | set ft=fvwm
345 au BufNewFile,BufRead *fvwm2rc*
346 \ let b:fvwm_version = 2 | set ft=fvwm
349 au BufNewFile,BufRead .gdbinit set ft=gdb
352 au BufNewFile,BufRead *.mo,*.gdmo set ft=gdmo
355 au BufNewFile,BufRead *.ged set ft=gedcom
357 " GP scripts (2.0 and onward)
358 au BufNewFile,BufRead *.gp set ft=gp
361 au BufNewFile,BufRead *.gsp set ft=gsp
364 au BufNewFile,BufRead *.gpi set ft=gnuplot
367 au BufNewFile,BufRead .gtkrc,gtkrc set ft=gtkrc
370 au BufNewFile,BufRead *.hs set ft=haskell
371 au BufNewFile,BufRead *.lhs set ft=lhaskell
374 au BufNewFile,BufRead *.vc,*.ev,*.rs,*.sum,*.errsum set ft=hercules
377 au BufNewFile,BufRead *.hex,*.h32 set ft=hex
379 " HTML (.shtml for server side)
380 au BufNewFile,BufRead *.html,*.htm,*.shtml set ft=html
383 au BufNewFile,BufRead *.html.m4 set ft=htmlm4
386 au BufNewFile,BufRead *.hb set ft=hb
389 au BufNewFile,BufRead *.icn set ft=icon
391 " IDL (Interface Description Language)
392 au BufNewFile,BufRead *.idl set ft=idl
394 " IDL (Interactive Data Language)
395 au BufNewFile,BufRead *.pro set ft=idlang
398 au BufNewFile,BufRead *.inf,*.INF set ft=inform
400 " Informix 4GL (source - canonical, include file, I4GL+M4 preproc.)
401 au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl set ft=fgl
403 " .INI file for MSDOS
404 au BufNewFile,BufRead *.ini set ft=dosini
407 au BufNewFile,BufRead inittab set ft=inittab
410 au BufNewFile,BufRead *.iss set ft=iss
413 au! BufNewFile,BufRead *.jpl,*.jpr,Prl*.*,JAM*.* set ft=jam
416 au BufNewFile,BufRead *.java,*.jav set ft=java
419 au BufNewFile,BufRead *.jj,*.jjt set ft=javacc
422 au BufNewFile,BufRead *.js,*.javascript set ft=javascript
425 au BufNewFile,BufRead *.jsp set ft=jsp
427 " Java Properties resource file (note: doesn't catch font.properties.pl)
428 au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_??,*.properties_??_??_* set ft=jproperties
431 au BufNewFile,BufRead *.clp set ft=jess
434 au BufNewFile,BufRead *.jgr set ft=jgraph
437 au BufNewFile,BufRead *.k set ft=kwt
440 au BufNewFile,BufRead *.kix set ft=kix
443 au BufNewFile,BufRead *.ks set ft=kscript
446 au BufNewFile,BufRead *.ace,*.ACE set ft=lace
449 au BufNewFile,BufRead *.latte,*.lte set ft=latte
451 " LambdaProlog (*.mod too, see Modsim)
452 au BufNewFile,BufRead *.sig set ft=lprolog
455 au BufNewFile,BufRead *.lex,*.l set ft=lex
458 au BufNewFile,BufRead lilo.conf* set ft=lilo
460 " Lisp (*.el = ELisp, *.cl = Common Lisp, *.jl = librep Lisp)
462 au BufNewFile,BufRead *.lsp,*.el,*.cl,*.jl,*.L set ft=lisp
464 au BufNewFile,BufRead *.lsp,*.el,*.cl,*.jl set ft=lisp
468 au BufNewFile,BufRead *.lite,*.lt set ft=lite
471 au BufNewFile,BufRead *.lot,*.lotos set ft=lotos
474 au BufNewFile,BufRead *.lou,*.lout set ft=lout
477 au BufNewFile,BufRead *.lua set ft=lua
480 au BufNewFile,BufRead *.lss set ft=lss
483 au BufNewFile,BufRead *.m4 if expand("<afile>") !~? "html.m4$" | set ft=m4 | endif
486 au BufNewFile,BufRead *.mgp set ft=mgp
488 " Mail (for Elm, trn, mutt, rn, slrn)
489 au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt-*-\d\+,mutt\w\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+ set ft=mail
491 " Makefile (but not Automake)
492 au BufNewFile,BufRead [mM]akefile* if expand("<afile>") !~? 'Makefile.am\>' | set ft=make | endif
493 au BufNewFile,BufRead GNUmakefile,*.mk,*.mak,*.dsp set ft=make
496 au BufNewFile,BufRead *.ist,*.mst set ft=ist
499 au BufNewFile,BufRead *.man set ft=man
502 au BufNewFile,BufRead *.mv,*.mpl,*.mws set ft=maple
505 au BufNewFile,BufRead *.mason.*.mhtml set ft=mason
507 " Matlab or Mathematica
508 au BufNewFile,BufRead *.m call FTCheck_m()
513 if getline(n) =~ '^\s*%'
517 if getline(n) =~ '^\s*(\*'
526 " Maya Extension Language
527 au BufNewFile,BufRead *.mel set ft=mel
530 au BufNewFile,BufRead *.mf set ft=mf
533 au BufNewFile,BufRead *.mp set ft=mp
535 " Modsim III (or LambdaProlog)
536 au BufNewFile,BufRead *.mod
537 \ if getline(1) =~ '\<module\>' |
544 au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi set ft=modula2
546 " Modula 3 (.m3, .i3, .mg, .ig)
547 au BufNewFile,BufRead *.[mi][3g] set ft=modula3
550 au BufNewFile,BufRead *.s19,*.s28,*.s37 set ft=srec
553 au BufNewFile,BufRead *.msql set ft=msql
556 au BufNewFile,BufRead *.rc set ft=rc
559 au BufNewFile,BufRead .muttrc*,Muttrc set ft=muttrc
562 "au BufNewFile,BufRead *.dat set ft=nastran
564 " Novell netware batch files
565 au BufNewFile,BufRead *.ncf set ft=ncf
567 " Nroff/Troff (*.ms is checked below)
568 au BufNewFile,BufRead *.me,*.mm,*.tr,*.nr set ft=nroff
569 au BufNewFile,BufRead *.[1-9] call FTCheck_nroff()
571 " This function checks if one of the first five lines start with a dot. In
572 " that case it is probably an nroff file: 'filetype' is set and 1 is returned.
574 if getline(1)[0] . getline(2)[0] . getline(3)[0] . getline(4)[0] . getline(5)[0] =~ '\.'
582 au BufNewFile,BufRead *.nqc set ft=nqc
585 au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly set ft=ocaml
588 au BufNewFile,BufRead *.xom,*.xin set ft=omnimark
591 au BufNewFile,BufRead *.or set ft=openroad
594 au BufNewFile,BufRead *.[Oo][Pp][Ll] set ft=opl
597 au BufNewFile,BufRead *.ora set ft=ora
600 au BufNewFile,BufRead *.papp,*.pxml,*.pxsl set ft=papp
603 au BufNewFile,BufRead *.pas set ft=pascal
605 " Delphi project file
606 au BufNewFile,BufRead *.dpr set ft=pascal
610 au BufNewFile,BufRead *.pl,*.PL set ft=perl
612 au BufNewFile,BufRead *.pl set ft=perl
616 au BufNewFile,BufRead *.pm if getline(1) =~ "XPM2"|set ft=xpm2|elseif getline(1) =~ "XPM"|set ft=xpm|else|set ft=perl|endif
619 au BufNewFile,BufRead *.pod set ft=pod
622 au BufNewFile,BufRead *.php,*.php3 set ft=php
625 au BufNewFile,BufRead *.phtml set ft=phtml
628 au BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod set ft=pike
631 au BufNewFile,BufRead .pinerc,pinerc set ft=pine
634 au BufNewFile,BufRead *.pls,*.plsql set ft=plsql
637 au BufNewFile,BufRead *.po set ft=po
639 " Postfix main config
640 au BufNewFile,BufRead main.cf set ft=pfmain
643 au BufNewFile,BufRead *.ps,*.eps set ft=postscr
646 au BufNewFile,BufRead *.pov set ft=pov
649 au BufNewFile,BufRead *.inc call FTCheck_inc()
652 if exists("g:filetype_inc")
653 exe "set ft=" . g:filetype_inc
654 elseif getline(1).getline(2).getline(3) =~ "<?"
657 call FTCheck_asmsyntax()
658 if exists("b:asmsyntax")
659 exe "set ft=" . b:asmsyntax
666 " Printcap and Termcap
667 au BufNewFile,BufRead *printcap let b:ptcap_type = "print"|set ft=ptcap
668 au BufNewFile,BufRead *termcap let b:ptcap_type = "term"|set ft=ptcap
671 "au BufNewFile,BufRead *.g set ft=antrl
672 au BufNewFile,BufRead *.g set ft=pccts
675 au BufNewFile,BufRead *.it,*.ih set ft=ppwiz
678 au BufNewFile,BufRead .procmail,.procmailrc set ft=procmail
681 au BufNewFile,BufRead *.w call FTCheck_progress_cweb()
683 function! FTCheck_progress_cweb()
684 if exists("g:filetype_w")
685 exe "set ft=" . g:filetype_w
688 if getline(1) =~ '&ANALYZE' || getline(3) =~ '&GLOBAL-DEFINE'
695 " Progress or assembly
696 au BufNewFile,BufRead *.i call FTCheck_progress_asm()
698 function! FTCheck_progress_asm()
699 if exists("g:filetype_i")
700 exe "set ft=" . g:filetype_i
703 " This function checks for an assembly comment the first ten lines.
704 " If not found, assume Progress.
707 let line = getline(lnum)
708 if line =~ '^\s*;' || line =~ '^\*'
711 elseif line !~ '^\s*$' || line =~ '^/\*'
712 " Not an empty line: Doesn't look like valid assembly code.
713 " Or it looks like a Progress /* comment
722 au BufNewFile,BufRead *.p call FTCheck_progress_pascal()
724 function! FTCheck_progress_pascal()
725 if exists("g:filetype_p")
726 exe "set ft=" . g:filetype_p
729 " This function checks for valid Pascal syntax in the first ten lines.
730 " Look for either an opening comment or a program start.
731 " If not found, assume Progress.
734 let line = getline(lnum)
735 if line =~ '^\s*\(program\|procedure\|function\|const\|type\|var\)\>'
739 elseif line !~ '^\s*$' || line =~ '^/\*'
740 " Not an empty line: Doesn't look like valid Pascal code.
741 " Or it looks like a Progress /* comment
749 " Software Distributor Product Specification File (POSIX 1387.2-1995)
750 au BufNewFile,BufRead *.psf set ft=psf
751 au BufNewFile,BufRead INDEX,INFO
752 \ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' |
757 au BufNewFile,BufRead *.pdb set ft=prolog
760 au BufNewFile,BufRead *.py set ft=python
763 au BufNewFile,BufRead *.rad,*.mat set ft=radiance
765 " Registry for MS-Windows
766 au BufNewFile,BufRead *.reg
767 \ if getline(1) =~? '^REGEDIT[0-9]*\s*$' | set ft=registry | endif
770 au BufNewFile,BufRead *.rexx,*.rex set ft=rexx
773 au BufNewFile,BufRead *.r
774 \ if getline(1) =~ '^REBOL'|set ft=rebol|else|set ft=rexx|endif
777 au BufNewFile,BufRead .reminders* set ft=remind
780 au BufNewFile,BufRead robots.txt set ft=robots
783 au BufNewFile,BufRead *.x set ft=rpcgen
786 au BufNewFile,BufRead *.rtf set ft=rtf
789 au BufNewFile,BufRead *.rb set ft=ruby
791 " S-lang (or shader language!)
792 au BufNewFile,BufRead *.sl set ft=slang
795 au BufNewFile,BufRead smb.conf set ft=samba
798 au BufNewFile,BufRead *.sas set ft=sas
801 au BufNewFile,BufRead *.sa set ft=sather
804 au BufNewFile,BufRead *.sdl,*.pr set ft=sdl
807 au BufNewFile,BufRead *.sed set ft=sed
810 au BufNewFile,BufRead sendmail.cf set ft=sm
813 au BufNewFile,BufRead *.setl,*.stl set ft=setl
816 au BufNewFile,BufRead *.sgm,*.sgml
817 \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc'|
819 \ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' |
820 \ let b:docbk_type="sgml" |
827 au BufNewFile,BufRead *.decl,*.dcl,*.dec
828 \ if getline(1).getline(2).getline(3) =~? '^<!SGML' |
832 " Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
833 au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash_profile*,*.bash call SetFileTypeSH("bash")
834 au BufNewFile,BufRead .kshrc*,*.ksh call SetFileTypeSH("ksh")
835 au BufNewFile,BufRead /etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1))
836 au BufNewFile,BufRead .login*,.cshrc*,csh.cshrc,csh.login,csh.logout,.tcshrc*,*.csh,*.tcsh,.alias set ft=csh
838 fun! SetFileTypeSH(name)
839 if a:name =~ '\<ksh\>'
840 let b:is_kornshell = 1
841 if exists("b:is_bash")
844 elseif exists("g:bash_is_sh") || a:name =~ '\<bash\>' || a:name =~ '\<bash2\>'
846 if exists("b:is_kornshell")
854 au BufNewFile,BufRead .zsh*,.zlog*,.zprofile,.zfbfmarks,.zcompdump*,zsh*,zlog* set ft=zsh
857 au BufNewFile,BufRead *.scm set ft=scheme
860 au BufNewFile,BufRead *.sim set ft=simula
863 au BufNewFile,BufRead *.sin,*.s85 set ft=sinda
866 au BufNewFile,BufRead *.il set ft=skill
869 au BufNewFile,BufRead .slrnrc set ft=slrnrc
870 au BufNewFile,BufRead *.score set ft=slrnsc
873 au BufNewFile,BufRead *.st set ft=st
876 au BufNewFile,BufRead *.cls
877 \ if getline(1) =~ "^%" |
884 au BufNewFile,BufRead *.smil
885 \ if getline(1) =~ '<?\s*xml.*?>'|
891 " SMIL or SNMP MIB file
892 au BufNewFile,BufRead *.smi if getline(1) =~ '\<smil\>'|set ft=smil|else|set ft=mib|endif
895 au BufNewFile,BufRead *.smt,*.smith set ft=smith
898 au BufNewFile,BufRead *.sno set ft=snobol4
901 au BufNewFile,BufRead *.mib set ft=mib
903 " Snort Configuration
904 au BufNewFile,BufRead *.hog,snort.conf,vision.conf,*.rules set ft=hog
907 au BufNewFile,BufRead *.spec set ft=spec
909 " Speedup (AspenTech plant simulator)
910 au BufNewFile,BufRead *.speedup,*.spdata,*.spd set ft=spup
913 au BufNewFile,BufRead *.sp,*.spice set ft=spice
916 au BufNewFile,BufRead squid.conf set ft=squid
918 " SQL (all but the first one for Oracle Designer)
919 au BufNewFile,BufRead *.sql,*.tyb,*.typ,*.tyc,*.pkb,*.pks set ft=sql
922 au BufNewFile,BufRead *.sqr,*.sqi set ft=sqr
925 au BufNewFile,BufRead *.stp set ft=stp
928 au BufNewFile,BufRead *.sml set ft=sml
931 au BufNewFile,BufRead *.t set ft=tads
934 au BufNewFile,BufRead tags set ft=tags
937 au BufNewFile,BufRead *.tak set ft=tak
940 au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk set ft=tcl
943 au BufNewFile,BufRead *.tli set ft=tli
946 au BufNewFile,BufRead *.slt set ft=tsalt
949 au BufNewFile,BufRead *.tex,*.latex,*.sty,*.dtx,*.ltx set ft=tex
952 au BufNewFile,BufRead *.texinfo,*.texi,*.txi set ft=texinfo
955 au BufNewFile,BufRead texmf.cnf set ft=texmf
958 au BufNewFile,BufReadPost *.tssgm set ft=tssgm
961 au BufNewFile,BufReadPost *.tssop set ft=tssop
963 " TSS - Command Line (temporary)
964 au BufNewFile,BufReadPost *.tsscl set ft=tsscl
967 au BufNewFile,BufRead *.tf set ft=tf
969 " Motif UIT/UIL files
970 au BufNewFile,BufRead *.uit,*.uil set ft=uil
973 au BufNewFile,BufRead *.uc set ft=uc
976 au BufNewFile,BufRead *.v set ft=verilog
979 au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vhdl_[0-9]*,*.vbe,*.vst set ft=vhdl
983 au BufNewFile,BufRead *[/:]vim*[/:]doc[/:]*.txt,*[/:]runtime[/:]doc[/:]*.txt set ft=help
985 au BufNewFile,BufRead */vim*/doc/*.txt,*/runtime/doc/*.txt set ft=help
989 au BufNewFile,BufRead *vimrc*,*.vim,.exrc,_exrc set ft=vim
992 au BufNewFile,BufRead .viminfo,_viminfo set ft=viminfo
994 " Virata Config Script File
995 au BufRead,BufNewFile *.hw,*.module,*.pkg set ft=virata
997 " Visual Basic (also uses *.bas) or FORM
998 au BufNewFile,BufRead *.frm call FTCheck_VB("form")
1001 au BufNewFile,BufRead vgrindefs set ft=vgrindefs
1004 au BufNewFile,BufRead *.wrl set ft=vrml
1007 au BufNewFile,BufRead *.wm set ft=webmacro
1009 " Website MetaLanguage
1010 au BufNewFile,BufRead *.wml set ft=wml
1013 au BufNewFile,BufRead *.wbt set ft=winbatch
1016 au BufNewFile,BufRead cvs\d\+ set ft=cvs
1018 " WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment
1019 " lines in a WEB file).
1020 au BufNewFile,BufRead *.web if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" | set ft=web | else | set ft=winbatch | endif
1022 " Windows Scripting Host and Windows Script Component
1023 au BufNewFile,BufRead *.ws[fc] set ft=wsh
1025 " X Pixmap (dynamically sets colors, use BufEnter to make it work better)
1026 au BufEnter *.xpm if getline(1) =~ "XPM2"|set ft=xpm2|else|set ft=xpm|endif
1027 au BufEnter *.xpm2 set ft=xpm2
1029 " XS Perl extension interface language
1030 au BufEnter *.xs set ft=xs
1032 " X Keyboard Extensions
1033 au BufNewFile,BufRead *X11*/xkb/*
1034 \ if expand("<afile>:t") !~ '\.' |
1039 au BufNewFile,BufRead .Xdefaults,.Xresources,Xresources*,*/app-defaults/*,*/Xresources/*,xdm-config set ft=xdefaults
1042 au BufNewFile,BufRead *.msc,*.msf set ft=xmath
1043 au BufNewFile,BufRead *.ms if !FTCheck_nroff() | set ft=xmath | endif
1047 au BufNewFile,BufRead *.xsl set ft=xml
1048 au BufNewFile,BufRead *.xml
1049 \ if getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' |
1050 \ let b:docbk_type="xml" |
1057 au BufNewFile,BufRead *.y set ft=yacc
1059 " Z80 assembler asz80
1060 au BufNewFile,BufRead *.z8a set ft=z8a
1065 " Source the user-specified filetype file
1066 if exists("myfiletypefile") && file_readable(expand(myfiletypefile))
1067 execute "source " . myfiletypefile
1071 " Check for "*" after loading myfiletypefile, so that scripts.vim is only used
1072 " when there are no matching file name extensions.
1074 au BufNewFile,BufRead,StdinReadPost * if !did_filetype()|so <sfile>:p:h/scripts.vim|endif
1077 " Extra checks for when no filetype has been detected now
1079 " Printcap and Termcap
1080 au BufNewFile,BufRead *printcap* if !did_filetype()|let b:ptcap_type = "print"|set ft=ptcap|endif
1081 au BufNewFile,BufRead *termcap* if !did_filetype()|let b:ptcap_type = "term"|set ft=ptcap|endif
1084 au BufNewFile,BufRead crontab.* if !did_filetype()|set ft=crontab|endif
1087 au BufNewFile,BufRead .gtkrc*,gtkrc* set ft=gtkrc
1093 " If the GUI is already running, may still need to install the Syntax menu.
1094 " Don't do it when the 'M' flag is included in 'guioptions'
1095 if has("gui_running") && !exists("did_install_syntax_menu") && &guioptions !~# "M"
1096 source <sfile>:p:h/menu.vim
1099 " Restore 'cpoptions'
1100 let &cpo = ft_cpo_save
1104 endif " !exists("did_load_filetypes")