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