xref: /vim-8.2.3635/runtime/filetype.vim (revision 51ad4eaa)
1" Vim support file to detect file types
2"
3" Maintainer:	Bram Moolenaar <[email protected]>
4" Last Change:	2018 Jan 28
5
6" Listen very carefully, I will say this only once
7if exists("did_load_filetypes")
8  finish
9endif
10let did_load_filetypes = 1
11
12" Line continuation is used here, remove 'C' from 'cpoptions'
13let s:cpo_save = &cpo
14set cpo&vim
15
16augroup filetypedetect
17
18" Ignored extensions
19if exists("*fnameescape")
20au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.dpkg-dist,?\+.dpkg-old,?\+.dpkg-new,?\+.dpkg-bak,?\+.rpmsave,?\+.rpmnew,?\+.pacsave,?\+.pacnew
21	\ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r"))
22au BufNewFile,BufRead *~
23	\ let s:name = expand("<afile>") |
24	\ let s:short = substitute(s:name, '\~$', '', '') |
25	\ if s:name != s:short && s:short != "" |
26	\   exe "doau filetypedetect BufRead " . fnameescape(s:short) |
27	\ endif |
28	\ unlet! s:name s:short
29au BufNewFile,BufRead ?\+.in
30	\ if expand("<afile>:t") != "configure.in" |
31	\   exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r")) |
32	\ endif
33elseif &verbose > 0
34  echomsg "Warning: some filetypes will not be recognized because this version of Vim does not have fnameescape()"
35endif
36
37" Pattern used to match file names which should not be inspected.
38" Currently finds compressed files.
39if !exists("g:ft_ignore_pat")
40  let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
41endif
42
43" Function used for patterns that end in a star: don't set the filetype if the
44" file name matches ft_ignore_pat.
45func! s:StarSetf(ft)
46  if expand("<amatch>") !~ g:ft_ignore_pat
47    exe 'setf ' . a:ft
48  endif
49endfunc
50
51" Vim help file
52au BufNewFile,BufRead $VIMRUNTIME/doc/*.txt	setf help
53
54" Abaqus or Trasys
55au BufNewFile,BufRead *.inp			call dist#ft#Check_inp()
56
57" A-A-P recipe
58au BufNewFile,BufRead *.aap			setf aap
59
60" A2ps printing utility
61au BufNewFile,BufRead */etc/a2ps.cfg,*/etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps
62
63" ABAB/4
64au BufNewFile,BufRead *.abap			setf abap
65
66" ABC music notation
67au BufNewFile,BufRead *.abc			setf abc
68
69" ABEL
70au BufNewFile,BufRead *.abl			setf abel
71
72" AceDB
73au BufNewFile,BufRead *.wrm			setf acedb
74
75" Ada (83, 9X, 95)
76au BufNewFile,BufRead *.adb,*.ads,*.ada		setf ada
77if has("vms")
78  au BufNewFile,BufRead *.gpr,*.ada_m,*.adc	setf ada
79else
80  au BufNewFile,BufRead *.gpr			setf ada
81endif
82
83" AHDL
84au BufNewFile,BufRead *.tdf			setf ahdl
85
86" AMPL
87au BufNewFile,BufRead *.run			setf ampl
88
89" Ant
90au BufNewFile,BufRead build.xml			setf ant
91
92" Arduino
93au BufNewFile,BufRead *.ino,*.pde		setf arduino
94
95" Apache style config file
96au BufNewFile,BufRead proftpd.conf*		call s:StarSetf('apachestyle')
97
98" Apache config file
99au BufNewFile,BufRead .htaccess,*/etc/httpd/*.conf		setf apache
100
101" XA65 MOS6510 cross assembler
102au BufNewFile,BufRead *.a65			setf a65
103
104" Applescript
105au BufNewFile,BufRead *.scpt			setf applescript
106
107" Applix ELF
108au BufNewFile,BufRead *.am
109	\ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif
110
111" ALSA configuration
112au BufNewFile,BufRead .asoundrc,*/usr/share/alsa/alsa.conf,*/etc/asound.conf setf alsaconf
113
114" Arc Macro Language
115au BufNewFile,BufRead *.aml			setf aml
116
117" APT config file
118au BufNewFile,BufRead apt.conf		       setf aptconf
119au BufNewFile,BufRead */.aptitude/config       setf aptconf
120au BufNewFile,BufRead */etc/apt/apt.conf.d/{[-_[:alnum:]]\+,[-_.[:alnum:]]\+.conf} setf aptconf
121
122" Arch Inventory file
123au BufNewFile,BufRead .arch-inventory,=tagging-method	setf arch
124
125" ART*Enterprise (formerly ART-IM)
126au BufNewFile,BufRead *.art			setf art
127
128" AsciiDoc
129au BufNewFile,BufRead *.asciidoc,*.adoc		setf asciidoc
130
131" ASN.1
132au BufNewFile,BufRead *.asn,*.asn1		setf asn
133
134" Active Server Pages (with Visual Basic Script)
135au BufNewFile,BufRead *.asa
136	\ if exists("g:filetype_asa") |
137	\   exe "setf " . g:filetype_asa |
138	\ else |
139	\   setf aspvbs |
140	\ endif
141
142" Active Server Pages (with Perl or Visual Basic Script)
143au BufNewFile,BufRead *.asp
144	\ if exists("g:filetype_asp") |
145	\   exe "setf " . g:filetype_asp |
146	\ elseif getline(1) . getline(2) . getline(3) =~? "perlscript" |
147	\   setf aspperl |
148	\ else |
149	\   setf aspvbs |
150	\ endif
151
152" Grub (must be before catch *.lst)
153au BufNewFile,BufRead */boot/grub/menu.lst,*/boot/grub/grub.conf,*/etc/grub.conf setf grub
154
155" Assembly (all kinds)
156" *.lst is not pure assembly, it has two extra columns (address, byte codes)
157au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst	call dist#ft#FTasm()
158
159" Macro (VAX)
160au BufNewFile,BufRead *.mar			setf vmasm
161
162" Atlas
163au BufNewFile,BufRead *.atl,*.as		setf atlas
164
165" Autoit v3
166au BufNewFile,BufRead *.au3			setf autoit
167
168" Autohotkey
169au BufNewFile,BufRead *.ahk			setf autohotkey
170
171" Automake
172au BufNewFile,BufRead [mM]akefile.am,GNUmakefile.am	setf automake
173
174" Autotest .at files are actually m4
175au BufNewFile,BufRead *.at			setf m4
176
177" Avenue
178au BufNewFile,BufRead *.ave			setf ave
179
180" Awk
181au BufNewFile,BufRead *.awk			setf awk
182
183" B
184au BufNewFile,BufRead *.mch,*.ref,*.imp		setf b
185
186" BASIC or Visual Basic
187au BufNewFile,BufRead *.bas			call dist#ft#FTVB("basic")
188
189" Visual Basic Script (close to Visual Basic) or Visual Basic .NET
190au BufNewFile,BufRead *.vb,*.vbs,*.dsm,*.ctl	setf vb
191
192" IBasic file (similar to QBasic)
193au BufNewFile,BufRead *.iba,*.ibi		setf ibasic
194
195" FreeBasic file (similar to QBasic)
196au BufNewFile,BufRead *.fb,*.bi			setf freebasic
197
198" Batch file for MSDOS.
199au BufNewFile,BufRead *.bat,*.sys		setf dosbatch
200" *.cmd is close to a Batch file, but on OS/2 Rexx files also use *.cmd.
201au BufNewFile,BufRead *.cmd
202	\ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif
203
204" Batch file for 4DOS
205au BufNewFile,BufRead *.btm			call dist#ft#FTbtm()
206
207" BC calculator
208au BufNewFile,BufRead *.bc			setf bc
209
210" BDF font
211au BufNewFile,BufRead *.bdf			setf bdf
212
213" BibTeX bibliography database file
214au BufNewFile,BufRead *.bib			setf bib
215
216" BibTeX Bibliography Style
217au BufNewFile,BufRead *.bst			setf bst
218
219" BIND configuration
220" sudoedit uses namedXXXX.conf
221au BufNewFile,BufRead named*.conf,rndc*.conf,rndc*.key	setf named
222
223" BIND zone
224au BufNewFile,BufRead named.root		setf bindzone
225au BufNewFile,BufRead *.db			call dist#ft#BindzoneCheck('')
226
227" Blank
228au BufNewFile,BufRead *.bl			setf blank
229
230" Blkid cache file
231au BufNewFile,BufRead */etc/blkid.tab,*/etc/blkid.tab.old   setf xml
232
233" Bazel (http://bazel.io)
234autocmd BufRead,BufNewFile *.bzl,WORKSPACE,BUILD.bazel 	setf bzl
235if has("fname_case")
236  " There is another check for BUILD further below.
237  autocmd BufRead,BufNewFile BUILD			setf bzl
238endif
239
240" C or lpc
241au BufNewFile,BufRead *.c			call dist#ft#FTlpc()
242au BufNewFile,BufRead *.lpc,*.ulpc		setf lpc
243
244" Calendar
245au BufNewFile,BufRead calendar			setf calendar
246
247" C#
248au BufNewFile,BufRead *.cs			setf cs
249
250" CSDL
251au BufNewFile,BufRead *.csdl			setf csdl
252
253" Cabal
254au BufNewFile,BufRead *.cabal			setf cabal
255
256" Cdrdao TOC
257au BufNewFile,BufRead *.toc			setf cdrtoc
258
259" Cdrdao config
260au BufNewFile,BufRead */etc/cdrdao.conf,*/etc/defaults/cdrdao,*/etc/default/cdrdao,.cdrdao	setf cdrdaoconf
261
262" Cfengine
263au BufNewFile,BufRead cfengine.conf		setf cfengine
264
265" ChaiScript
266au BufRead,BufNewFile *.chai			setf chaiscript
267
268" Comshare Dimension Definition Language
269au BufNewFile,BufRead *.cdl			setf cdl
270
271" Conary Recipe
272au BufNewFile,BufRead *.recipe			setf conaryrecipe
273
274" Controllable Regex Mutilator
275au BufNewFile,BufRead *.crm			setf crm
276
277" Cyn++
278au BufNewFile,BufRead *.cyn			setf cynpp
279
280" Cynlib
281" .cc and .cpp files can be C++ or Cynlib.
282au BufNewFile,BufRead *.cc
283	\ if exists("cynlib_syntax_for_cc")|setf cynlib|else|setf cpp|endif
284au BufNewFile,BufRead *.cpp
285	\ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif
286
287" C++
288au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.ipp,*.moc,*.tcc,*.inl setf cpp
289if has("fname_case")
290  au BufNewFile,BufRead *.C,*.H setf cpp
291endif
292
293" .h files can be C, Ch C++, ObjC or ObjC++.
294" Set c_syntax_for_h if you want C, ch_syntax_for_h if you want Ch. ObjC is
295" detected automatically.
296au BufNewFile,BufRead *.h			call dist#ft#FTheader()
297
298" Ch (CHscript)
299au BufNewFile,BufRead *.chf			setf ch
300
301" TLH files are C++ headers generated by Visual C++'s #import from typelibs
302au BufNewFile,BufRead *.tlh			setf cpp
303
304" Cascading Style Sheets
305au BufNewFile,BufRead *.css			setf css
306
307" Century Term Command Scripts (*.cmd too)
308au BufNewFile,BufRead *.con			setf cterm
309
310" Changelog
311au BufNewFile,BufRead changelog.Debian,changelog.dch,NEWS.Debian,NEWS.dch
312					\	setf debchangelog
313
314au BufNewFile,BufRead [cC]hange[lL]og
315	\  if getline(1) =~ '; urgency='
316	\|   setf debchangelog
317	\| else
318	\|   setf changelog
319	\| endif
320
321au BufNewFile,BufRead NEWS
322	\  if getline(1) =~ '; urgency='
323	\|   setf debchangelog
324	\| endif
325
326" CHILL
327au BufNewFile,BufRead *..ch			setf chill
328
329" Changes for WEB and CWEB or CHILL
330au BufNewFile,BufRead *.ch			call dist#ft#FTchange()
331
332" ChordPro
333au BufNewFile,BufRead *.chopro,*.crd,*.cho,*.crdpro,*.chordpro	setf chordpro
334
335" Clean
336au BufNewFile,BufRead *.dcl,*.icl		setf clean
337
338" Clever
339au BufNewFile,BufRead *.eni			setf cl
340
341" Clever or dtd
342au BufNewFile,BufRead *.ent			call dist#ft#FTent()
343
344" Clipper (or FoxPro; could also be eviews)
345au BufNewFile,BufRead *.prg
346	\ if exists("g:filetype_prg") |
347	\   exe "setf " . g:filetype_prg |
348	\ else |
349	\   setf clipper |
350	\ endif
351
352" Clojure
353au BufNewFile,BufRead *.clj,*.cljs,*.cljx,*.cljc		setf clojure
354
355" Cmake
356au BufNewFile,BufRead CMakeLists.txt,*.cmake,*.cmake.in		setf cmake
357
358" Cmusrc
359au BufNewFile,BufRead */.cmus/{autosave,rc,command-history,*.theme} setf cmusrc
360au BufNewFile,BufRead */cmus/{rc,*.theme}			setf cmusrc
361
362" Cobol
363au BufNewFile,BufRead *.cbl,*.cob,*.lib	setf cobol
364"   cobol or zope form controller python script? (heuristic)
365au BufNewFile,BufRead *.cpy
366	\ if getline(1) =~ '^##' |
367	\   setf python |
368	\ else |
369	\   setf cobol |
370	\ endif
371
372" Coco/R
373au BufNewFile,BufRead *.atg			setf coco
374
375" Cold Fusion
376au BufNewFile,BufRead *.cfm,*.cfi,*.cfc		setf cf
377
378" Configure scripts
379au BufNewFile,BufRead configure.in,configure.ac setf config
380
381" CUDA  Cumpute Unified Device Architecture
382au BufNewFile,BufRead *.cu,*.cuh		setf cuda
383
384" Dockerfile
385au BufNewFile,BufRead Dockerfile,*.Dockerfile	setf dockerfile
386
387" WildPackets EtherPeek Decoder
388au BufNewFile,BufRead *.dcd			setf dcd
389
390" Enlightenment configuration files
391au BufNewFile,BufRead *enlightenment/*.cfg	setf c
392
393" Eterm
394au BufNewFile,BufRead *Eterm/*.cfg		setf eterm
395
396" Euphoria 3 or 4
397au BufNewFile,BufRead *.eu,*.ew,*.ex,*.exu,*.exw  call dist#ft#EuphoriaCheck()
398if has("fname_case")
399   au BufNewFile,BufRead *.EU,*.EW,*.EX,*.EXU,*.EXW  call dist#ft#EuphoriaCheck()
400endif
401
402" Lynx config files
403au BufNewFile,BufRead lynx.cfg			setf lynx
404
405" Quake
406au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg	setf quake
407au BufNewFile,BufRead *quake[1-3]/*.cfg			setf quake
408
409" Quake C
410au BufNewFile,BufRead *.qc			setf c
411
412" Configure files
413au BufNewFile,BufRead *.cfg			setf cfg
414
415" Cucumber
416au BufNewFile,BufRead *.feature			setf cucumber
417
418" Communicating Sequential Processes
419au BufNewFile,BufRead *.csp,*.fdr		setf csp
420
421" CUPL logic description and simulation
422au BufNewFile,BufRead *.pld			setf cupl
423au BufNewFile,BufRead *.si			setf cuplsim
424
425" Debian Control
426au BufNewFile,BufRead */debian/control		setf debcontrol
427au BufNewFile,BufRead control
428	\  if getline(1) =~ '^Source:'
429	\|   setf debcontrol
430	\| endif
431
432" Debian Sources.list
433au BufNewFile,BufRead */etc/apt/sources.list		setf debsources
434au BufNewFile,BufRead */etc/apt/sources.list.d/*.list	setf debsources
435
436" Deny hosts
437au BufNewFile,BufRead denyhosts.conf		setf denyhosts
438
439" dnsmasq(8) configuration files
440au BufNewFile,BufRead */etc/dnsmasq.conf	setf dnsmasq
441
442" ROCKLinux package description
443au BufNewFile,BufRead *.desc			setf desc
444
445" the D language or dtrace
446au BufNewFile,BufRead *.d			call dist#ft#DtraceCheck()
447
448" Desktop files
449au BufNewFile,BufRead *.desktop,.directory	setf desktop
450
451" Dict config
452au BufNewFile,BufRead dict.conf,.dictrc		setf dictconf
453
454" Dictd config
455au BufNewFile,BufRead dictd.conf		setf dictdconf
456
457" Diff files
458au BufNewFile,BufRead *.diff,*.rej		setf diff
459au BufNewFile,BufRead *.patch
460	\ if getline(1) =~ '^From [0-9a-f]\{40\} Mon Sep 17 00:00:00 2001$' |
461	\   setf gitsendemail |
462	\ else |
463	\   setf diff |
464	\ endif
465
466" Dircolors
467au BufNewFile,BufRead .dir_colors,.dircolors,*/etc/DIR_COLORS	setf dircolors
468
469" Diva (with Skill) or InstallShield
470au BufNewFile,BufRead *.rul
471	\ if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield' |
472	\   setf ishd |
473	\ else |
474	\   setf diva |
475	\ endif
476
477" DCL (Digital Command Language - vms) or DNS zone file
478au BufNewFile,BufRead *.com			call dist#ft#BindzoneCheck('dcl')
479
480" DOT
481au BufNewFile,BufRead *.dot			setf dot
482
483" Dylan - lid files
484au BufNewFile,BufRead *.lid			setf dylanlid
485
486" Dylan - intr files (melange)
487au BufNewFile,BufRead *.intr			setf dylanintr
488
489" Dylan
490au BufNewFile,BufRead *.dylan			setf dylan
491
492" Microsoft Module Definition
493au BufNewFile,BufRead *.def			setf def
494
495" Dracula
496au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe	setf dracula
497
498" Datascript
499au BufNewFile,BufRead *.ds			setf datascript
500
501" dsl
502au BufNewFile,BufRead *.dsl			setf dsl
503
504" DTD (Document Type Definition for XML)
505au BufNewFile,BufRead *.dtd			setf dtd
506
507" DTS/DSTI (device tree files)
508au BufNewFile,BufRead *.dts,*.dtsi		setf dts
509
510" EDIF (*.edf,*.edif,*.edn,*.edo) or edn
511au BufNewFile,BufRead *.ed\(f\|if\|o\)		setf edif
512au BufNewFile,BufRead *.edn
513	\ if getline(1) =~ '^\s*(\s*edif\>' |
514	\   setf edif |
515	\ else |
516	\   setf clojure |
517	\ endif
518
519" EditorConfig (close enough to dosini)
520au BufNewFile,BufRead .editorconfig		setf dosini
521
522" Embedix Component Description
523au BufNewFile,BufRead *.ecd			setf ecd
524
525" Eiffel or Specman or Euphoria
526au BufNewFile,BufRead *.e,*.E			call dist#ft#FTe()
527
528" Elinks configuration
529au BufNewFile,BufRead */etc/elinks.conf,*/.elinks/elinks.conf	setf elinks
530
531" ERicsson LANGuage; Yaws is erlang too
532au BufNewFile,BufRead *.erl,*.hrl,*.yaws	setf erlang
533
534" Elm Filter Rules file
535au BufNewFile,BufRead filter-rules		setf elmfilt
536
537" ESMTP rc file
538au BufNewFile,BufRead *esmtprc			setf esmtprc
539
540" ESQL-C
541au BufNewFile,BufRead *.ec,*.EC			setf esqlc
542
543" Esterel
544au BufNewFile,BufRead *.strl			setf esterel
545
546" Essbase script
547au BufNewFile,BufRead *.csc			setf csc
548
549" Exim
550au BufNewFile,BufRead exim.conf			setf exim
551
552" Expect
553au BufNewFile,BufRead *.exp			setf expect
554
555" Exports
556au BufNewFile,BufRead exports			setf exports
557
558" Falcon
559au BufNewFile,BufRead *.fal			setf falcon
560
561" Fantom
562au BufNewFile,BufRead *.fan,*.fwt		setf fan
563
564" Factor
565au BufNewFile,BufRead *.factor			setf factor
566
567" Fetchmail RC file
568au BufNewFile,BufRead .fetchmailrc		setf fetchmail
569
570" FlexWiki - disabled, because it has side effects when a .wiki file
571" is not actually FlexWiki
572"au BufNewFile,BufRead *.wiki			setf flexwiki
573
574" Focus Executable
575au BufNewFile,BufRead *.fex,*.focexec		setf focexec
576
577" Focus Master file (but not for auto.master)
578au BufNewFile,BufRead auto.master		setf conf
579au BufNewFile,BufRead *.mas,*.master		setf master
580
581" Forth
582au BufNewFile,BufRead *.fs,*.ft			setf forth
583
584" Reva Forth
585au BufNewFile,BufRead *.frt			setf reva
586
587" Fortran
588if has("fname_case")
589  au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95,*.F03,*.F08	 setf fortran
590endif
591au BufNewFile,BufRead   *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95,*.f03,*.f08  setf fortran
592
593" Framescript
594au BufNewFile,BufRead *.fsl			setf framescript
595
596" FStab
597au BufNewFile,BufRead fstab,mtab		setf fstab
598
599" GDB command files
600au BufNewFile,BufRead .gdbinit			setf gdb
601
602" GDMO
603au BufNewFile,BufRead *.mo,*.gdmo		setf gdmo
604
605" Gedcom
606au BufNewFile,BufRead *.ged,lltxxxxx.txt	setf gedcom
607
608" Git
609au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG setf gitcommit
610au BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules setf gitconfig
611au BufNewFile,BufRead *.git/modules/*/config	setf gitconfig
612au BufNewFile,BufRead */.config/git/config	setf gitconfig
613if !empty($XDG_CONFIG_HOME)
614  au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config	setf gitconfig
615endif
616au BufNewFile,BufRead git-rebase-todo		setf gitrebase
617au BufRead,BufNewFile .gitsendemail.msg.??????	setf gitsendemail
618au BufNewFile,BufRead .msg.[0-9]*
619      \ if getline(1) =~ '^From.*# This line is ignored.$' |
620      \   setf gitsendemail |
621      \ endif
622au BufNewFile,BufRead *.git/*
623      \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
624      \   setf git |
625      \ endif
626
627" Gkrellmrc
628au BufNewFile,BufRead gkrellmrc,gkrellmrc_?	setf gkrellmrc
629
630" GP scripts (2.0 and onward)
631au BufNewFile,BufRead *.gp,.gprc		setf gp
632
633" GPG
634au BufNewFile,BufRead */.gnupg/options		setf gpg
635au BufNewFile,BufRead */.gnupg/gpg.conf		setf gpg
636au BufNewFile,BufRead */usr/*/gnupg/options.skel setf gpg
637if !empty($GNUPGHOME)
638  au BufNewFile,BufRead $GNUPGHOME/options	setf gpg
639  au BufNewFile,BufRead $GNUPGHOME/gpg.conf	setf gpg
640endif
641
642" gnash(1) configuration files
643au BufNewFile,BufRead gnashrc,.gnashrc,gnashpluginrc,.gnashpluginrc setf gnash
644
645" Gitolite
646au BufNewFile,BufRead gitolite.conf		setf gitolite
647au BufNewFile,BufRead */gitolite-admin/conf/*	call s:StarSetf('gitolite')
648au BufNewFile,BufRead {,.}gitolite.rc,example.gitolite.rc	setf perl
649
650" Gnuplot scripts
651au BufNewFile,BufRead *.gpi			setf gnuplot
652
653" Go (Google)
654au BufNewFile,BufRead *.go			setf go
655
656" GrADS scripts
657au BufNewFile,BufRead *.gs			setf grads
658
659" Gretl
660au BufNewFile,BufRead *.gretl			setf gretl
661
662" Groovy
663au BufNewFile,BufRead *.gradle,*.groovy		setf groovy
664
665" GNU Server Pages
666au BufNewFile,BufRead *.gsp			setf gsp
667
668" Group file
669au BufNewFile,BufRead */etc/group,*/etc/group-,*/etc/group.edit,*/etc/gshadow,*/etc/gshadow-,*/etc/gshadow.edit,*/var/backups/group.bak,*/var/backups/gshadow.bak  setf group
670
671" GTK RC
672au BufNewFile,BufRead .gtkrc,gtkrc		setf gtkrc
673
674" Haml
675au BufNewFile,BufRead *.haml			setf haml
676
677" Hamster Classic | Playground files
678au BufNewFile,BufRead *.hsc,*.hsm		setf hamster
679
680" Haskell
681au BufNewFile,BufRead *.hs,*.hs-boot		setf haskell
682au BufNewFile,BufRead *.lhs			setf lhaskell
683au BufNewFile,BufRead *.chs			setf chaskell
684
685" Haste
686au BufNewFile,BufRead *.ht			setf haste
687au BufNewFile,BufRead *.htpp			setf hastepreproc
688
689" Hercules
690au BufNewFile,BufRead *.vc,*.ev,*.sum,*.errsum	setf hercules
691
692" HEX (Intel)
693au BufNewFile,BufRead *.hex,*.h32		setf hex
694
695" Tilde (must be before HTML)
696au BufNewFile,BufRead *.t.html			setf tilde
697
698" HTML (.shtml and .stm for server side)
699au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm  call dist#ft#FThtml()
700
701" HTML with Ruby - eRuby
702au BufNewFile,BufRead *.erb,*.rhtml		setf eruby
703
704" HTML with M4
705au BufNewFile,BufRead *.html.m4			setf htmlm4
706
707" HTML Cheetah template
708au BufNewFile,BufRead *.tmpl			setf htmlcheetah
709
710" Host config
711au BufNewFile,BufRead */etc/host.conf		setf hostconf
712
713" Hosts access
714au BufNewFile,BufRead */etc/hosts.allow,*/etc/hosts.deny  setf hostsaccess
715
716" Hyper Builder
717au BufNewFile,BufRead *.hb			setf hb
718
719" Httest
720au BufNewFile,BufRead *.htt,*.htb		setf httest
721
722" Icon
723au BufNewFile,BufRead *.icn			setf icon
724
725" IDL (Interface Description Language)
726au BufNewFile,BufRead *.idl			call dist#ft#FTidl()
727
728" Microsoft IDL (Interface Description Language)  Also *.idl
729" MOF = WMI (Windows Management Instrumentation) Managed Object Format
730au BufNewFile,BufRead *.odl,*.mof		setf msidl
731
732" Icewm menu
733au BufNewFile,BufRead */.icewm/menu		setf icemenu
734
735" Indent profile (must come before IDL *.pro!)
736au BufNewFile,BufRead .indent.pro		setf indent
737au BufNewFile,BufRead indent.pro		call dist#ft#ProtoCheck('indent')
738
739" IDL (Interactive Data Language)
740au BufNewFile,BufRead *.pro			call dist#ft#ProtoCheck('idlang')
741
742" Indent RC
743au BufNewFile,BufRead indentrc			setf indent
744
745" Inform
746au BufNewFile,BufRead *.inf,*.INF		setf inform
747
748" Initng
749au BufNewFile,BufRead */etc/initng/*/*.i,*.ii	setf initng
750
751" Innovation Data Processing
752au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c 	setf upstreamdat
753au BufRead,BufNewFile fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c 	setf upstreamlog
754au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog
755au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c 	setf usserverlog
756au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c 	setf usw2kagtlog
757
758" Ipfilter
759au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules	setf ipfilter
760
761" Informix 4GL (source - canonical, include file, I4GL+M4 preproc.)
762au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl	setf fgl
763
764" .INI file for MSDOS
765au BufNewFile,BufRead *.ini			setf dosini
766
767" SysV Inittab
768au BufNewFile,BufRead inittab			setf inittab
769
770" Inno Setup
771au BufNewFile,BufRead *.iss			setf iss
772
773" J
774au BufNewFile,BufRead *.ijs			setf j
775
776" JAL
777au BufNewFile,BufRead *.jal,*.JAL		setf jal
778
779" Jam
780au BufNewFile,BufRead *.jpl,*.jpr		setf jam
781
782" Java
783au BufNewFile,BufRead *.java,*.jav		setf java
784
785" JavaCC
786au BufNewFile,BufRead *.jj,*.jjt		setf javacc
787
788" JavaScript, ECMAScript
789au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx,*.mjs   setf javascript
790
791" Java Server Pages
792au BufNewFile,BufRead *.jsp			setf jsp
793
794" Java Properties resource file (note: doesn't catch font.properties.pl)
795au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_??	setf jproperties
796au BufNewFile,BufRead *.properties_??_??_*	call s:StarSetf('jproperties')
797
798" Jess
799au BufNewFile,BufRead *.clp			setf jess
800
801" Jgraph
802au BufNewFile,BufRead *.jgr			setf jgraph
803
804" Jovial
805au BufNewFile,BufRead *.jov,*.j73,*.jovial	setf jovial
806
807" JSON
808au BufNewFile,BufRead *.json,*.jsonp,*.webmanifest	setf json
809
810" Kixtart
811au BufNewFile,BufRead *.kix			setf kix
812
813" Kimwitu[++]
814au BufNewFile,BufRead *.k			setf kwt
815
816" Kivy
817au BufNewFile,BufRead *.kv			setf kivy
818
819" KDE script
820au BufNewFile,BufRead *.ks			setf kscript
821
822" Kconfig
823au BufNewFile,BufRead Kconfig,Kconfig.debug	setf kconfig
824
825" Lace (ISE)
826au BufNewFile,BufRead *.ace,*.ACE		setf lace
827
828" Latte
829au BufNewFile,BufRead *.latte,*.lte		setf latte
830
831" Limits
832au BufNewFile,BufRead */etc/limits,*/etc/*limits.conf,*/etc/*limits.d/*.conf	setf limits
833
834" LambdaProlog (*.mod too, see Modsim)
835au BufNewFile,BufRead *.sig			setf lprolog
836
837" LDAP LDIF
838au BufNewFile,BufRead *.ldif			setf ldif
839
840" Ld loader
841au BufNewFile,BufRead *.ld			setf ld
842
843" Less
844au BufNewFile,BufRead *.less			setf less
845
846" Lex
847au BufNewFile,BufRead *.lex,*.l,*.lxx,*.l++	setf lex
848
849" Libao
850au BufNewFile,BufRead */etc/libao.conf,*/.libao	setf libao
851
852" Libsensors
853au BufNewFile,BufRead */etc/sensors.conf,*/etc/sensors3.conf	setf sensors
854
855" LFTP
856au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc	setf lftp
857
858" Lifelines (or Lex for C++!)
859au BufNewFile,BufRead *.ll			setf lifelines
860
861" Lilo: Linux loader
862au BufNewFile,BufRead lilo.conf			setf lilo
863
864" Lisp (*.el = ELisp, *.cl = Common Lisp, *.jl = librep Lisp)
865if has("fname_case")
866  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,*.L,.emacs,.sawfishrc setf lisp
867else
868  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,.emacs,.sawfishrc setf lisp
869endif
870
871" SBCL implementation of Common Lisp
872au BufNewFile,BufRead sbclrc,.sbclrc		setf lisp
873
874" Liquid
875au BufNewFile,BufRead *.liquid			setf liquid
876
877" Lite
878au BufNewFile,BufRead *.lite,*.lt		setf lite
879
880" LiteStep RC files
881au BufNewFile,BufRead */LiteStep/*/*.rc		setf litestep
882
883" Login access
884au BufNewFile,BufRead */etc/login.access	setf loginaccess
885
886" Login defs
887au BufNewFile,BufRead */etc/login.defs		setf logindefs
888
889" Logtalk
890au BufNewFile,BufRead *.lgt			setf logtalk
891
892" LOTOS
893au BufNewFile,BufRead *.lot,*.lotos		setf lotos
894
895" Lout (also: *.lt)
896au BufNewFile,BufRead *.lou,*.lout		setf lout
897
898" Lua
899au BufNewFile,BufRead *.lua			setf lua
900
901" Luarocks
902au BufNewFile,BufRead *.rockspec		setf lua
903
904" Linden Scripting Language (Second Life)
905au BufNewFile,BufRead *.lsl			setf lsl
906
907" Lynx style file (or LotusScript!)
908au BufNewFile,BufRead *.lss			setf lss
909
910" M4
911au BufNewFile,BufRead *.m4
912	\ if expand("<afile>") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif
913
914" MaGic Point
915au BufNewFile,BufRead *.mgp			setf mgp
916
917" Mail (for Elm, trn, mutt, muttng, rn, slrn, neomutt)
918au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\\\{6\},neomutt-*-\w\+,neomutt[[:alnum:]_-]\\\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
919
920" Mail aliases
921au BufNewFile,BufRead */etc/mail/aliases,*/etc/aliases	setf mailaliases
922
923" Mailcap configuration file
924au BufNewFile,BufRead .mailcap,mailcap		setf mailcap
925
926" Makefile
927au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make
928
929" MakeIndex
930au BufNewFile,BufRead *.ist,*.mst		setf ist
931
932" Mallard
933au BufNewFile,BufRead *.page			setf mallard
934
935" Manpage
936au BufNewFile,BufRead *.man			setf man
937
938" Man config
939au BufNewFile,BufRead */etc/man.conf,man.config	setf manconf
940
941" Maple V
942au BufNewFile,BufRead *.mv,*.mpl,*.mws		setf maple
943
944" Map (UMN mapserver config file)
945au BufNewFile,BufRead *.map			setf map
946
947" Markdown
948au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md  setf markdown
949
950" Mason
951au BufNewFile,BufRead *.mason,*.mhtml,*.comp	setf mason
952
953" Mathematica, Matlab, Murphi or Objective C
954au BufNewFile,BufRead *.m			call dist#ft#FTm()
955
956" Mathematica notebook
957au BufNewFile,BufRead *.nb			setf mma
958
959" Maya Extension Language
960au BufNewFile,BufRead *.mel			setf mel
961
962" Mercurial (hg) commit file
963au BufNewFile,BufRead hg-editor-*.txt		setf hgcommit
964
965" Mercurial config (looks like generic config file)
966au BufNewFile,BufRead *.hgrc,*hgrc		setf cfg
967
968" Messages (logs mostly)
969au BufNewFile,BufRead */log/{auth,cron,daemon,debug,kern,lpr,mail,messages,news/news,syslog,user}{,.log,.err,.info,.warn,.crit,.notice}{,.[0-9]*,-[0-9]*} setf messages
970
971" Metafont
972au BufNewFile,BufRead *.mf			setf mf
973
974" MetaPost
975au BufNewFile,BufRead *.mp			setf mp
976
977" MGL
978au BufNewFile,BufRead *.mgl			setf mgl
979
980" MIX - Knuth assembly
981au BufNewFile,BufRead *.mix,*.mixal		setf mix
982
983" MMIX or VMS makefile
984au BufNewFile,BufRead *.mms			call dist#ft#FTmms()
985
986" Symbian meta-makefile definition (MMP)
987au BufNewFile,BufRead *.mmp			setf mmp
988
989" Modsim III (or LambdaProlog)
990au BufNewFile,BufRead *.mod
991	\ if getline(1) =~ '\<module\>' |
992	\   setf lprolog |
993	\ else |
994	\   setf modsim3 |
995	\ endif
996
997" Modula 2  (.md removed in favor of Markdown)
998au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi	setf modula2
999
1000" Modula 3 (.m3, .i3, .mg, .ig)
1001au BufNewFile,BufRead *.[mi][3g]		setf modula3
1002
1003" Monk
1004au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc	setf monk
1005
1006" MOO
1007au BufNewFile,BufRead *.moo			setf moo
1008
1009" Modconf
1010au BufNewFile,BufRead */etc/modules.conf,*/etc/modules,*/etc/conf.modules setf modconf
1011
1012" Mplayer config
1013au BufNewFile,BufRead mplayer.conf,*/.mplayer/config	setf mplayerconf
1014
1015" Motorola S record
1016au BufNewFile,BufRead *.s19,*.s28,*.s37,*.mot,*.srec	setf srec
1017
1018" Mrxvtrc
1019au BufNewFile,BufRead mrxvtrc,.mrxvtrc		setf mrxvtrc
1020
1021" Msql
1022au BufNewFile,BufRead *.msql			setf msql
1023
1024" Mysql
1025au BufNewFile,BufRead *.mysql			setf mysql
1026
1027" Mutt setup files (must be before catch *.rc)
1028au BufNewFile,BufRead */etc/Muttrc.d/*		call s:StarSetf('muttrc')
1029
1030" M$ Resource files
1031au BufNewFile,BufRead *.rc,*.rch		setf rc
1032
1033" MuPAD source
1034au BufRead,BufNewFile *.mu			setf mupad
1035
1036" Mush
1037au BufNewFile,BufRead *.mush			setf mush
1038
1039" Mutt setup file (also for Muttng)
1040au BufNewFile,BufRead Mutt{ng,}rc		setf muttrc
1041
1042" N1QL
1043au BufRead,BufNewfile *.n1ql,*.nql		setf n1ql
1044
1045" Nano
1046au BufNewFile,BufRead */etc/nanorc,*.nanorc  	setf nanorc
1047
1048" Nastran input/DMAP
1049"au BufNewFile,BufRead *.dat			setf nastran
1050
1051" Natural
1052au BufNewFile,BufRead *.NS[ACGLMNPS]		setf natural
1053
1054" Noemutt setup file
1055au BufNewFile,BufRead Neomuttrc			setf neomuttrc
1056
1057" Netrc
1058au BufNewFile,BufRead .netrc			setf netrc
1059
1060" Ninja file
1061au BufNewFile,BufRead *.ninja			setf ninja
1062
1063" Novell netware batch files
1064au BufNewFile,BufRead *.ncf			setf ncf
1065
1066" Nroff/Troff (*.ms and *.t are checked below)
1067au BufNewFile,BufRead *.me
1068	\ if expand("<afile>") != "read.me" && expand("<afile>") != "click.me" |
1069	\   setf nroff |
1070	\ endif
1071au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom	setf nroff
1072au BufNewFile,BufRead *.[1-9]			call dist#ft#FTnroff()
1073
1074" Nroff or Objective C++
1075au BufNewFile,BufRead *.mm			call dist#ft#FTmm()
1076
1077" Not Quite C
1078au BufNewFile,BufRead *.nqc			setf nqc
1079
1080" NSE - Nmap Script Engine - uses Lua syntax
1081au BufNewFile,BufRead *.nse			setf lua
1082
1083" NSIS
1084au BufNewFile,BufRead *.nsi,*.nsh		setf nsis
1085
1086" OCAML
1087au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly,.ocamlinit	setf ocaml
1088
1089" Occam
1090au BufNewFile,BufRead *.occ			setf occam
1091
1092" Omnimark
1093au BufNewFile,BufRead *.xom,*.xin		setf omnimark
1094
1095" OpenROAD
1096au BufNewFile,BufRead *.or			setf openroad
1097
1098" OPL
1099au BufNewFile,BufRead *.[Oo][Pp][Ll]		setf opl
1100
1101" Oracle config file
1102au BufNewFile,BufRead *.ora			setf ora
1103
1104" Packet filter conf
1105au BufNewFile,BufRead pf.conf			setf pf
1106
1107" Pam conf
1108au BufNewFile,BufRead */etc/pam.conf		setf pamconf
1109
1110" PApp
1111au BufNewFile,BufRead *.papp,*.pxml,*.pxsl	setf papp
1112
1113" Password file
1114au BufNewFile,BufRead */etc/passwd,*/etc/passwd-,*/etc/passwd.edit,*/etc/shadow,*/etc/shadow-,*/etc/shadow.edit,*/var/backups/passwd.bak,*/var/backups/shadow.bak setf passwd
1115
1116" Pascal (also *.p)
1117au BufNewFile,BufRead *.pas			setf pascal
1118
1119" Delphi project file
1120au BufNewFile,BufRead *.dpr			setf pascal
1121
1122" PDF
1123au BufNewFile,BufRead *.pdf			setf pdf
1124
1125" PCMK - HAE - crm configure edit
1126au BufNewFile,BufRead *.pcmk 			setf pcmk
1127
1128" Perl
1129if has("fname_case")
1130  au BufNewFile,BufRead *.pl,*.PL		call dist#ft#FTpl()
1131else
1132  au BufNewFile,BufRead *.pl			call dist#ft#FTpl()
1133endif
1134au BufNewFile,BufRead *.plx,*.al,*.psgi		setf perl
1135au BufNewFile,BufRead *.p6,*.pm6,*.pl6		setf perl6
1136
1137" Perl, XPM or XPM2
1138au BufNewFile,BufRead *.pm
1139	\ if getline(1) =~ "XPM2" |
1140	\   setf xpm2 |
1141	\ elseif getline(1) =~ "XPM" |
1142	\   setf xpm |
1143	\ else |
1144	\   setf perl |
1145	\ endif
1146
1147" Perl POD
1148au BufNewFile,BufRead *.pod			setf pod
1149au BufNewFile,BufRead *.pod6			setf pod6
1150
1151" Php, php3, php4, etc.
1152" Also Phtml (was used for PHP 2 in the past)
1153" Also .ctp for Cake template file
1154au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp	setf php
1155
1156" Pike and Cmod
1157au BufNewFile,BufRead *.pike,*.pmod		setf pike
1158au BufNewFile,BufRead *.cmod			setf cmod
1159
1160" Pinfo config
1161au BufNewFile,BufRead */etc/pinforc,*/.pinforc	setf pinfo
1162
1163" Palm Resource compiler
1164au BufNewFile,BufRead *.rcp			setf pilrc
1165
1166" Pine config
1167au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex		setf pine
1168
1169" PL/1, PL/I
1170au BufNewFile,BufRead *.pli,*.pl1		setf pli
1171
1172" PL/M (also: *.inp)
1173au BufNewFile,BufRead *.plm,*.p36,*.pac		setf plm
1174
1175" PL/SQL
1176au BufNewFile,BufRead *.pls,*.plsql		setf plsql
1177
1178" PLP
1179au BufNewFile,BufRead *.plp			setf plp
1180
1181" PO and PO template (GNU gettext)
1182au BufNewFile,BufRead *.po,*.pot		setf po
1183
1184" Postfix main config
1185au BufNewFile,BufRead main.cf			setf pfmain
1186
1187" PostScript (+ font files, encapsulated PostScript, Adobe Illustrator)
1188au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai	  setf postscr
1189
1190" PostScript Printer Description
1191au BufNewFile,BufRead *.ppd			setf ppd
1192
1193" Povray
1194au BufNewFile,BufRead *.pov			setf pov
1195
1196" Povray configuration
1197au BufNewFile,BufRead .povrayrc			setf povini
1198
1199" Povray, PHP or assembly
1200au BufNewFile,BufRead *.inc			call dist#ft#FTinc()
1201
1202" Printcap and Termcap
1203au BufNewFile,BufRead *printcap
1204	\ let b:ptcap_type = "print" | setf ptcap
1205au BufNewFile,BufRead *termcap
1206	\ let b:ptcap_type = "term" | setf ptcap
1207
1208" PCCTS / ANTRL
1209"au BufNewFile,BufRead *.g			setf antrl
1210au BufNewFile,BufRead *.g			setf pccts
1211
1212" PPWizard
1213au BufNewFile,BufRead *.it,*.ih			setf ppwiz
1214
1215" Obj 3D file format
1216" TODO: is there a way to avoid MS-Windows Object files?
1217au BufNewFile,BufRead *.obj			setf obj
1218
1219" Oracle Pro*C/C++
1220au BufNewFile,BufRead *.pc			setf proc
1221
1222" Privoxy actions file
1223au BufNewFile,BufRead *.action			setf privoxy
1224
1225" Procmail
1226au BufNewFile,BufRead .procmail,.procmailrc	setf procmail
1227
1228" Progress or CWEB
1229au BufNewFile,BufRead *.w			call dist#ft#FTprogress_cweb()
1230
1231" Progress or assembly
1232au BufNewFile,BufRead *.i			call dist#ft#FTprogress_asm()
1233
1234" Progress or Pascal
1235au BufNewFile,BufRead *.p			call dist#ft#FTprogress_pascal()
1236
1237" Software Distributor Product Specification File (POSIX 1387.2-1995)
1238au BufNewFile,BufRead *.psf			setf psf
1239au BufNewFile,BufRead INDEX,INFO
1240	\ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' |
1241	\   setf psf |
1242	\ endif
1243
1244" Prolog
1245au BufNewFile,BufRead *.pdb			setf prolog
1246
1247" Promela
1248au BufNewFile,BufRead *.pml			setf promela
1249
1250" Google protocol buffers
1251au BufNewFile,BufRead *.proto			setf proto
1252
1253" Protocols
1254au BufNewFile,BufRead */etc/protocols		setf protocols
1255
1256" Pyrex
1257au BufNewFile,BufRead *.pyx,*.pxd		setf pyrex
1258
1259" Python, Python Shell Startup Files
1260" Quixote (Python-based web framework)
1261au BufNewFile,BufRead *.py,*.pyw,.pythonstartup,.pythonrc,*.ptl  setf python
1262
1263" Radiance
1264au BufNewFile,BufRead *.rad,*.mat		setf radiance
1265
1266" Ratpoison config/command files
1267au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc	setf ratpoison
1268
1269" RCS file
1270au BufNewFile,BufRead *\,v			setf rcs
1271
1272" Readline
1273au BufNewFile,BufRead .inputrc,inputrc		setf readline
1274
1275" Registry for MS-Windows
1276au BufNewFile,BufRead *.reg
1277	\ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif
1278
1279" Renderman Interface Bytestream
1280au BufNewFile,BufRead *.rib			setf rib
1281
1282" Rexx
1283au BufNewFile,BufRead *.rex,*.orx,*.rxo,*.rxj,*.jrexx,*.rexxj,*.rexx,*.testGroup,*.testUnit	setf rexx
1284
1285" R (Splus)
1286if has("fname_case")
1287  au BufNewFile,BufRead *.s,*.S			setf r
1288else
1289  au BufNewFile,BufRead *.s			setf r
1290endif
1291
1292" R Help file
1293if has("fname_case")
1294  au BufNewFile,BufRead *.rd,*.Rd		setf rhelp
1295else
1296  au BufNewFile,BufRead *.rd			setf rhelp
1297endif
1298
1299" R noweb file
1300if has("fname_case")
1301  au BufNewFile,BufRead *.Rnw,*.rnw,*.Snw,*.snw		setf rnoweb
1302else
1303  au BufNewFile,BufRead *.rnw,*.snw			setf rnoweb
1304endif
1305
1306" R Markdown file
1307if has("fname_case")
1308  au BufNewFile,BufRead *.Rmd,*.rmd,*.Smd,*.smd		setf rmd
1309else
1310  au BufNewFile,BufRead *.rmd,*.smd			setf rmd
1311endif
1312
1313" R reStructuredText file
1314if has("fname_case")
1315  au BufNewFile,BufRead *.Rrst,*.rrst,*.Srst,*.srst	setf rrst
1316else
1317  au BufNewFile,BufRead *.rrst,*.srst			setf rrst
1318endif
1319
1320" Rexx, Rebol or R
1321au BufNewFile,BufRead *.r,*.R				call dist#ft#FTr()
1322
1323" Remind
1324au BufNewFile,BufRead .reminders,*.remind,*.rem		setf remind
1325
1326" Resolv.conf
1327au BufNewFile,BufRead resolv.conf		setf resolv
1328
1329" Relax NG Compact
1330au BufNewFile,BufRead *.rnc			setf rnc
1331
1332" Relax NG XML
1333au BufNewFile,BufRead *.rng			setf rng
1334
1335" RPL/2
1336au BufNewFile,BufRead *.rpl			setf rpl
1337
1338" Robots.txt
1339au BufNewFile,BufRead robots.txt		setf robots
1340
1341" Rpcgen
1342au BufNewFile,BufRead *.x			setf rpcgen
1343
1344" reStructuredText Documentation Format
1345au BufNewFile,BufRead *.rst			setf rst
1346
1347" RTF
1348au BufNewFile,BufRead *.rtf			setf rtf
1349
1350" Interactive Ruby shell
1351au BufNewFile,BufRead .irbrc,irbrc		setf ruby
1352
1353" Ruby
1354au BufNewFile,BufRead *.rb,*.rbw		setf ruby
1355
1356" RubyGems
1357au BufNewFile,BufRead *.gemspec			setf ruby
1358
1359" Rust
1360au BufNewFile,BufRead *.rs			setf rust
1361
1362" Rackup
1363au BufNewFile,BufRead *.ru			setf ruby
1364
1365" Bundler
1366au BufNewFile,BufRead Gemfile			setf ruby
1367
1368" Ruby on Rails
1369au BufNewFile,BufRead *.builder,*.rxml,*.rjs	setf ruby
1370
1371" Rantfile and Rakefile is like Ruby
1372au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake	setf ruby
1373
1374" S-lang (or shader language, or SmallLisp)
1375au BufNewFile,BufRead *.sl			setf slang
1376
1377" Samba config
1378au BufNewFile,BufRead smb.conf			setf samba
1379
1380" SAS script
1381au BufNewFile,BufRead *.sas			setf sas
1382
1383" Sass
1384au BufNewFile,BufRead *.sass			setf sass
1385
1386" Sather
1387au BufNewFile,BufRead *.sa			setf sather
1388
1389" Scala
1390au BufNewFile,BufRead *.scala			setf scala
1391
1392" SBT - Scala Build Tool
1393au BufNewFile,BufRead *.sbt			setf sbt
1394
1395" Scilab
1396au BufNewFile,BufRead *.sci,*.sce		setf scilab
1397
1398" SCSS
1399au BufNewFile,BufRead *.scss			setf scss
1400
1401" SD: Streaming Descriptors
1402au BufNewFile,BufRead *.sd			setf sd
1403
1404" SDL
1405au BufNewFile,BufRead *.sdl,*.pr		setf sdl
1406
1407" sed
1408au BufNewFile,BufRead *.sed			setf sed
1409
1410" Sieve (RFC 3028)
1411au BufNewFile,BufRead *.siv			setf sieve
1412
1413" Sendmail
1414au BufNewFile,BufRead sendmail.cf		setf sm
1415
1416" Sendmail .mc files are actually m4.  Could also be MS Message text file.
1417au BufNewFile,BufRead *.mc			call dist#ft#McSetf()
1418
1419" Services
1420au BufNewFile,BufRead */etc/services		setf services
1421
1422" Service Location config
1423au BufNewFile,BufRead */etc/slp.conf		setf slpconf
1424
1425" Service Location registration
1426au BufNewFile,BufRead */etc/slp.reg		setf slpreg
1427
1428" Service Location SPI
1429au BufNewFile,BufRead */etc/slp.spi		setf slpspi
1430
1431" Setserial config
1432au BufNewFile,BufRead */etc/serial.conf		setf setserial
1433
1434" SGML
1435au BufNewFile,BufRead *.sgm,*.sgml
1436	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' |
1437	\   setf sgmllnx |
1438	\ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' |
1439	\   let b:docbk_type = "sgml" |
1440	\   let b:docbk_ver = 4 |
1441	\   setf docbk |
1442	\ else |
1443	\   setf sgml |
1444	\ endif
1445
1446" SGMLDECL
1447au BufNewFile,BufRead *.decl,*.dcl,*.dec
1448	\ if getline(1).getline(2).getline(3) =~? '^<!SGML' |
1449	\    setf sgmldecl |
1450	\ endif
1451
1452" SGML catalog file
1453au BufNewFile,BufRead catalog			setf catalog
1454au BufNewFile,BufRead sgml.catalog*		call s:StarSetf('catalog')
1455
1456" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
1457" Gentoo ebuilds and Arch Linux PKGBUILDs are actually bash scripts
1458au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,*.bash,*/{,.}bash[_-]completion{,.d,.sh}{,/*},*.ebuild,*.eclass,PKGBUILD* call dist#ft#SetFileTypeSH("bash")
1459au BufNewFile,BufRead .kshrc*,*.ksh call dist#ft#SetFileTypeSH("ksh")
1460au BufNewFile,BufRead */etc/profile,.profile*,*.sh,*.env call dist#ft#SetFileTypeSH(getline(1))
1461
1462" Shell script (Arch Linux) or PHP file (Drupal)
1463au BufNewFile,BufRead *.install
1464	\ if getline(1) =~ '<?php' |
1465	\   setf php |
1466	\ else |
1467	\   call dist#ft#SetFileTypeSH("bash") |
1468	\ endif
1469
1470" tcsh scripts
1471au BufNewFile,BufRead .tcshrc*,*.tcsh,tcsh.tcshrc,tcsh.login	call dist#ft#SetFileTypeShell("tcsh")
1472
1473" csh scripts, but might also be tcsh scripts (on some systems csh is tcsh)
1474au BufNewFile,BufRead .login*,.cshrc*,csh.cshrc,csh.login,csh.logout,*.csh,.alias  call dist#ft#CSH()
1475
1476" Z-Shell script
1477au BufNewFile,BufRead .zprofile,*/etc/zprofile,.zfbfmarks  setf zsh
1478au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump*  call s:StarSetf('zsh')
1479au BufNewFile,BufRead *.zsh			setf zsh
1480
1481" Scheme
1482au BufNewFile,BufRead *.scm,*.ss,*.rkt		setf scheme
1483
1484" Screen RC
1485au BufNewFile,BufRead .screenrc,screenrc	setf screen
1486
1487" Simula
1488au BufNewFile,BufRead *.sim			setf simula
1489
1490" SINDA
1491au BufNewFile,BufRead *.sin,*.s85		setf sinda
1492
1493" SiSU
1494au BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst,*._sst setf sisu
1495au BufNewFile,BufRead *.sst.meta,*.-sst.meta,*._sst.meta setf sisu
1496
1497" SKILL
1498au BufNewFile,BufRead *.il,*.ils,*.cdf		setf skill
1499
1500" SLRN
1501au BufNewFile,BufRead .slrnrc			setf slrnrc
1502au BufNewFile,BufRead *.score			setf slrnsc
1503
1504" Smalltalk (and TeX)
1505au BufNewFile,BufRead *.st			setf st
1506au BufNewFile,BufRead *.cls
1507	\ if getline(1) =~ '^%' |
1508	\  setf tex |
1509	\ elseif getline(1)[0] == '#' && getline(1) =~ 'rexx' |
1510	\  setf rexx |
1511	\ else |
1512	\  setf st |
1513	\ endif
1514
1515" Smarty templates
1516au BufNewFile,BufRead *.tpl			setf smarty
1517
1518" SMIL or XML
1519au BufNewFile,BufRead *.smil
1520	\ if getline(1) =~ '<?\s*xml.*?>' |
1521	\   setf xml |
1522	\ else |
1523	\   setf smil |
1524	\ endif
1525
1526" SMIL or SNMP MIB file
1527au BufNewFile,BufRead *.smi
1528	\ if getline(1) =~ '\<smil\>' |
1529	\   setf smil |
1530	\ else |
1531	\   setf mib |
1532	\ endif
1533
1534" SMITH
1535au BufNewFile,BufRead *.smt,*.smith		setf smith
1536
1537" Snobol4 and spitbol
1538au BufNewFile,BufRead *.sno,*.spt		setf snobol4
1539
1540" SNMP MIB files
1541au BufNewFile,BufRead *.mib,*.my		setf mib
1542
1543" Snort Configuration
1544au BufNewFile,BufRead *.hog,snort.conf,vision.conf	setf hog
1545au BufNewFile,BufRead *.rules			call dist#ft#FTRules()
1546
1547" Spec (Linux RPM)
1548au BufNewFile,BufRead *.spec			setf spec
1549
1550" Speedup (AspenTech plant simulator)
1551au BufNewFile,BufRead *.speedup,*.spdata,*.spd	setf spup
1552
1553" Slice
1554au BufNewFile,BufRead *.ice			setf slice
1555
1556" Spice
1557au BufNewFile,BufRead *.sp,*.spice		setf spice
1558
1559" Spyce
1560au BufNewFile,BufRead *.spy,*.spi		setf spyce
1561
1562" Squid
1563au BufNewFile,BufRead squid.conf		setf squid
1564
1565" SQL for Oracle Designer
1566au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks	setf sql
1567
1568" SQL
1569au BufNewFile,BufRead *.sql			call dist#ft#SQL()
1570
1571" SQLJ
1572au BufNewFile,BufRead *.sqlj			setf sqlj
1573
1574" SQR
1575au BufNewFile,BufRead *.sqr,*.sqi		setf sqr
1576
1577" OpenSSH configuration
1578au BufNewFile,BufRead ssh_config,*/.ssh/config	setf sshconfig
1579
1580" OpenSSH server configuration
1581au BufNewFile,BufRead sshd_config		setf sshdconfig
1582
1583" Stata
1584au BufNewFile,BufRead *.ado,*.do,*.imata,*.mata	setf stata
1585" Also *.class, but not when it's a Java bytecode file
1586au BufNewFile,BufRead *.class
1587	\ if getline(1) !~ "^\xca\xfe\xba\xbe" | setf stata | endif
1588
1589" SMCL
1590au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl	setf smcl
1591
1592" Stored Procedures
1593au BufNewFile,BufRead *.stp			setf stp
1594
1595" Standard ML
1596au BufNewFile,BufRead *.sml			setf sml
1597
1598" Sratus VOS command macro
1599au BufNewFile,BufRead *.cm			setf voscm
1600
1601" Sysctl
1602au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf	setf sysctl
1603
1604" Systemd unit files
1605au BufNewFile,BufRead */systemd/*.{automount,mount,path,service,socket,swap,target,timer}	setf systemd
1606
1607" Synopsys Design Constraints
1608au BufNewFile,BufRead *.sdc			setf sdc
1609
1610" Sudoers
1611au BufNewFile,BufRead */etc/sudoers,sudoers.tmp	setf sudoers
1612
1613" SVG (Scalable Vector Graphics)
1614au BufNewFile,BufRead *.svg			setf svg
1615
1616" Tads (or Nroff or Perl test file)
1617au BufNewFile,BufRead *.t
1618	\ if !dist#ft#FTnroff() && !dist#ft#FTperl() | setf tads | endif
1619
1620" Tags
1621au BufNewFile,BufRead tags			setf tags
1622
1623" TAK
1624au BufNewFile,BufRead *.tak			setf tak
1625
1626" Task
1627au BufRead,BufNewFile {pending,completed,undo}.data  setf taskdata
1628au BufRead,BufNewFile *.task			setf taskedit
1629
1630" Tcl (JACL too)
1631au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl	setf tcl
1632
1633" TealInfo
1634au BufNewFile,BufRead *.tli			setf tli
1635
1636" Telix Salt
1637au BufNewFile,BufRead *.slt			setf tsalt
1638
1639" Tera Term Language
1640au BufRead,BufNewFile *.ttl			setf teraterm
1641
1642" Terminfo
1643au BufNewFile,BufRead *.ti			setf terminfo
1644
1645" TeX
1646au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl	setf tex
1647au BufNewFile,BufRead *.tex			call dist#ft#FTtex()
1648
1649" ConTeXt
1650au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi   setf context
1651
1652" Texinfo
1653au BufNewFile,BufRead *.texinfo,*.texi,*.txi	setf texinfo
1654
1655" TeX configuration
1656au BufNewFile,BufRead texmf.cnf			setf texmf
1657
1658" Tidy config
1659au BufNewFile,BufRead .tidyrc,tidyrc		setf tidy
1660
1661" TF mud client
1662au BufNewFile,BufRead *.tf,.tfrc,tfrc		setf tf
1663
1664" tmux configuration
1665au BufNewFile,BufRead {.,}tmux*.conf		setf tmux
1666
1667" TPP - Text Presentation Program
1668au BufNewFile,BufReadPost *.tpp			setf tpp
1669
1670" Treetop
1671au BufRead,BufNewFile *.treetop			setf treetop
1672
1673" Trustees
1674au BufNewFile,BufRead trustees.conf		setf trustees
1675
1676" TSS - Geometry
1677au BufNewFile,BufReadPost *.tssgm		setf tssgm
1678
1679" TSS - Optics
1680au BufNewFile,BufReadPost *.tssop		setf tssop
1681
1682" TSS - Command Line (temporary)
1683au BufNewFile,BufReadPost *.tsscl		setf tsscl
1684
1685" TWIG files
1686au BufNewFile,BufReadPost *.twig		setf twig
1687
1688" Motif UIT/UIL files
1689au BufNewFile,BufRead *.uit,*.uil		setf uil
1690
1691" Udev conf
1692au BufNewFile,BufRead */etc/udev/udev.conf	setf udevconf
1693
1694" Udev permissions
1695au BufNewFile,BufRead */etc/udev/permissions.d/*.permissions setf udevperm
1696"
1697" Udev symlinks config
1698au BufNewFile,BufRead */etc/udev/cdsymlinks.conf	setf sh
1699
1700" UnrealScript
1701au BufNewFile,BufRead *.uc			setf uc
1702
1703" Updatedb
1704au BufNewFile,BufRead */etc/updatedb.conf	setf updatedb
1705
1706" Upstart (init(8)) config files
1707au BufNewFile,BufRead */usr/share/upstart/*.conf	       setf upstart
1708au BufNewFile,BufRead */usr/share/upstart/*.override	       setf upstart
1709au BufNewFile,BufRead */etc/init/*.conf,*/etc/init/*.override  setf upstart
1710au BufNewFile,BufRead */.init/*.conf,*/.init/*.override	       setf upstart
1711au BufNewFile,BufRead */.config/upstart/*.conf		       setf upstart
1712au BufNewFile,BufRead */.config/upstart/*.override	       setf upstart
1713
1714" Vera
1715au BufNewFile,BufRead *.vr,*.vri,*.vrh		setf vera
1716
1717" Verilog HDL
1718au BufNewFile,BufRead *.v			setf verilog
1719
1720" Verilog-AMS HDL
1721au BufNewFile,BufRead *.va,*.vams		setf verilogams
1722
1723" SystemVerilog
1724au BufNewFile,BufRead *.sv,*.svh		setf systemverilog
1725
1726" VHDL
1727au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst  setf vhdl
1728au BufNewFile,BufRead *.vhdl_[0-9]*		call s:StarSetf('vhdl')
1729
1730" Vim script
1731au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc	setf vim
1732
1733" Viminfo file
1734au BufNewFile,BufRead .viminfo,_viminfo		setf viminfo
1735
1736" Virata Config Script File or Drupal module
1737au BufRead,BufNewFile *.hw,*.module,*.pkg
1738	\ if getline(1) =~ '<?php' |
1739	\   setf php |
1740	\ else |
1741	\   setf virata |
1742	\ endif
1743
1744" Visual Basic (also uses *.bas) or FORM
1745au BufNewFile,BufRead *.frm			call dist#ft#FTVB("form")
1746
1747" SaxBasic is close to Visual Basic
1748au BufNewFile,BufRead *.sba			setf vb
1749
1750" Vgrindefs file
1751au BufNewFile,BufRead vgrindefs			setf vgrindefs
1752
1753" VRML V1.0c
1754au BufNewFile,BufRead *.wrl			setf vrml
1755
1756" Vroom (vim testing and executable documentation)
1757au BufNewFile,BufRead *.vroom			setf vroom
1758
1759" Webmacro
1760au BufNewFile,BufRead *.wm			setf webmacro
1761
1762" Wget config
1763au BufNewFile,BufRead .wgetrc,wgetrc		setf wget
1764
1765" Website MetaLanguage
1766au BufNewFile,BufRead *.wml			setf wml
1767
1768" Winbatch
1769au BufNewFile,BufRead *.wbt			setf winbatch
1770
1771" WSML
1772au BufNewFile,BufRead *.wsml			setf wsml
1773
1774" WPL
1775au BufNewFile,BufRead *.wpl			setf xml
1776
1777" WvDial
1778au BufNewFile,BufRead wvdial.conf,.wvdialrc	setf wvdial
1779
1780" CVS RC file
1781au BufNewFile,BufRead .cvsrc			setf cvsrc
1782
1783" CVS commit file
1784au BufNewFile,BufRead cvs\d\+			setf cvs
1785
1786" WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment
1787" lines in a WEB file).
1788au BufNewFile,BufRead *.web
1789	\ if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" |
1790	\   setf web |
1791	\ else |
1792	\   setf winbatch |
1793	\ endif
1794
1795" Windows Scripting Host and Windows Script Component
1796au BufNewFile,BufRead *.ws[fc]			setf wsh
1797
1798" XHTML
1799au BufNewFile,BufRead *.xhtml,*.xht		setf xhtml
1800
1801" X Pixmap (dynamically sets colors, use BufEnter to make it work better)
1802au BufEnter *.xpm
1803	\ if getline(1) =~ "XPM2" |
1804	\   setf xpm2 |
1805	\ else |
1806	\   setf xpm |
1807	\ endif
1808au BufEnter *.xpm2				setf xpm2
1809
1810" XFree86 config
1811au BufNewFile,BufRead XF86Config
1812	\ if getline(1) =~ '\<XConfigurator\>' |
1813	\   let b:xf86conf_xfree86_version = 3 |
1814	\ endif |
1815	\ setf xf86conf
1816au BufNewFile,BufRead */xorg.conf.d/*.conf
1817	\ let b:xf86conf_xfree86_version = 4 |
1818	\ setf xf86conf
1819
1820" Xorg config
1821au BufNewFile,BufRead xorg.conf,xorg.conf-4	let b:xf86conf_xfree86_version = 4 | setf xf86conf
1822
1823" Xinetd conf
1824au BufNewFile,BufRead */etc/xinetd.conf		setf xinetd
1825
1826" XS Perl extension interface language
1827au BufNewFile,BufRead *.xs			setf xs
1828
1829" X resources file
1830au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults
1831
1832" Xmath
1833au BufNewFile,BufRead *.msc,*.msf		setf xmath
1834au BufNewFile,BufRead *.ms
1835	\ if !dist#ft#FTnroff() | setf xmath | endif
1836
1837" XML  specific variants: docbk and xbl
1838au BufNewFile,BufRead *.xml			call dist#ft#FTxml()
1839
1840" XMI (holding UML models) is also XML
1841au BufNewFile,BufRead *.xmi			setf xml
1842
1843" CSPROJ files are Visual Studio.NET's XML-based project config files
1844au BufNewFile,BufRead *.csproj,*.csproj.user	setf xml
1845
1846" Qt Linguist translation source and Qt User Interface Files are XML
1847au BufNewFile,BufRead *.ts,*.ui			setf xml
1848
1849" TPM's are RDF-based descriptions of TeX packages (Nikolai Weibull)
1850au BufNewFile,BufRead *.tpm			setf xml
1851
1852" Xdg menus
1853au BufNewFile,BufRead */etc/xdg/menus/*.menu	setf xml
1854
1855" ATI graphics driver configuration
1856au BufNewFile,BufRead fglrxrc			setf xml
1857
1858" XLIFF (XML Localisation Interchange File Format) is also XML
1859au BufNewFile,BufRead *.xlf			setf xml
1860au BufNewFile,BufRead *.xliff			setf xml
1861
1862" XML User Interface Language
1863au BufNewFile,BufRead *.xul			setf xml
1864
1865" X11 xmodmap (also see below)
1866au BufNewFile,BufRead *Xmodmap			setf xmodmap
1867
1868" Xquery
1869au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy	setf xquery
1870
1871" XSD
1872au BufNewFile,BufRead *.xsd			setf xsd
1873
1874" Xslt
1875au BufNewFile,BufRead *.xsl,*.xslt		setf xslt
1876
1877" Yacc
1878au BufNewFile,BufRead *.yy,*.yxx,*.y++		setf yacc
1879
1880" Yacc or racc
1881au BufNewFile,BufRead *.y			call dist#ft#FTy()
1882
1883" Yaml or Raml
1884au BufNewFile,BufRead *.yaml,*.yml,*.raml	setf yaml
1885
1886" yum conf (close enough to dosini)
1887au BufNewFile,BufRead */etc/yum.conf		setf dosini
1888
1889" Zimbu
1890au BufNewFile,BufRead *.zu			setf zimbu
1891" Zimbu Templates
1892au BufNewFile,BufRead *.zut			setf zimbutempl
1893
1894" Zope
1895"   dtml (zope dynamic template markup language), pt (zope page template),
1896"   cpt (zope form controller page template)
1897au BufNewFile,BufRead *.dtml,*.pt,*.cpt		call dist#ft#FThtml()
1898"   zsql (zope sql method)
1899au BufNewFile,BufRead *.zsql			call dist#ft#SQL()
1900
1901" Z80 assembler asz80
1902au BufNewFile,BufRead *.z8a			setf z8a
1903
1904augroup END
1905
1906
1907" Source the user-specified filetype file, for backwards compatibility with
1908" Vim 5.x.
1909if exists("myfiletypefile") && filereadable(expand(myfiletypefile))
1910  execute "source " . myfiletypefile
1911endif
1912
1913
1914" Check for "*" after loading myfiletypefile, so that scripts.vim is only used
1915" when there are no matching file name extensions.
1916" Don't do this for compressed files.
1917augroup filetypedetect
1918au BufNewFile,BufRead *
1919	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
1920	\ | runtime! scripts.vim | endif
1921au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif
1922
1923
1924" Extra checks for when no filetype has been detected now.  Mostly used for
1925" patterns that end in "*".  E.g., "zsh*" matches "zsh.vim", but that's a Vim
1926" script file.
1927" Most of these should call s:StarSetf() to avoid names ending in .gz and the
1928" like are used.
1929
1930" More Apache style config files
1931au BufNewFile,BufRead */etc/proftpd/*.conf*,*/etc/proftpd/conf.*/*	call s:StarSetf('apachestyle')
1932
1933" More Apache config files
1934au BufNewFile,BufRead access.conf*,apache.conf*,apache2.conf*,httpd.conf*,srm.conf*	call s:StarSetf('apache')
1935au BufNewFile,BufRead */etc/apache2/*.conf*,*/etc/apache2/conf.*/*,*/etc/apache2/mods-*/*,*/etc/apache2/sites-*/*,*/etc/httpd/conf.d/*.conf*		call s:StarSetf('apache')
1936
1937" Asterisk config file
1938au BufNewFile,BufRead *asterisk/*.conf*		call s:StarSetf('asterisk')
1939au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm')
1940
1941" Bazaar version control
1942au BufNewFile,BufRead bzr_log.*			setf bzr
1943
1944" Bazel build file
1945if !has("fname_case")
1946  au BufNewFile,BufRead BUILD			setf bzl
1947endif
1948
1949" BIND zone
1950au BufNewFile,BufRead */named/db.*,*/bind/db.*	call s:StarSetf('bindzone')
1951
1952" Calendar
1953au BufNewFile,BufRead */.calendar/*,
1954	\*/share/calendar/*/calendar.*,*/share/calendar/calendar.*
1955	\					call s:StarSetf('calendar')
1956
1957" Changelog
1958au BufNewFile,BufRead [cC]hange[lL]og*
1959	\ if getline(1) =~ '; urgency='
1960	\|  call s:StarSetf('debchangelog')
1961	\|else
1962	\|  call s:StarSetf('changelog')
1963	\|endif
1964
1965" Crontab
1966au BufNewFile,BufRead crontab,crontab.*,*/etc/cron.d/*		call s:StarSetf('crontab')
1967
1968" dnsmasq(8) configuration
1969au BufNewFile,BufRead */etc/dnsmasq.d/*		call s:StarSetf('dnsmasq')
1970
1971" Dracula
1972au BufNewFile,BufRead drac.*			call s:StarSetf('dracula')
1973
1974" Fvwm
1975au BufNewFile,BufRead */.fvwm/*			call s:StarSetf('fvwm')
1976au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
1977	\ let b:fvwm_version = 1 | call s:StarSetf('fvwm')
1978au BufNewFile,BufRead *fvwm2rc*
1979	\ if expand("<afile>:e") == "m4"
1980	\|  call s:StarSetf('fvwm2m4')
1981	\|else
1982	\|  let b:fvwm_version = 2 | call s:StarSetf('fvwm')
1983	\|endif
1984
1985" Gedcom
1986au BufNewFile,BufRead */tmp/lltmp*		call s:StarSetf('gedcom')
1987
1988" GTK RC
1989au BufNewFile,BufRead .gtkrc*,gtkrc*		call s:StarSetf('gtkrc')
1990
1991" Jam
1992au BufNewFile,BufRead Prl*.*,JAM*.*		call s:StarSetf('jam')
1993
1994" Jargon
1995au! BufNewFile,BufRead *jarg*
1996	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE'
1997	\|  call s:StarSetf('jargon')
1998	\|endif
1999
2000" Kconfig
2001au BufNewFile,BufRead Kconfig.*			call s:StarSetf('kconfig')
2002
2003" Lilo: Linux loader
2004au BufNewFile,BufRead lilo.conf*		call s:StarSetf('lilo')
2005
2006" Logcheck
2007au BufNewFile,BufRead */etc/logcheck/*.d*/*	call s:StarSetf('logcheck')
2008
2009" Makefile
2010au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')
2011
2012" Ruby Makefile
2013au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')
2014
2015" Mail (also matches muttrc.vim, so this is below the other checks)
2016au BufNewFile,BufRead {neo,}mutt[[:alnum:]._-]\\\{6\}	setf mail
2017
2018au BufNewFile,BufRead reportbug-*		call s:StarSetf('mail')
2019
2020" Modconf
2021au BufNewFile,BufRead */etc/modutils/*
2022	\ if executable(expand("<afile>")) != 1
2023	\|  call s:StarSetf('modconf')
2024	\|endif
2025au BufNewFile,BufRead */etc/modprobe.*		call s:StarSetf('modconf')
2026
2027" Mutt setup file
2028au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
2029au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc*		call s:StarSetf('muttrc')
2030
2031" Neomutt setup file
2032au BufNewFile,BufRead .neomuttrc*,*/.neomutt/neomuttrc*	call s:StarSetf('neomuttrc')
2033au BufNewFile,BufRead neomuttrc*,Neomuttrc*		call s:StarSetf('neomuttrc')
2034
2035" Nroff macros
2036au BufNewFile,BufRead tmac.*			call s:StarSetf('nroff')
2037
2038" OpenBSD hostname.if
2039au BufNewFile,BufRead /etc/hostname.*		call s:StarSetf('config')
2040
2041" Pam conf
2042au BufNewFile,BufRead */etc/pam.d/*		call s:StarSetf('pamconf')
2043
2044" Printcap and Termcap
2045au BufNewFile,BufRead *printcap*
2046	\ if !did_filetype()
2047	\|  let b:ptcap_type = "print" | call s:StarSetf('ptcap')
2048	\|endif
2049au BufNewFile,BufRead *termcap*
2050	\ if !did_filetype()
2051	\|  let b:ptcap_type = "term" | call s:StarSetf('ptcap')
2052	\|endif
2053
2054" ReDIF
2055" Only used when the .rdf file was not detected to be XML.
2056au BufRead,BufNewFile *.rdf			call dist#ft#Redif()
2057
2058" Remind
2059au BufNewFile,BufRead .reminders*		call s:StarSetf('remind')
2060
2061" Vim script
2062au BufNewFile,BufRead *vimrc*			call s:StarSetf('vim')
2063
2064" Subversion commit file
2065au BufNewFile,BufRead svn-commit*.tmp		setf svn
2066
2067" X resources file
2068au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults')
2069
2070" XFree86 config
2071au BufNewFile,BufRead XF86Config-4*
2072	\ let b:xf86conf_xfree86_version = 4 | call s:StarSetf('xf86conf')
2073au BufNewFile,BufRead XF86Config*
2074	\ if getline(1) =~ '\<XConfigurator\>'
2075	\|  let b:xf86conf_xfree86_version = 3
2076	\|endif
2077	\|call s:StarSetf('xf86conf')
2078
2079" X11 xmodmap
2080au BufNewFile,BufRead *xmodmap*			call s:StarSetf('xmodmap')
2081
2082" Xinetd conf
2083au BufNewFile,BufRead */etc/xinetd.d/*		call s:StarSetf('xinetd')
2084
2085" yum conf (close enough to dosini)
2086au BufNewFile,BufRead */etc/yum.repos.d/*	call s:StarSetf('dosini')
2087
2088" Z-Shell script
2089au BufNewFile,BufRead zsh*,zlog*		call s:StarSetf('zsh')
2090
2091
2092" Plain text files, needs to be far down to not override others.  This avoids
2093" the "conf" type being used if there is a line starting with '#'.
2094au BufNewFile,BufRead *.text,README		setf text
2095
2096" Help files match *.txt but should have a last line that is a modeline.
2097au BufNewFile,BufRead *.txt
2098	\  if getline('$') !~ 'vim:.*ft=help'
2099	\|   setf text
2100	\| endif
2101
2102
2103" Use the filetype detect plugins.  They may overrule any of the previously
2104" detected filetypes.
2105runtime! ftdetect/*.vim
2106
2107" NOTE: The above command could have ended the filetypedetect autocmd group
2108" and started another one. Let's make sure it has ended to get to a consistent
2109" state.
2110augroup END
2111
2112" Generic configuration file. Use FALLBACK, it's just guessing!
2113au filetypedetect BufNewFile,BufRead,StdinReadPost *
2114	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
2115	\    && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
2116	\	|| getline(4) =~ '^#' || getline(5) =~ '^#') |
2117	\   setf FALLBACK conf |
2118	\ endif
2119
2120
2121" If the GUI is already running, may still need to install the Syntax menu.
2122" Don't do it when the 'M' flag is included in 'guioptions'.
2123if has("menu") && has("gui_running")
2124      \ && !exists("did_install_syntax_menu") && &guioptions !~# "M"
2125  source <sfile>:p:h/menu.vim
2126endif
2127
2128" Function called for testing all functions defined here.  These are
2129" script-local, thus need to be executed here.
2130" Returns a string with error messages (hopefully empty).
2131func! TestFiletypeFuncs(testlist)
2132  let output = ''
2133  for f in a:testlist
2134    try
2135      exe f
2136    catch
2137      let output = output . "\n" . f . ": " . v:exception
2138    endtry
2139  endfor
2140  return output
2141endfunc
2142
2143" Restore 'cpoptions'
2144let &cpo = s:cpo_save
2145unlet s:cpo_save
2146