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