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