xref: /vim-8.2.3635/runtime/filetype.vim (revision dabfde04)
1" Vim support file to detect file types
2"
3" Maintainer:	Bram Moolenaar <[email protected]>
4" Last Change:	2019 May 06
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" Some template.  Used to be HTML Cheetah.
717au BufNewFile,BufRead *.tmpl			setf template
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" Pipenv Pipfiles
1178au BufNewFile,BufRead Pipfile			setf config
1179au BufNewFile,BufRead Pipfile.lock		setf json
1180
1181" PL/1, PL/I
1182au BufNewFile,BufRead *.pli,*.pl1		setf pli
1183
1184" PL/M (also: *.inp)
1185au BufNewFile,BufRead *.plm,*.p36,*.pac		setf plm
1186
1187" PL/SQL
1188au BufNewFile,BufRead *.pls,*.plsql		setf plsql
1189
1190" PLP
1191au BufNewFile,BufRead *.plp			setf plp
1192
1193" PO and PO template (GNU gettext)
1194au BufNewFile,BufRead *.po,*.pot		setf po
1195
1196" Postfix main config
1197au BufNewFile,BufRead main.cf			setf pfmain
1198
1199" PostScript (+ font files, encapsulated PostScript, Adobe Illustrator)
1200au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai	  setf postscr
1201
1202" PostScript Printer Description
1203au BufNewFile,BufRead *.ppd			setf ppd
1204
1205" Povray
1206au BufNewFile,BufRead *.pov			setf pov
1207
1208" Povray configuration
1209au BufNewFile,BufRead .povrayrc			setf povini
1210
1211" Povray, PHP or assembly
1212au BufNewFile,BufRead *.inc			call dist#ft#FTinc()
1213
1214" Printcap and Termcap
1215au BufNewFile,BufRead *printcap
1216	\ let b:ptcap_type = "print" | setf ptcap
1217au BufNewFile,BufRead *termcap
1218	\ let b:ptcap_type = "term" | setf ptcap
1219
1220" PCCTS / ANTRL
1221"au BufNewFile,BufRead *.g			setf antrl
1222au BufNewFile,BufRead *.g			setf pccts
1223
1224" PPWizard
1225au BufNewFile,BufRead *.it,*.ih			setf ppwiz
1226
1227" Obj 3D file format
1228" TODO: is there a way to avoid MS-Windows Object files?
1229au BufNewFile,BufRead *.obj			setf obj
1230
1231" Oracle Pro*C/C++
1232au BufNewFile,BufRead *.pc			setf proc
1233
1234" Privoxy actions file
1235au BufNewFile,BufRead *.action			setf privoxy
1236
1237" Procmail
1238au BufNewFile,BufRead .procmail,.procmailrc	setf procmail
1239
1240" Progress or CWEB
1241au BufNewFile,BufRead *.w			call dist#ft#FTprogress_cweb()
1242
1243" Progress or assembly
1244au BufNewFile,BufRead *.i			call dist#ft#FTprogress_asm()
1245
1246" Progress or Pascal
1247au BufNewFile,BufRead *.p			call dist#ft#FTprogress_pascal()
1248
1249" Software Distributor Product Specification File (POSIX 1387.2-1995)
1250au BufNewFile,BufRead *.psf			setf psf
1251au BufNewFile,BufRead INDEX,INFO
1252	\ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' |
1253	\   setf psf |
1254	\ endif
1255
1256" Prolog
1257au BufNewFile,BufRead *.pdb			setf prolog
1258
1259" Promela
1260au BufNewFile,BufRead *.pml			setf promela
1261
1262" Google protocol buffers
1263au BufNewFile,BufRead *.proto			setf proto
1264
1265" Protocols
1266au BufNewFile,BufRead */etc/protocols		setf protocols
1267
1268" Pyrex
1269au BufNewFile,BufRead *.pyx,*.pxd		setf pyrex
1270
1271" Python, Python Shell Startup and Python Stub Files
1272" Quixote (Python-based web framework)
1273au BufNewFile,BufRead *.py,*.pyw,.pythonstartup,.pythonrc,*.ptl,*.pyi  setf python
1274
1275" Radiance
1276au BufNewFile,BufRead *.rad,*.mat		setf radiance
1277
1278" Ratpoison config/command files
1279au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc	setf ratpoison
1280
1281" RCS file
1282au BufNewFile,BufRead *\,v			setf rcs
1283
1284" Readline
1285au BufNewFile,BufRead .inputrc,inputrc		setf readline
1286
1287" Registry for MS-Windows
1288au BufNewFile,BufRead *.reg
1289	\ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif
1290
1291" Renderman Interface Bytestream
1292au BufNewFile,BufRead *.rib			setf rib
1293
1294" Rexx
1295au BufNewFile,BufRead *.rex,*.orx,*.rxo,*.rxj,*.jrexx,*.rexxj,*.rexx,*.testGroup,*.testUnit	setf rexx
1296
1297" R (Splus)
1298if has("fname_case")
1299  au BufNewFile,BufRead *.s,*.S			setf r
1300else
1301  au BufNewFile,BufRead *.s			setf r
1302endif
1303
1304" R Help file
1305if has("fname_case")
1306  au BufNewFile,BufRead *.rd,*.Rd		setf rhelp
1307else
1308  au BufNewFile,BufRead *.rd			setf rhelp
1309endif
1310
1311" R noweb file
1312if has("fname_case")
1313  au BufNewFile,BufRead *.Rnw,*.rnw,*.Snw,*.snw		setf rnoweb
1314else
1315  au BufNewFile,BufRead *.rnw,*.snw			setf rnoweb
1316endif
1317
1318" R Markdown file
1319if has("fname_case")
1320  au BufNewFile,BufRead *.Rmd,*.rmd,*.Smd,*.smd		setf rmd
1321else
1322  au BufNewFile,BufRead *.rmd,*.smd			setf rmd
1323endif
1324
1325" R reStructuredText file
1326if has("fname_case")
1327  au BufNewFile,BufRead *.Rrst,*.rrst,*.Srst,*.srst	setf rrst
1328else
1329  au BufNewFile,BufRead *.rrst,*.srst			setf rrst
1330endif
1331
1332" Rexx, Rebol or R
1333au BufNewFile,BufRead *.r,*.R				call dist#ft#FTr()
1334
1335" Remind
1336au BufNewFile,BufRead .reminders,*.remind,*.rem		setf remind
1337
1338" Resolv.conf
1339au BufNewFile,BufRead resolv.conf		setf resolv
1340
1341" Relax NG Compact
1342au BufNewFile,BufRead *.rnc			setf rnc
1343
1344" Relax NG XML
1345au BufNewFile,BufRead *.rng			setf rng
1346
1347" RPL/2
1348au BufNewFile,BufRead *.rpl			setf rpl
1349
1350" Robots.txt
1351au BufNewFile,BufRead robots.txt		setf robots
1352
1353" Rpcgen
1354au BufNewFile,BufRead *.x			setf rpcgen
1355
1356" reStructuredText Documentation Format
1357au BufNewFile,BufRead *.rst			setf rst
1358
1359" RTF
1360au BufNewFile,BufRead *.rtf			setf rtf
1361
1362" Interactive Ruby shell
1363au BufNewFile,BufRead .irbrc,irbrc		setf ruby
1364
1365" Ruby
1366au BufNewFile,BufRead *.rb,*.rbw		setf ruby
1367
1368" RubyGems
1369au BufNewFile,BufRead *.gemspec			setf ruby
1370
1371" Rust
1372au BufNewFile,BufRead *.rs			setf rust
1373
1374" Rackup
1375au BufNewFile,BufRead *.ru			setf ruby
1376
1377" Bundler
1378au BufNewFile,BufRead Gemfile			setf ruby
1379
1380" Ruby on Rails
1381au BufNewFile,BufRead *.builder,*.rxml,*.rjs	setf ruby
1382
1383" Rantfile and Rakefile is like Ruby
1384au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake	setf ruby
1385
1386" S-lang (or shader language, or SmallLisp)
1387au BufNewFile,BufRead *.sl			setf slang
1388
1389" Samba config
1390au BufNewFile,BufRead smb.conf			setf samba
1391
1392" SAS script
1393au BufNewFile,BufRead *.sas			setf sas
1394
1395" Sass
1396au BufNewFile,BufRead *.sass			setf sass
1397
1398" Sather
1399au BufNewFile,BufRead *.sa			setf sather
1400
1401" Scala
1402au BufNewFile,BufRead *.scala			setf scala
1403
1404" SBT - Scala Build Tool
1405au BufNewFile,BufRead *.sbt			setf sbt
1406
1407" Scilab
1408au BufNewFile,BufRead *.sci,*.sce		setf scilab
1409
1410" SCSS
1411au BufNewFile,BufRead *.scss			setf scss
1412
1413" SD: Streaming Descriptors
1414au BufNewFile,BufRead *.sd			setf sd
1415
1416" SDL
1417au BufNewFile,BufRead *.sdl,*.pr		setf sdl
1418
1419" sed
1420au BufNewFile,BufRead *.sed			setf sed
1421
1422" Sieve (RFC 3028, 5228)
1423au BufNewFile,BufRead *.siv,*.sieve		setf sieve
1424
1425" Sendmail
1426au BufNewFile,BufRead sendmail.cf		setf sm
1427
1428" Sendmail .mc files are actually m4.  Could also be MS Message text file.
1429au BufNewFile,BufRead *.mc			call dist#ft#McSetf()
1430
1431" Services
1432au BufNewFile,BufRead */etc/services		setf services
1433
1434" Service Location config
1435au BufNewFile,BufRead */etc/slp.conf		setf slpconf
1436
1437" Service Location registration
1438au BufNewFile,BufRead */etc/slp.reg		setf slpreg
1439
1440" Service Location SPI
1441au BufNewFile,BufRead */etc/slp.spi		setf slpspi
1442
1443" Setserial config
1444au BufNewFile,BufRead */etc/serial.conf		setf setserial
1445
1446" SGML
1447au BufNewFile,BufRead *.sgm,*.sgml
1448	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' |
1449	\   setf sgmllnx |
1450	\ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' |
1451	\   let b:docbk_type = "sgml" |
1452	\   let b:docbk_ver = 4 |
1453	\   setf docbk |
1454	\ else |
1455	\   setf sgml |
1456	\ endif
1457
1458" SGMLDECL
1459au BufNewFile,BufRead *.decl,*.dcl,*.dec
1460	\ if getline(1).getline(2).getline(3) =~? '^<!SGML' |
1461	\    setf sgmldecl |
1462	\ endif
1463
1464" SGML catalog file
1465au BufNewFile,BufRead catalog			setf catalog
1466
1467" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
1468" Gentoo ebuilds and Arch Linux PKGBUILDs are actually bash scripts
1469" NOTE: Patterns ending in a star are further down, these have lower priority.
1470au 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")
1471au BufNewFile,BufRead .kshrc,*.ksh call dist#ft#SetFileTypeSH("ksh")
1472au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.env call dist#ft#SetFileTypeSH(getline(1))
1473
1474
1475" Shell script (Arch Linux) or PHP file (Drupal)
1476au BufNewFile,BufRead *.install
1477	\ if getline(1) =~ '<?php' |
1478	\   setf php |
1479	\ else |
1480	\   call dist#ft#SetFileTypeSH("bash") |
1481	\ endif
1482
1483" tcsh scripts (patterns ending in a star further below)
1484au BufNewFile,BufRead .tcshrc,*.tcsh,tcsh.tcshrc,tcsh.login	call dist#ft#SetFileTypeShell("tcsh")
1485
1486" csh scripts, but might also be tcsh scripts (on some systems csh is tcsh)
1487" (patterns ending in a start further below)
1488au BufNewFile,BufRead .login,.cshrc,csh.cshrc,csh.login,csh.logout,*.csh,.alias  call dist#ft#CSH()
1489
1490" Z-Shell script (patterns ending in a star further below)
1491au BufNewFile,BufRead .zprofile,*/etc/zprofile,.zfbfmarks  setf zsh
1492au BufNewFile,BufRead .zshrc,.zshenv,.zlogin,.zlogout,.zcompdump setf zsh
1493au BufNewFile,BufRead *.zsh			setf zsh
1494
1495" Scheme
1496au BufNewFile,BufRead *.scm,*.ss,*.rkt		setf scheme
1497
1498" Screen RC
1499au BufNewFile,BufRead .screenrc,screenrc	setf screen
1500
1501" Simula
1502au BufNewFile,BufRead *.sim			setf simula
1503
1504" SINDA
1505au BufNewFile,BufRead *.sin,*.s85		setf sinda
1506
1507" SiSU
1508au BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst,*._sst setf sisu
1509au BufNewFile,BufRead *.sst.meta,*.-sst.meta,*._sst.meta setf sisu
1510
1511" SKILL
1512au BufNewFile,BufRead *.il,*.ils,*.cdf		setf skill
1513
1514" SLRN
1515au BufNewFile,BufRead .slrnrc			setf slrnrc
1516au BufNewFile,BufRead *.score			setf slrnsc
1517
1518" Smalltalk (and TeX)
1519au BufNewFile,BufRead *.st			setf st
1520au BufNewFile,BufRead *.cls
1521	\ if getline(1) =~ '^%' |
1522	\  setf tex |
1523	\ elseif getline(1)[0] == '#' && getline(1) =~ 'rexx' |
1524	\  setf rexx |
1525	\ else |
1526	\  setf st |
1527	\ endif
1528
1529" Smarty templates
1530au BufNewFile,BufRead *.tpl			setf smarty
1531
1532" SMIL or XML
1533au BufNewFile,BufRead *.smil
1534	\ if getline(1) =~ '<?\s*xml.*?>' |
1535	\   setf xml |
1536	\ else |
1537	\   setf smil |
1538	\ endif
1539
1540" SMIL or SNMP MIB file
1541au BufNewFile,BufRead *.smi
1542	\ if getline(1) =~ '\<smil\>' |
1543	\   setf smil |
1544	\ else |
1545	\   setf mib |
1546	\ endif
1547
1548" SMITH
1549au BufNewFile,BufRead *.smt,*.smith		setf smith
1550
1551" Snobol4 and spitbol
1552au BufNewFile,BufRead *.sno,*.spt		setf snobol4
1553
1554" SNMP MIB files
1555au BufNewFile,BufRead *.mib,*.my		setf mib
1556
1557" Snort Configuration
1558au BufNewFile,BufRead *.hog,snort.conf,vision.conf	setf hog
1559au BufNewFile,BufRead *.rules			call dist#ft#FTRules()
1560
1561" Spec (Linux RPM)
1562au BufNewFile,BufRead *.spec			setf spec
1563
1564" Speedup (AspenTech plant simulator)
1565au BufNewFile,BufRead *.speedup,*.spdata,*.spd	setf spup
1566
1567" Slice
1568au BufNewFile,BufRead *.ice			setf slice
1569
1570" Spice
1571au BufNewFile,BufRead *.sp,*.spice		setf spice
1572
1573" Spyce
1574au BufNewFile,BufRead *.spy,*.spi		setf spyce
1575
1576" Squid
1577au BufNewFile,BufRead squid.conf		setf squid
1578
1579" SQL for Oracle Designer
1580au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks	setf sql
1581
1582" SQL
1583au BufNewFile,BufRead *.sql			call dist#ft#SQL()
1584
1585" SQLJ
1586au BufNewFile,BufRead *.sqlj			setf sqlj
1587
1588" SQR
1589au BufNewFile,BufRead *.sqr,*.sqi		setf sqr
1590
1591" OpenSSH configuration
1592au BufNewFile,BufRead ssh_config,*/.ssh/config	setf sshconfig
1593
1594" OpenSSH server configuration
1595au BufNewFile,BufRead sshd_config		setf sshdconfig
1596
1597" Stata
1598au BufNewFile,BufRead *.ado,*.do,*.imata,*.mata	setf stata
1599" Also *.class, but not when it's a Java bytecode file
1600au BufNewFile,BufRead *.class
1601	\ if getline(1) !~ "^\xca\xfe\xba\xbe" | setf stata | endif
1602
1603" SMCL
1604au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl	setf smcl
1605
1606" Stored Procedures
1607au BufNewFile,BufRead *.stp			setf stp
1608
1609" Standard ML
1610au BufNewFile,BufRead *.sml			setf sml
1611
1612" Sratus VOS command macro
1613au BufNewFile,BufRead *.cm			setf voscm
1614
1615" Sysctl
1616au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf	setf sysctl
1617
1618" Systemd unit files
1619au BufNewFile,BufRead */systemd/*.{automount,mount,path,service,socket,swap,target,timer}	setf systemd
1620" Systemd overrides
1621au BufNewFile,BufRead /etc/systemd/system/*.d/*.conf	setf systemd
1622" Systemd temp files
1623au BufNewFile,BufRead /etc/systemd/system/*.d/.#*	setf systemd
1624
1625" Synopsys Design Constraints
1626au BufNewFile,BufRead *.sdc			setf sdc
1627
1628" Sudoers
1629au BufNewFile,BufRead */etc/sudoers,sudoers.tmp	setf sudoers
1630
1631" SVG (Scalable Vector Graphics)
1632au BufNewFile,BufRead *.svg			setf svg
1633
1634" Tads (or Nroff or Perl test file)
1635au BufNewFile,BufRead *.t
1636	\ if !dist#ft#FTnroff() && !dist#ft#FTperl() | setf tads | endif
1637
1638" Tags
1639au BufNewFile,BufRead tags			setf tags
1640
1641" TAK
1642au BufNewFile,BufRead *.tak			setf tak
1643
1644" Task
1645au BufRead,BufNewFile {pending,completed,undo}.data  setf taskdata
1646au BufRead,BufNewFile *.task			setf taskedit
1647
1648" Tcl (JACL too)
1649au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl	setf tcl
1650
1651" TealInfo
1652au BufNewFile,BufRead *.tli			setf tli
1653
1654" Telix Salt
1655au BufNewFile,BufRead *.slt			setf tsalt
1656
1657" Tera Term Language
1658au BufRead,BufNewFile *.ttl			setf teraterm
1659
1660" Terminfo
1661au BufNewFile,BufRead *.ti			setf terminfo
1662
1663" TeX
1664au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl	setf tex
1665au BufNewFile,BufRead *.tex			call dist#ft#FTtex()
1666
1667" ConTeXt
1668au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi   setf context
1669
1670" Texinfo
1671au BufNewFile,BufRead *.texinfo,*.texi,*.txi	setf texinfo
1672
1673" TeX configuration
1674au BufNewFile,BufRead texmf.cnf			setf texmf
1675
1676" Tidy config
1677au BufNewFile,BufRead .tidyrc,tidyrc		setf tidy
1678
1679" TF mud client
1680au BufNewFile,BufRead *.tf,.tfrc,tfrc		setf tf
1681
1682" tmux configuration
1683au BufNewFile,BufRead {.,}tmux*.conf		setf tmux
1684
1685" TPP - Text Presentation Program
1686au BufNewFile,BufReadPost *.tpp			setf tpp
1687
1688" Treetop
1689au BufRead,BufNewFile *.treetop			setf treetop
1690
1691" Trustees
1692au BufNewFile,BufRead trustees.conf		setf trustees
1693
1694" TSS - Geometry
1695au BufNewFile,BufReadPost *.tssgm		setf tssgm
1696
1697" TSS - Optics
1698au BufNewFile,BufReadPost *.tssop		setf tssop
1699
1700" TSS - Command Line (temporary)
1701au BufNewFile,BufReadPost *.tsscl		setf tsscl
1702
1703" TWIG files
1704au BufNewFile,BufReadPost *.twig		setf twig
1705
1706" Typescript
1707au BufNewFile,BufReadPost *.ts			setf typescript
1708
1709" Motif UIT/UIL files
1710au BufNewFile,BufRead *.uit,*.uil		setf uil
1711
1712" Udev conf
1713au BufNewFile,BufRead */etc/udev/udev.conf	setf udevconf
1714
1715" Udev permissions
1716au BufNewFile,BufRead */etc/udev/permissions.d/*.permissions setf udevperm
1717"
1718" Udev symlinks config
1719au BufNewFile,BufRead */etc/udev/cdsymlinks.conf	setf sh
1720
1721" UnrealScript
1722au BufNewFile,BufRead *.uc			setf uc
1723
1724" Updatedb
1725au BufNewFile,BufRead */etc/updatedb.conf	setf updatedb
1726
1727" Upstart (init(8)) config files
1728au BufNewFile,BufRead */usr/share/upstart/*.conf	       setf upstart
1729au BufNewFile,BufRead */usr/share/upstart/*.override	       setf upstart
1730au BufNewFile,BufRead */etc/init/*.conf,*/etc/init/*.override  setf upstart
1731au BufNewFile,BufRead */.init/*.conf,*/.init/*.override	       setf upstart
1732au BufNewFile,BufRead */.config/upstart/*.conf		       setf upstart
1733au BufNewFile,BufRead */.config/upstart/*.override	       setf upstart
1734
1735" Vera
1736au BufNewFile,BufRead *.vr,*.vri,*.vrh		setf vera
1737
1738" Verilog HDL
1739au BufNewFile,BufRead *.v			setf verilog
1740
1741" Verilog-AMS HDL
1742au BufNewFile,BufRead *.va,*.vams		setf verilogams
1743
1744" SystemVerilog
1745au BufNewFile,BufRead *.sv,*.svh		setf systemverilog
1746
1747" VHDL
1748au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst  setf vhdl
1749
1750" Vim script
1751au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc	setf vim
1752
1753" Viminfo file
1754au BufNewFile,BufRead .viminfo,_viminfo		setf viminfo
1755
1756" Virata Config Script File or Drupal module
1757au BufRead,BufNewFile *.hw,*.module,*.pkg
1758	\ if getline(1) =~ '<?php' |
1759	\   setf php |
1760	\ else |
1761	\   setf virata |
1762	\ endif
1763
1764" Visual Basic (also uses *.bas) or FORM
1765au BufNewFile,BufRead *.frm			call dist#ft#FTVB("form")
1766
1767" SaxBasic is close to Visual Basic
1768au BufNewFile,BufRead *.sba			setf vb
1769
1770" Vgrindefs file
1771au BufNewFile,BufRead vgrindefs			setf vgrindefs
1772
1773" VRML V1.0c
1774au BufNewFile,BufRead *.wrl			setf vrml
1775
1776" Vroom (vim testing and executable documentation)
1777au BufNewFile,BufRead *.vroom			setf vroom
1778
1779" Webmacro
1780au BufNewFile,BufRead *.wm			setf webmacro
1781
1782" WebAssembly
1783au BufNewFile,BufRead *.wast,*.wat		setf wast
1784
1785" Wget config
1786au BufNewFile,BufRead .wgetrc,wgetrc		setf wget
1787
1788" Website MetaLanguage
1789au BufNewFile,BufRead *.wml			setf wml
1790
1791" Winbatch
1792au BufNewFile,BufRead *.wbt			setf winbatch
1793
1794" WSML
1795au BufNewFile,BufRead *.wsml			setf wsml
1796
1797" WPL
1798au BufNewFile,BufRead *.wpl			setf xml
1799
1800" WvDial
1801au BufNewFile,BufRead wvdial.conf,.wvdialrc	setf wvdial
1802
1803" CVS RC file
1804au BufNewFile,BufRead .cvsrc			setf cvsrc
1805
1806" CVS commit file
1807au BufNewFile,BufRead cvs\d\+			setf cvs
1808
1809" WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment
1810" lines in a WEB file).
1811au BufNewFile,BufRead *.web
1812	\ if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" |
1813	\   setf web |
1814	\ else |
1815	\   setf winbatch |
1816	\ endif
1817
1818" Windows Scripting Host and Windows Script Component
1819au BufNewFile,BufRead *.ws[fc]			setf wsh
1820
1821" XHTML
1822au BufNewFile,BufRead *.xhtml,*.xht		setf xhtml
1823
1824" X Pixmap (dynamically sets colors, use BufEnter to make it work better)
1825au BufEnter *.xpm
1826	\ if getline(1) =~ "XPM2" |
1827	\   setf xpm2 |
1828	\ else |
1829	\   setf xpm |
1830	\ endif
1831au BufEnter *.xpm2				setf xpm2
1832
1833" XFree86 config
1834au BufNewFile,BufRead XF86Config
1835	\ if getline(1) =~ '\<XConfigurator\>' |
1836	\   let b:xf86conf_xfree86_version = 3 |
1837	\ endif |
1838	\ setf xf86conf
1839au BufNewFile,BufRead */xorg.conf.d/*.conf
1840	\ let b:xf86conf_xfree86_version = 4 |
1841	\ setf xf86conf
1842
1843" Xorg config
1844au BufNewFile,BufRead xorg.conf,xorg.conf-4	let b:xf86conf_xfree86_version = 4 | setf xf86conf
1845
1846" Xinetd conf
1847au BufNewFile,BufRead */etc/xinetd.conf		setf xinetd
1848
1849" XS Perl extension interface language
1850au BufNewFile,BufRead *.xs			setf xs
1851
1852" X resources file
1853au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults
1854
1855" Xmath
1856au BufNewFile,BufRead *.msc,*.msf		setf xmath
1857au BufNewFile,BufRead *.ms
1858	\ if !dist#ft#FTnroff() | setf xmath | endif
1859
1860" XML  specific variants: docbk and xbl
1861au BufNewFile,BufRead *.xml			call dist#ft#FTxml()
1862
1863" XMI (holding UML models) is also XML
1864au BufNewFile,BufRead *.xmi			setf xml
1865
1866" CSPROJ files are Visual Studio.NET's XML-based project config files
1867au BufNewFile,BufRead *.csproj,*.csproj.user	setf xml
1868
1869" Qt Linguist translation source and Qt User Interface Files are XML
1870" However, for .ts Typescript is more common.
1871au BufNewFile,BufRead *.ui			setf xml
1872
1873" TPM's are RDF-based descriptions of TeX packages (Nikolai Weibull)
1874au BufNewFile,BufRead *.tpm			setf xml
1875
1876" Xdg menus
1877au BufNewFile,BufRead */etc/xdg/menus/*.menu	setf xml
1878
1879" ATI graphics driver configuration
1880au BufNewFile,BufRead fglrxrc			setf xml
1881
1882" Web Services Description Language (WSDL)
1883au BufNewFile,BufRead *.wsdl			setf xml
1884
1885" XLIFF (XML Localisation Interchange File Format) is also XML
1886au BufNewFile,BufRead *.xlf			setf xml
1887au BufNewFile,BufRead *.xliff			setf xml
1888
1889" XML User Interface Language
1890au BufNewFile,BufRead *.xul			setf xml
1891
1892" X11 xmodmap (also see below)
1893au BufNewFile,BufRead *Xmodmap			setf xmodmap
1894
1895" Xquery
1896au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy	setf xquery
1897
1898" XSD
1899au BufNewFile,BufRead *.xsd			setf xsd
1900
1901" Xslt
1902au BufNewFile,BufRead *.xsl,*.xslt		setf xslt
1903
1904" Yacc
1905au BufNewFile,BufRead *.yy,*.yxx,*.y++		setf yacc
1906
1907" Yacc or racc
1908au BufNewFile,BufRead *.y			call dist#ft#FTy()
1909
1910" Yaml
1911au BufNewFile,BufRead *.yaml,*.yml		setf yaml
1912
1913" Raml
1914au BufNewFile,BufRead *.raml			setf raml
1915
1916" yum conf (close enough to dosini)
1917au BufNewFile,BufRead */etc/yum.conf		setf dosini
1918
1919" Zimbu
1920au BufNewFile,BufRead *.zu			setf zimbu
1921" Zimbu Templates
1922au BufNewFile,BufRead *.zut			setf zimbutempl
1923
1924" Zope
1925"   dtml (zope dynamic template markup language), pt (zope page template),
1926"   cpt (zope form controller page template)
1927au BufNewFile,BufRead *.dtml,*.pt,*.cpt		call dist#ft#FThtml()
1928"   zsql (zope sql method)
1929au BufNewFile,BufRead *.zsql			call dist#ft#SQL()
1930
1931" Z80 assembler asz80
1932au BufNewFile,BufRead *.z8a			setf z8a
1933
1934augroup END
1935
1936
1937" Source the user-specified filetype file, for backwards compatibility with
1938" Vim 5.x.
1939if exists("myfiletypefile") && filereadable(expand(myfiletypefile))
1940  execute "source " . myfiletypefile
1941endif
1942
1943
1944" Check for "*" after loading myfiletypefile, so that scripts.vim is only used
1945" when there are no matching file name extensions.
1946" Don't do this for compressed files.
1947augroup filetypedetect
1948au BufNewFile,BufRead *
1949	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
1950	\ | runtime! scripts.vim | endif
1951au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif
1952
1953
1954" Extra checks for when no filetype has been detected now.  Mostly used for
1955" patterns that end in "*".  E.g., "zsh*" matches "zsh.vim", but that's a Vim
1956" script file.
1957" Most of these should call s:StarSetf() to avoid names ending in .gz and the
1958" like are used.
1959
1960" More Apache style config files
1961au BufNewFile,BufRead */etc/proftpd/*.conf*,*/etc/proftpd/conf.*/*	call s:StarSetf('apachestyle')
1962au BufNewFile,BufRead proftpd.conf*					call s:StarSetf('apachestyle')
1963
1964" More Apache config files
1965au BufNewFile,BufRead access.conf*,apache.conf*,apache2.conf*,httpd.conf*,srm.conf*	call s:StarSetf('apache')
1966au BufNewFile,BufRead */etc/apache2/*.conf*,*/etc/apache2/conf.*/*,*/etc/apache2/mods-*/*,*/etc/apache2/sites-*/*,*/etc/httpd/conf.d/*.conf*		call s:StarSetf('apache')
1967
1968" Asterisk config file
1969au BufNewFile,BufRead *asterisk/*.conf*		call s:StarSetf('asterisk')
1970au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm')
1971
1972" Bazaar version control
1973au BufNewFile,BufRead bzr_log.*			setf bzr
1974
1975" Bazel build file
1976if !has("fname_case")
1977  au BufNewFile,BufRead BUILD			setf bzl
1978endif
1979
1980" BIND zone
1981au BufNewFile,BufRead */named/db.*,*/bind/db.*	call s:StarSetf('bindzone')
1982
1983" Calendar
1984au BufNewFile,BufRead */.calendar/*,
1985	\*/share/calendar/*/calendar.*,*/share/calendar/calendar.*
1986	\					call s:StarSetf('calendar')
1987
1988" Changelog
1989au BufNewFile,BufRead [cC]hange[lL]og*
1990	\ if getline(1) =~ '; urgency='
1991	\|  call s:StarSetf('debchangelog')
1992	\|else
1993	\|  call s:StarSetf('changelog')
1994	\|endif
1995
1996" Crontab
1997au BufNewFile,BufRead crontab,crontab.*,*/etc/cron.d/*		call s:StarSetf('crontab')
1998
1999" dnsmasq(8) configuration
2000au BufNewFile,BufRead */etc/dnsmasq.d/*		call s:StarSetf('dnsmasq')
2001
2002" Dracula
2003au BufNewFile,BufRead drac.*			call s:StarSetf('dracula')
2004
2005" Fvwm
2006au BufNewFile,BufRead */.fvwm/*			call s:StarSetf('fvwm')
2007au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
2008	\ let b:fvwm_version = 1 | call s:StarSetf('fvwm')
2009au BufNewFile,BufRead *fvwm2rc*
2010	\ if expand("<afile>:e") == "m4"
2011	\|  call s:StarSetf('fvwm2m4')
2012	\|else
2013	\|  let b:fvwm_version = 2 | call s:StarSetf('fvwm')
2014	\|endif
2015
2016" Gedcom
2017au BufNewFile,BufRead */tmp/lltmp*		call s:StarSetf('gedcom')
2018
2019" Git
2020au BufNewFile,BufRead */.gitconfig.d/*,/etc/gitconfig.d/* 	call s:StarSetf('gitconfig')
2021
2022" Gitolite
2023au BufNewFile,BufRead */gitolite-admin/conf/*	call s:StarSetf('gitolite')
2024
2025" GTK RC
2026au BufNewFile,BufRead .gtkrc*,gtkrc*		call s:StarSetf('gtkrc')
2027
2028" Jam
2029au BufNewFile,BufRead Prl*.*,JAM*.*		call s:StarSetf('jam')
2030
2031" Jargon
2032au! BufNewFile,BufRead *jarg*
2033	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE'
2034	\|  call s:StarSetf('jargon')
2035	\|endif
2036
2037" Java Properties resource file (note: doesn't catch font.properties.pl)
2038au BufNewFile,BufRead *.properties_??_??_*	call s:StarSetf('jproperties')
2039
2040" Kconfig
2041au BufNewFile,BufRead Kconfig.*			call s:StarSetf('kconfig')
2042
2043" Lilo: Linux loader
2044au BufNewFile,BufRead lilo.conf*		call s:StarSetf('lilo')
2045
2046" Logcheck
2047au BufNewFile,BufRead */etc/logcheck/*.d*/*	call s:StarSetf('logcheck')
2048
2049" Makefile
2050au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')
2051
2052" Ruby Makefile
2053au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')
2054
2055" Mail (also matches muttrc.vim, so this is below the other checks)
2056au BufNewFile,BufRead {neo,}mutt[[:alnum:]._-]\\\{6\}	setf mail
2057
2058au BufNewFile,BufRead reportbug-*		call s:StarSetf('mail')
2059
2060" Modconf
2061au BufNewFile,BufRead */etc/modutils/*
2062	\ if executable(expand("<afile>")) != 1
2063	\|  call s:StarSetf('modconf')
2064	\|endif
2065au BufNewFile,BufRead */etc/modprobe.*		call s:StarSetf('modconf')
2066
2067" Mutt setup file
2068au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
2069au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc*		call s:StarSetf('muttrc')
2070
2071" Neomutt setup file
2072au BufNewFile,BufRead .neomuttrc*,*/.neomutt/neomuttrc*	call s:StarSetf('neomuttrc')
2073au BufNewFile,BufRead neomuttrc*,Neomuttrc*		call s:StarSetf('neomuttrc')
2074
2075" Nroff macros
2076au BufNewFile,BufRead tmac.*			call s:StarSetf('nroff')
2077
2078" OpenBSD hostname.if
2079au BufNewFile,BufRead /etc/hostname.*		call s:StarSetf('config')
2080
2081" Pam conf
2082au BufNewFile,BufRead */etc/pam.d/*		call s:StarSetf('pamconf')
2083
2084" Printcap and Termcap
2085au BufNewFile,BufRead *printcap*
2086	\ if !did_filetype()
2087	\|  let b:ptcap_type = "print" | call s:StarSetf('ptcap')
2088	\|endif
2089au BufNewFile,BufRead *termcap*
2090	\ if !did_filetype()
2091	\|  let b:ptcap_type = "term" | call s:StarSetf('ptcap')
2092	\|endif
2093
2094" ReDIF
2095" Only used when the .rdf file was not detected to be XML.
2096au BufRead,BufNewFile *.rdf			call dist#ft#Redif()
2097
2098" Remind
2099au BufNewFile,BufRead .reminders*		call s:StarSetf('remind')
2100
2101" SGML catalog file
2102au BufNewFile,BufRead sgml.catalog*		call s:StarSetf('catalog')
2103
2104" Shell scripts ending in a star
2105au BufNewFile,BufRead .bashrc*,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,bash-fc[-.]*,,PKGBUILD* call dist#ft#SetFileTypeSH("bash")
2106au BufNewFile,BufRead .kshrc* call dist#ft#SetFileTypeSH("ksh")
2107au BufNewFile,BufRead .profile* call dist#ft#SetFileTypeSH(getline(1))
2108
2109" tcsh scripts ending in a star
2110au BufNewFile,BufRead .tcshrc*	call dist#ft#SetFileTypeShell("tcsh")
2111
2112" csh scripts ending in a star
2113au BufNewFile,BufRead .login*,.cshrc*  call dist#ft#CSH()
2114
2115" VHDL
2116au BufNewFile,BufRead *.vhdl_[0-9]*		call s:StarSetf('vhdl')
2117
2118" Vim script
2119au BufNewFile,BufRead *vimrc*			call s:StarSetf('vim')
2120
2121" Subversion commit file
2122au BufNewFile,BufRead svn-commit*.tmp		setf svn
2123
2124" X resources file
2125au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults')
2126
2127" XFree86 config
2128au BufNewFile,BufRead XF86Config-4*
2129	\ let b:xf86conf_xfree86_version = 4 | call s:StarSetf('xf86conf')
2130au BufNewFile,BufRead XF86Config*
2131	\ if getline(1) =~ '\<XConfigurator\>'
2132	\|  let b:xf86conf_xfree86_version = 3
2133	\|endif
2134	\|call s:StarSetf('xf86conf')
2135
2136" X11 xmodmap
2137au BufNewFile,BufRead *xmodmap*			call s:StarSetf('xmodmap')
2138
2139" Xinetd conf
2140au BufNewFile,BufRead */etc/xinetd.d/*		call s:StarSetf('xinetd')
2141
2142" yum conf (close enough to dosini)
2143au BufNewFile,BufRead */etc/yum.repos.d/*	call s:StarSetf('dosini')
2144
2145" Z-Shell script ending in a star
2146au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump*  call s:StarSetf('zsh')
2147au BufNewFile,BufRead zsh*,zlog*		call s:StarSetf('zsh')
2148
2149
2150" Plain text files, needs to be far down to not override others.  This avoids
2151" the "conf" type being used if there is a line starting with '#'.
2152au BufNewFile,BufRead *.text,README		setf text
2153
2154" Help files match *.txt but should have a last line that is a modeline.
2155au BufNewFile,BufRead *.txt
2156	\  if getline('$') !~ 'vim:.*ft=help'
2157	\|   setf text
2158	\| endif
2159
2160
2161" Use the filetype detect plugins.  They may overrule any of the previously
2162" detected filetypes.
2163runtime! ftdetect/*.vim
2164
2165" NOTE: The above command could have ended the filetypedetect autocmd group
2166" and started another one. Let's make sure it has ended to get to a consistent
2167" state.
2168augroup END
2169
2170" Generic configuration file. Use FALLBACK, it's just guessing!
2171au filetypedetect BufNewFile,BufRead,StdinReadPost *
2172	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
2173	\    && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
2174	\	|| getline(4) =~ '^#' || getline(5) =~ '^#') |
2175	\   setf FALLBACK conf |
2176	\ endif
2177
2178
2179" If the GUI is already running, may still need to install the Syntax menu.
2180" Don't do it when the 'M' flag is included in 'guioptions'.
2181if has("menu") && has("gui_running")
2182      \ && !exists("did_install_syntax_menu") && &guioptions !~# "M"
2183  source <sfile>:p:h/menu.vim
2184endif
2185
2186" Function called for testing all functions defined here.  These are
2187" script-local, thus need to be executed here.
2188" Returns a string with error messages (hopefully empty).
2189func! TestFiletypeFuncs(testlist)
2190  let output = ''
2191  for f in a:testlist
2192    try
2193      exe f
2194    catch
2195      let output = output . "\n" . f . ": " . v:exception
2196    endtry
2197  endfor
2198  return output
2199endfunc
2200
2201" Restore 'cpoptions'
2202let &cpo = s:cpo_save
2203unlet s:cpo_save
2204