xref: /vim-8.2.3635/runtime/filetype.vim (revision 788fbb47)
1" Vim support file to detect file types
2"
3" Maintainer:	Bram Moolenaar <[email protected]>
4" Last Change:	2020 May 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, *.jl = librep Lisp)
891if has("fname_case")
892  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,*.L,.emacs,.sawfishrc setf lisp
893else
894  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,.emacs,.sawfishrc setf lisp
895endif
896
897" SBCL implementation of Common Lisp
898au BufNewFile,BufRead sbclrc,.sbclrc		setf lisp
899
900" Liquid
901au BufNewFile,BufRead *.liquid			setf liquid
902
903" Lite
904au BufNewFile,BufRead *.lite,*.lt		setf lite
905
906" LiteStep RC files
907au BufNewFile,BufRead */LiteStep/*/*.rc		setf litestep
908
909" Login access
910au BufNewFile,BufRead */etc/login.access	setf loginaccess
911
912" Login defs
913au BufNewFile,BufRead */etc/login.defs		setf logindefs
914
915" Logtalk
916au BufNewFile,BufRead *.lgt			setf logtalk
917
918" LOTOS
919au BufNewFile,BufRead *.lot,*.lotos		setf lotos
920
921" Lout (also: *.lt)
922au BufNewFile,BufRead *.lou,*.lout		setf lout
923
924" Lua
925au BufNewFile,BufRead *.lua			setf lua
926
927" Luarocks
928au BufNewFile,BufRead *.rockspec		setf lua
929
930" Linden Scripting Language (Second Life)
931au BufNewFile,BufRead *.lsl			setf lsl
932
933" Lynx style file (or LotusScript!)
934au BufNewFile,BufRead *.lss			setf lss
935
936" M4
937au BufNewFile,BufRead *.m4
938	\ if expand("<afile>") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif
939
940" MaGic Point
941au BufNewFile,BufRead *.mgp			setf mgp
942
943" Mail (for Elm, trn, mutt, muttng, rn, slrn, neomutt)
944au 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
945
946" Mail aliases
947au BufNewFile,BufRead */etc/mail/aliases,*/etc/aliases	setf mailaliases
948
949" Mailcap configuration file
950au BufNewFile,BufRead .mailcap,mailcap		setf mailcap
951
952" Makefile
953au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make
954
955" MakeIndex
956au BufNewFile,BufRead *.ist,*.mst		setf ist
957
958" Mallard
959au BufNewFile,BufRead *.page			setf mallard
960
961" Manpage
962au BufNewFile,BufRead *.man			setf man
963
964" Man config
965au BufNewFile,BufRead */etc/man.conf,man.config	setf manconf
966
967" Maple V
968au BufNewFile,BufRead *.mv,*.mpl,*.mws		setf maple
969
970" Map (UMN mapserver config file)
971au BufNewFile,BufRead *.map			setf map
972
973" Markdown
974au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md  setf markdown
975
976" Mason
977au BufNewFile,BufRead *.mason,*.mhtml,*.comp	setf mason
978
979" Mathematica, Matlab, Murphi or Objective C
980au BufNewFile,BufRead *.m			call dist#ft#FTm()
981
982" Mathematica notebook
983au BufNewFile,BufRead *.nb			setf mma
984
985" Maya Extension Language
986au BufNewFile,BufRead *.mel			setf mel
987
988" Mercurial (hg) commit file
989au BufNewFile,BufRead hg-editor-*.txt		setf hgcommit
990
991" Mercurial config (looks like generic config file)
992au BufNewFile,BufRead *.hgrc,*hgrc		setf cfg
993
994" Meson Build system config
995au BufNewFile,BufRead meson.build,meson_options.txt setf meson
996
997" Messages (logs mostly)
998au 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
999
1000" Metafont
1001au BufNewFile,BufRead *.mf			setf mf
1002
1003" MetaPost
1004au BufNewFile,BufRead *.mp			setf mp
1005
1006" MGL
1007au BufNewFile,BufRead *.mgl			setf mgl
1008
1009" MIX - Knuth assembly
1010au BufNewFile,BufRead *.mix,*.mixal		setf mix
1011
1012" MMIX or VMS makefile
1013au BufNewFile,BufRead *.mms			call dist#ft#FTmms()
1014
1015" Symbian meta-makefile definition (MMP)
1016au BufNewFile,BufRead *.mmp			setf mmp
1017
1018" Modsim III (or LambdaProlog)
1019au BufNewFile,BufRead *.mod
1020	\ if getline(1) =~ '\<module\>' |
1021	\   setf lprolog |
1022	\ else |
1023	\   setf modsim3 |
1024	\ endif
1025
1026" Modula 2  (.md removed in favor of Markdown)
1027au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi	setf modula2
1028
1029" Modula 3 (.m3, .i3, .mg, .ig)
1030au BufNewFile,BufRead *.[mi][3g]		setf modula3
1031
1032" Monk
1033au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc	setf monk
1034
1035" MOO
1036au BufNewFile,BufRead *.moo			setf moo
1037
1038" Modconf
1039au BufNewFile,BufRead */etc/modules.conf,*/etc/modules,*/etc/conf.modules setf modconf
1040
1041" Mplayer config
1042au BufNewFile,BufRead mplayer.conf,*/.mplayer/config	setf mplayerconf
1043
1044" Motorola S record
1045au BufNewFile,BufRead *.s19,*.s28,*.s37,*.mot,*.srec	setf srec
1046
1047" Mrxvtrc
1048au BufNewFile,BufRead mrxvtrc,.mrxvtrc		setf mrxvtrc
1049
1050" Msql
1051au BufNewFile,BufRead *.msql			setf msql
1052
1053" Mysql
1054au BufNewFile,BufRead *.mysql			setf mysql
1055
1056" Mutt setup files (must be before catch *.rc)
1057au BufNewFile,BufRead */etc/Muttrc.d/*		call s:StarSetf('muttrc')
1058
1059" M$ Resource files
1060au BufNewFile,BufRead *.rc,*.rch		setf rc
1061
1062" MuPAD source
1063au BufRead,BufNewFile *.mu			setf mupad
1064
1065" Mush
1066au BufNewFile,BufRead *.mush			setf mush
1067
1068" Mutt setup file (also for Muttng)
1069au BufNewFile,BufRead Mutt{ng,}rc		setf muttrc
1070
1071" N1QL
1072au BufRead,BufNewfile *.n1ql,*.nql		setf n1ql
1073
1074" Nano
1075au BufNewFile,BufRead */etc/nanorc,*.nanorc  	setf nanorc
1076
1077" Nastran input/DMAP
1078"au BufNewFile,BufRead *.dat			setf nastran
1079
1080" Natural
1081au BufNewFile,BufRead *.NS[ACGLMNPS]		setf natural
1082
1083" Noemutt setup file
1084au BufNewFile,BufRead Neomuttrc			setf neomuttrc
1085
1086" Netrc
1087au BufNewFile,BufRead .netrc			setf netrc
1088
1089" Ninja file
1090au BufNewFile,BufRead *.ninja			setf ninja
1091
1092" Novell netware batch files
1093au BufNewFile,BufRead *.ncf			setf ncf
1094
1095" Nroff/Troff (*.ms and *.t are checked below)
1096au BufNewFile,BufRead *.me
1097	\ if expand("<afile>") != "read.me" && expand("<afile>") != "click.me" |
1098	\   setf nroff |
1099	\ endif
1100au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom	setf nroff
1101au BufNewFile,BufRead *.[1-9]			call dist#ft#FTnroff()
1102
1103" Nroff or Objective C++
1104au BufNewFile,BufRead *.mm			call dist#ft#FTmm()
1105
1106" Not Quite C
1107au BufNewFile,BufRead *.nqc			setf nqc
1108
1109" NSE - Nmap Script Engine - uses Lua syntax
1110au BufNewFile,BufRead *.nse			setf lua
1111
1112" NSIS
1113au BufNewFile,BufRead *.nsi,*.nsh		setf nsis
1114
1115" OCAML
1116au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly,.ocamlinit	setf ocaml
1117
1118" Occam
1119au BufNewFile,BufRead *.occ			setf occam
1120
1121" Omnimark
1122au BufNewFile,BufRead *.xom,*.xin		setf omnimark
1123
1124" OpenROAD
1125au BufNewFile,BufRead *.or			setf openroad
1126
1127" OPL
1128au BufNewFile,BufRead *.[Oo][Pp][Ll]		setf opl
1129
1130" Oracle config file
1131au BufNewFile,BufRead *.ora			setf ora
1132
1133" Packet filter conf
1134au BufNewFile,BufRead pf.conf			setf pf
1135
1136" Pam conf
1137au BufNewFile,BufRead */etc/pam.conf		setf pamconf
1138
1139" Pam environment
1140au BufNewFile,BufRead pam_env.conf,.pam_environment	setf pamenv
1141
1142" PApp
1143au BufNewFile,BufRead *.papp,*.pxml,*.pxsl	setf papp
1144
1145" Password file
1146au 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
1147
1148" Pascal (also *.p)
1149au BufNewFile,BufRead *.pas			setf pascal
1150
1151" Delphi project file
1152au BufNewFile,BufRead *.dpr			setf pascal
1153
1154" PDF
1155au BufNewFile,BufRead *.pdf			setf pdf
1156
1157" PCMK - HAE - crm configure edit
1158au BufNewFile,BufRead *.pcmk 			setf pcmk
1159
1160" Perl
1161if has("fname_case")
1162  au BufNewFile,BufRead *.pl,*.PL		call dist#ft#FTpl()
1163else
1164  au BufNewFile,BufRead *.pl			call dist#ft#FTpl()
1165endif
1166au BufNewFile,BufRead *.plx,*.al,*.psgi		setf perl
1167au BufNewFile,BufRead *.p6,*.pm6,*.pl6		setf perl6
1168
1169" Perl, XPM or XPM2
1170au BufNewFile,BufRead *.pm
1171	\ if getline(1) =~ "XPM2" |
1172	\   setf xpm2 |
1173	\ elseif getline(1) =~ "XPM" |
1174	\   setf xpm |
1175	\ else |
1176	\   setf perl |
1177	\ endif
1178
1179" Perl POD
1180au BufNewFile,BufRead *.pod			setf pod
1181au BufNewFile,BufRead *.pod6			setf pod6
1182
1183" Php, php3, php4, etc.
1184" Also Phtml (was used for PHP 2 in the past)
1185" Also .ctp for Cake template file
1186au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp	setf php
1187
1188" Pike and Cmod
1189au BufNewFile,BufRead *.pike,*.pmod		setf pike
1190au BufNewFile,BufRead *.cmod			setf cmod
1191
1192" Pinfo config
1193au BufNewFile,BufRead */etc/pinforc,*/.pinforc	setf pinfo
1194
1195" Palm Resource compiler
1196au BufNewFile,BufRead *.rcp			setf pilrc
1197
1198" Pine config
1199au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex		setf pine
1200
1201" Pipenv Pipfiles
1202au BufNewFile,BufRead Pipfile			setf config
1203au BufNewFile,BufRead Pipfile.lock		setf json
1204
1205" PL/1, PL/I
1206au BufNewFile,BufRead *.pli,*.pl1		setf pli
1207
1208" PL/M (also: *.inp)
1209au BufNewFile,BufRead *.plm,*.p36,*.pac		setf plm
1210
1211" PL/SQL
1212au BufNewFile,BufRead *.pls,*.plsql		setf plsql
1213
1214" PLP
1215au BufNewFile,BufRead *.plp			setf plp
1216
1217" PO and PO template (GNU gettext)
1218au BufNewFile,BufRead *.po,*.pot		setf po
1219
1220" Postfix main config
1221au BufNewFile,BufRead main.cf			setf pfmain
1222
1223" PostScript (+ font files, encapsulated PostScript, Adobe Illustrator)
1224au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai	  setf postscr
1225
1226" PostScript Printer Description
1227au BufNewFile,BufRead *.ppd			setf ppd
1228
1229" Povray
1230au BufNewFile,BufRead *.pov			setf pov
1231
1232" Povray configuration
1233au BufNewFile,BufRead .povrayrc			setf povini
1234
1235" Povray, PHP or assembly
1236au BufNewFile,BufRead *.inc			call dist#ft#FTinc()
1237
1238" Printcap and Termcap
1239au BufNewFile,BufRead *printcap
1240	\ let b:ptcap_type = "print" | setf ptcap
1241au BufNewFile,BufRead *termcap
1242	\ let b:ptcap_type = "term" | setf ptcap
1243
1244" PCCTS / ANTRL
1245"au BufNewFile,BufRead *.g			setf antrl
1246au BufNewFile,BufRead *.g			setf pccts
1247
1248" PPWizard
1249au BufNewFile,BufRead *.it,*.ih			setf ppwiz
1250
1251" Obj 3D file format
1252" TODO: is there a way to avoid MS-Windows Object files?
1253au BufNewFile,BufRead *.obj			setf obj
1254
1255" Oracle Pro*C/C++
1256au BufNewFile,BufRead *.pc			setf proc
1257
1258" Privoxy actions file
1259au BufNewFile,BufRead *.action			setf privoxy
1260
1261" Procmail
1262au BufNewFile,BufRead .procmail,.procmailrc	setf procmail
1263
1264" Progress or CWEB
1265au BufNewFile,BufRead *.w			call dist#ft#FTprogress_cweb()
1266
1267" Progress or assembly
1268au BufNewFile,BufRead *.i			call dist#ft#FTprogress_asm()
1269
1270" Progress or Pascal
1271au BufNewFile,BufRead *.p			call dist#ft#FTprogress_pascal()
1272
1273" Software Distributor Product Specification File (POSIX 1387.2-1995)
1274au BufNewFile,BufRead *.psf			setf psf
1275au BufNewFile,BufRead INDEX,INFO
1276	\ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' |
1277	\   setf psf |
1278	\ endif
1279
1280" Prolog
1281au BufNewFile,BufRead *.pdb			setf prolog
1282
1283" Promela
1284au BufNewFile,BufRead *.pml			setf promela
1285
1286" Google protocol buffers
1287au BufNewFile,BufRead *.proto			setf proto
1288
1289" Protocols
1290au BufNewFile,BufRead */etc/protocols		setf protocols
1291
1292" Pyrex
1293au BufNewFile,BufRead *.pyx,*.pxd		setf pyrex
1294
1295" Python, Python Shell Startup and Python Stub Files
1296" Quixote (Python-based web framework)
1297au BufNewFile,BufRead *.py,*.pyw,.pythonstartup,.pythonrc,*.ptl,*.pyi  setf python
1298
1299" Radiance
1300au BufNewFile,BufRead *.rad,*.mat		setf radiance
1301
1302" Ratpoison config/command files
1303au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc	setf ratpoison
1304
1305" RCS file
1306au BufNewFile,BufRead *\,v			setf rcs
1307
1308" Readline
1309au BufNewFile,BufRead .inputrc,inputrc		setf readline
1310
1311" Registry for MS-Windows
1312au BufNewFile,BufRead *.reg
1313	\ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif
1314
1315" Renderman Interface Bytestream
1316au BufNewFile,BufRead *.rib			setf rib
1317
1318" Rego Policy Language
1319au BufNewFile,BufRead *.rego			setf rego
1320
1321" Rexx
1322au BufNewFile,BufRead *.rex,*.orx,*.rxo,*.rxj,*.jrexx,*.rexxj,*.rexx,*.testGroup,*.testUnit	setf rexx
1323
1324" R (Splus)
1325if has("fname_case")
1326  au BufNewFile,BufRead *.s,*.S			setf r
1327else
1328  au BufNewFile,BufRead *.s			setf r
1329endif
1330
1331" R Help file
1332if has("fname_case")
1333  au BufNewFile,BufRead *.rd,*.Rd		setf rhelp
1334else
1335  au BufNewFile,BufRead *.rd			setf rhelp
1336endif
1337
1338" R noweb file
1339if has("fname_case")
1340  au BufNewFile,BufRead *.Rnw,*.rnw,*.Snw,*.snw		setf rnoweb
1341else
1342  au BufNewFile,BufRead *.rnw,*.snw			setf rnoweb
1343endif
1344
1345" R Markdown file
1346if has("fname_case")
1347  au BufNewFile,BufRead *.Rmd,*.rmd,*.Smd,*.smd		setf rmd
1348else
1349  au BufNewFile,BufRead *.rmd,*.smd			setf rmd
1350endif
1351
1352" R reStructuredText file
1353if has("fname_case")
1354  au BufNewFile,BufRead *.Rrst,*.rrst,*.Srst,*.srst	setf rrst
1355else
1356  au BufNewFile,BufRead *.rrst,*.srst			setf rrst
1357endif
1358
1359" Rexx, Rebol or R
1360au BufNewFile,BufRead *.r,*.R				call dist#ft#FTr()
1361
1362" Remind
1363au BufNewFile,BufRead .reminders,*.remind,*.rem		setf remind
1364
1365" Resolv.conf
1366au BufNewFile,BufRead resolv.conf		setf resolv
1367
1368" Relax NG Compact
1369au BufNewFile,BufRead *.rnc			setf rnc
1370
1371" Relax NG XML
1372au BufNewFile,BufRead *.rng			setf rng
1373
1374" RPL/2
1375au BufNewFile,BufRead *.rpl			setf rpl
1376
1377" Robots.txt
1378au BufNewFile,BufRead robots.txt		setf robots
1379
1380" Rpcgen
1381au BufNewFile,BufRead *.x			setf rpcgen
1382
1383" reStructuredText Documentation Format
1384au BufNewFile,BufRead *.rst			setf rst
1385
1386" RTF
1387au BufNewFile,BufRead *.rtf			setf rtf
1388
1389" Interactive Ruby shell
1390au BufNewFile,BufRead .irbrc,irbrc		setf ruby
1391
1392" Ruby
1393au BufNewFile,BufRead *.rb,*.rbw		setf ruby
1394
1395" RubyGems
1396au BufNewFile,BufRead *.gemspec			setf ruby
1397
1398" Rust
1399au BufNewFile,BufRead *.rs			setf rust
1400
1401" Rackup
1402au BufNewFile,BufRead *.ru			setf ruby
1403
1404" Bundler
1405au BufNewFile,BufRead Gemfile			setf ruby
1406
1407" Ruby on Rails
1408au BufNewFile,BufRead *.builder,*.rxml,*.rjs	setf ruby
1409
1410" Rantfile and Rakefile is like Ruby
1411au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake	setf ruby
1412
1413" S-lang (or shader language, or SmallLisp)
1414au BufNewFile,BufRead *.sl			setf slang
1415
1416" Samba config
1417au BufNewFile,BufRead smb.conf			setf samba
1418
1419" SAS script
1420au BufNewFile,BufRead *.sas			setf sas
1421
1422" Sass
1423au BufNewFile,BufRead *.sass			setf sass
1424
1425" Sather
1426au BufNewFile,BufRead *.sa			setf sather
1427
1428" Scala
1429au BufNewFile,BufRead *.scala			setf scala
1430
1431" SBT - Scala Build Tool
1432au BufNewFile,BufRead *.sbt			setf sbt
1433
1434" Scilab
1435au BufNewFile,BufRead *.sci,*.sce		setf scilab
1436
1437" SCSS
1438au BufNewFile,BufRead *.scss			setf scss
1439
1440" SD: Streaming Descriptors
1441au BufNewFile,BufRead *.sd			setf sd
1442
1443" SDL
1444au BufNewFile,BufRead *.sdl,*.pr		setf sdl
1445
1446" sed
1447au BufNewFile,BufRead *.sed			setf sed
1448
1449" Sieve (RFC 3028, 5228)
1450au BufNewFile,BufRead *.siv,*.sieve		setf sieve
1451
1452" Sendmail
1453au BufNewFile,BufRead sendmail.cf		setf sm
1454
1455" Sendmail .mc files are actually m4.  Could also be MS Message text file.
1456au BufNewFile,BufRead *.mc			call dist#ft#McSetf()
1457
1458" Services
1459au BufNewFile,BufRead */etc/services		setf services
1460
1461" Service Location config
1462au BufNewFile,BufRead */etc/slp.conf		setf slpconf
1463
1464" Service Location registration
1465au BufNewFile,BufRead */etc/slp.reg		setf slpreg
1466
1467" Service Location SPI
1468au BufNewFile,BufRead */etc/slp.spi		setf slpspi
1469
1470" Setserial config
1471au BufNewFile,BufRead */etc/serial.conf		setf setserial
1472
1473" SGML
1474au BufNewFile,BufRead *.sgm,*.sgml
1475	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' |
1476	\   setf sgmllnx |
1477	\ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' |
1478	\   let b:docbk_type = "sgml" |
1479	\   let b:docbk_ver = 4 |
1480	\   setf docbk |
1481	\ else |
1482	\   setf sgml |
1483	\ endif
1484
1485" SGMLDECL
1486au BufNewFile,BufRead *.decl,*.dcl,*.dec
1487	\ if getline(1).getline(2).getline(3) =~? '^<!SGML' |
1488	\    setf sgmldecl |
1489	\ endif
1490
1491" SGML catalog file
1492au BufNewFile,BufRead catalog			setf catalog
1493
1494" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
1495" Gentoo ebuilds and Arch Linux PKGBUILDs are actually bash scripts
1496" NOTE: Patterns ending in a star are further down, these have lower priority.
1497au 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")
1498au BufNewFile,BufRead .kshrc,*.ksh call dist#ft#SetFileTypeSH("ksh")
1499au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.env call dist#ft#SetFileTypeSH(getline(1))
1500
1501
1502" Shell script (Arch Linux) or PHP file (Drupal)
1503au BufNewFile,BufRead *.install
1504	\ if getline(1) =~ '<?php' |
1505	\   setf php |
1506	\ else |
1507	\   call dist#ft#SetFileTypeSH("bash") |
1508	\ endif
1509
1510" tcsh scripts (patterns ending in a star further below)
1511au BufNewFile,BufRead .tcshrc,*.tcsh,tcsh.tcshrc,tcsh.login	call dist#ft#SetFileTypeShell("tcsh")
1512
1513" csh scripts, but might also be tcsh scripts (on some systems csh is tcsh)
1514" (patterns ending in a start further below)
1515au BufNewFile,BufRead .login,.cshrc,csh.cshrc,csh.login,csh.logout,*.csh,.alias  call dist#ft#CSH()
1516
1517" Z-Shell script (patterns ending in a star further below)
1518au BufNewFile,BufRead .zprofile,*/etc/zprofile,.zfbfmarks  setf zsh
1519au BufNewFile,BufRead .zshrc,.zshenv,.zlogin,.zlogout,.zcompdump setf zsh
1520au BufNewFile,BufRead *.zsh			setf zsh
1521
1522" Scheme
1523au BufNewFile,BufRead *.scm,*.ss,*.rkt		setf scheme
1524
1525" Screen RC
1526au BufNewFile,BufRead .screenrc,screenrc	setf screen
1527
1528" Simula
1529au BufNewFile,BufRead *.sim			setf simula
1530
1531" SINDA
1532au BufNewFile,BufRead *.sin,*.s85		setf sinda
1533
1534" SiSU
1535au BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst,*._sst setf sisu
1536au BufNewFile,BufRead *.sst.meta,*.-sst.meta,*._sst.meta setf sisu
1537
1538" SKILL
1539au BufNewFile,BufRead *.il,*.ils,*.cdf		setf skill
1540
1541" SLRN
1542au BufNewFile,BufRead .slrnrc			setf slrnrc
1543au BufNewFile,BufRead *.score			setf slrnsc
1544
1545" Smalltalk (and TeX)
1546au BufNewFile,BufRead *.st			setf st
1547au BufNewFile,BufRead *.cls
1548	\ if getline(1) =~ '^%' |
1549	\  setf tex |
1550	\ elseif getline(1)[0] == '#' && getline(1) =~ 'rexx' |
1551	\  setf rexx |
1552	\ else |
1553	\  setf st |
1554	\ endif
1555
1556" Smarty templates
1557au BufNewFile,BufRead *.tpl			setf smarty
1558
1559" SMIL or XML
1560au BufNewFile,BufRead *.smil
1561	\ if getline(1) =~ '<?\s*xml.*?>' |
1562	\   setf xml |
1563	\ else |
1564	\   setf smil |
1565	\ endif
1566
1567" SMIL or SNMP MIB file
1568au BufNewFile,BufRead *.smi
1569	\ if getline(1) =~ '\<smil\>' |
1570	\   setf smil |
1571	\ else |
1572	\   setf mib |
1573	\ endif
1574
1575" SMITH
1576au BufNewFile,BufRead *.smt,*.smith		setf smith
1577
1578" Snobol4 and spitbol
1579au BufNewFile,BufRead *.sno,*.spt		setf snobol4
1580
1581" SNMP MIB files
1582au BufNewFile,BufRead *.mib,*.my		setf mib
1583
1584" Snort Configuration
1585au BufNewFile,BufRead *.hog,snort.conf,vision.conf	setf hog
1586au BufNewFile,BufRead *.rules			call dist#ft#FTRules()
1587
1588" Spec (Linux RPM)
1589au BufNewFile,BufRead *.spec			setf spec
1590
1591" Speedup (AspenTech plant simulator)
1592au BufNewFile,BufRead *.speedup,*.spdata,*.spd	setf spup
1593
1594" Slice
1595au BufNewFile,BufRead *.ice			setf slice
1596
1597" Spice
1598au BufNewFile,BufRead *.sp,*.spice		setf spice
1599
1600" Spyce
1601au BufNewFile,BufRead *.spy,*.spi		setf spyce
1602
1603" Squid
1604au BufNewFile,BufRead squid.conf		setf squid
1605
1606" SQL for Oracle Designer
1607au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks	setf sql
1608
1609" SQL
1610au BufNewFile,BufRead *.sql			call dist#ft#SQL()
1611
1612" SQLJ
1613au BufNewFile,BufRead *.sqlj			setf sqlj
1614
1615" SQR
1616au BufNewFile,BufRead *.sqr,*.sqi		setf sqr
1617
1618" OpenSSH configuration
1619au BufNewFile,BufRead ssh_config,*/.ssh/config	setf sshconfig
1620
1621" OpenSSH server configuration
1622au BufNewFile,BufRead sshd_config		setf sshdconfig
1623
1624" Stata
1625au BufNewFile,BufRead *.ado,*.do,*.imata,*.mata	setf stata
1626" Also *.class, but not when it's a Java bytecode file
1627au BufNewFile,BufRead *.class
1628	\ if getline(1) !~ "^\xca\xfe\xba\xbe" | setf stata | endif
1629
1630" SMCL
1631au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl	setf smcl
1632
1633" Stored Procedures
1634au BufNewFile,BufRead *.stp			setf stp
1635
1636" Standard ML
1637au BufNewFile,BufRead *.sml			setf sml
1638
1639" Sratus VOS command macro
1640au BufNewFile,BufRead *.cm			setf voscm
1641
1642" Swift
1643au BufNewFile,BufRead *.swift			setf swift
1644au BufNewFile,BufRead *.swift.gyb 		setf swiftgyb
1645
1646" Swift Intermediate Language
1647au BufNewFile,BufRead *.sil 			setf sil
1648
1649" Sysctl
1650au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf	setf sysctl
1651
1652" Systemd unit files
1653au BufNewFile,BufRead */systemd/*.{automount,mount,path,service,socket,swap,target,timer}	setf systemd
1654" Systemd overrides
1655au BufNewFile,BufRead */etc/systemd/system/*.d/*.conf	setf systemd
1656au BufNewFile,BufRead */.config/systemd/user/*.d/*.conf	setf systemd
1657" Systemd temp files
1658au BufNewFile,BufRead */etc/systemd/system/*.d/.#*	setf systemd
1659au BufNewFile,BufRead */etc/systemd/system/.#*		setf systemd
1660au BufNewFile,BufRead */.config/systemd/user/*.d/.#*	setf systemd
1661au BufNewFile,BufRead */.config/systemd/user/.#*	setf systemd
1662
1663" Synopsys Design Constraints
1664au BufNewFile,BufRead *.sdc			setf sdc
1665
1666" Sudoers
1667au BufNewFile,BufRead */etc/sudoers,sudoers.tmp	setf sudoers
1668
1669" SVG (Scalable Vector Graphics)
1670au BufNewFile,BufRead *.svg			setf svg
1671
1672" Tads (or Nroff or Perl test file)
1673au BufNewFile,BufRead *.t
1674	\ if !dist#ft#FTnroff() && !dist#ft#FTperl() | setf tads | endif
1675
1676" Tags
1677au BufNewFile,BufRead tags			setf tags
1678
1679" TAK
1680au BufNewFile,BufRead *.tak			setf tak
1681
1682" Task
1683au BufRead,BufNewFile {pending,completed,undo}.data  setf taskdata
1684au BufRead,BufNewFile *.task			setf taskedit
1685
1686" Tcl (JACL too)
1687au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl	setf tcl
1688
1689" TealInfo
1690au BufNewFile,BufRead *.tli			setf tli
1691
1692" Telix Salt
1693au BufNewFile,BufRead *.slt			setf tsalt
1694
1695" Tera Term Language
1696au BufRead,BufNewFile *.ttl			setf teraterm
1697
1698" Terminfo
1699au BufNewFile,BufRead *.ti			setf terminfo
1700
1701" TeX
1702au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl	setf tex
1703au BufNewFile,BufRead *.tex			call dist#ft#FTtex()
1704
1705" ConTeXt
1706au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi   setf context
1707
1708" Texinfo
1709au BufNewFile,BufRead *.texinfo,*.texi,*.txi	setf texinfo
1710
1711" TeX configuration
1712au BufNewFile,BufRead texmf.cnf			setf texmf
1713
1714" Tidy config
1715au BufNewFile,BufRead .tidyrc,tidyrc		setf tidy
1716
1717" TF mud client
1718au BufNewFile,BufRead *.tf,.tfrc,tfrc		setf tf
1719
1720" tmux configuration
1721au BufNewFile,BufRead {.,}tmux*.conf		setf tmux
1722
1723" TPP - Text Presentation Program
1724au BufNewFile,BufReadPost *.tpp			setf tpp
1725
1726" Treetop
1727au BufRead,BufNewFile *.treetop			setf treetop
1728
1729" Trustees
1730au BufNewFile,BufRead trustees.conf		setf trustees
1731
1732" TSS - Geometry
1733au BufNewFile,BufReadPost *.tssgm		setf tssgm
1734
1735" TSS - Optics
1736au BufNewFile,BufReadPost *.tssop		setf tssop
1737
1738" TSS - Command Line (temporary)
1739au BufNewFile,BufReadPost *.tsscl		setf tsscl
1740
1741" TWIG files
1742au BufNewFile,BufReadPost *.twig		setf twig
1743
1744" Typescript
1745au BufNewFile,BufReadPost *.ts			setf typescript
1746
1747" TypeScript with React
1748au BufNewFile,BufRead *.tsx			setf typescriptreact
1749
1750" Motif UIT/UIL files
1751au BufNewFile,BufRead *.uit,*.uil		setf uil
1752
1753" Udev conf
1754au BufNewFile,BufRead */etc/udev/udev.conf	setf udevconf
1755
1756" Udev permissions
1757au BufNewFile,BufRead */etc/udev/permissions.d/*.permissions setf udevperm
1758"
1759" Udev symlinks config
1760au BufNewFile,BufRead */etc/udev/cdsymlinks.conf	setf sh
1761
1762" UnrealScript
1763au BufNewFile,BufRead *.uc			setf uc
1764
1765" Updatedb
1766au BufNewFile,BufRead */etc/updatedb.conf	setf updatedb
1767
1768" Upstart (init(8)) config files
1769au BufNewFile,BufRead */usr/share/upstart/*.conf	       setf upstart
1770au BufNewFile,BufRead */usr/share/upstart/*.override	       setf upstart
1771au BufNewFile,BufRead */etc/init/*.conf,*/etc/init/*.override  setf upstart
1772au BufNewFile,BufRead */.init/*.conf,*/.init/*.override	       setf upstart
1773au BufNewFile,BufRead */.config/upstart/*.conf		       setf upstart
1774au BufNewFile,BufRead */.config/upstart/*.override	       setf upstart
1775
1776" Vera
1777au BufNewFile,BufRead *.vr,*.vri,*.vrh		setf vera
1778
1779" Verilog HDL
1780au BufNewFile,BufRead *.v			setf verilog
1781
1782" Verilog-AMS HDL
1783au BufNewFile,BufRead *.va,*.vams		setf verilogams
1784
1785" SystemVerilog
1786au BufNewFile,BufRead *.sv,*.svh		setf systemverilog
1787
1788" VHDL
1789au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst,*.vho  setf vhdl
1790
1791" Vim script
1792au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc	setf vim
1793
1794" Viminfo file
1795au BufNewFile,BufRead .viminfo,_viminfo		setf viminfo
1796
1797" Virata Config Script File or Drupal module
1798au BufRead,BufNewFile *.hw,*.module,*.pkg
1799	\ if getline(1) =~ '<?php' |
1800	\   setf php |
1801	\ else |
1802	\   setf virata |
1803	\ endif
1804
1805" Visual Basic (also uses *.bas) or FORM
1806au BufNewFile,BufRead *.frm			call dist#ft#FTVB("form")
1807
1808" SaxBasic is close to Visual Basic
1809au BufNewFile,BufRead *.sba			setf vb
1810
1811" Vgrindefs file
1812au BufNewFile,BufRead vgrindefs			setf vgrindefs
1813
1814" VRML V1.0c
1815au BufNewFile,BufRead *.wrl			setf vrml
1816
1817" Vroom (vim testing and executable documentation)
1818au BufNewFile,BufRead *.vroom			setf vroom
1819
1820" Vue.js Single File Component
1821au BufNewFile,BufRead *.vue			setf vue
1822
1823" WebAssembly
1824au BufNewFile,BufRead *.wast,*.wat		setf wast
1825
1826" Webmacro
1827au BufNewFile,BufRead *.wm			setf webmacro
1828
1829" Wget config
1830au BufNewFile,BufRead .wgetrc,wgetrc		setf wget
1831
1832" Website MetaLanguage
1833au BufNewFile,BufRead *.wml			setf wml
1834
1835" Winbatch
1836au BufNewFile,BufRead *.wbt			setf winbatch
1837
1838" WSML
1839au BufNewFile,BufRead *.wsml			setf wsml
1840
1841" WPL
1842au BufNewFile,BufRead *.wpl			setf xml
1843
1844" WvDial
1845au BufNewFile,BufRead wvdial.conf,.wvdialrc	setf wvdial
1846
1847" CVS RC file
1848au BufNewFile,BufRead .cvsrc			setf cvsrc
1849
1850" CVS commit file
1851au BufNewFile,BufRead cvs\d\+			setf cvs
1852
1853" WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment
1854" lines in a WEB file).
1855au BufNewFile,BufRead *.web
1856	\ if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" |
1857	\   setf web |
1858	\ else |
1859	\   setf winbatch |
1860	\ endif
1861
1862" Windows Scripting Host and Windows Script Component
1863au BufNewFile,BufRead *.ws[fc]			setf wsh
1864
1865" XHTML
1866au BufNewFile,BufRead *.xhtml,*.xht		setf xhtml
1867
1868" X Pixmap (dynamically sets colors, use BufEnter to make it work better)
1869au BufEnter *.xpm
1870	\ if getline(1) =~ "XPM2" |
1871	\   setf xpm2 |
1872	\ else |
1873	\   setf xpm |
1874	\ endif
1875au BufEnter *.xpm2				setf xpm2
1876
1877" XFree86 config
1878au BufNewFile,BufRead XF86Config
1879	\ if getline(1) =~ '\<XConfigurator\>' |
1880	\   let b:xf86conf_xfree86_version = 3 |
1881	\ endif |
1882	\ setf xf86conf
1883au BufNewFile,BufRead */xorg.conf.d/*.conf
1884	\ let b:xf86conf_xfree86_version = 4 |
1885	\ setf xf86conf
1886
1887" Xorg config
1888au BufNewFile,BufRead xorg.conf,xorg.conf-4	let b:xf86conf_xfree86_version = 4 | setf xf86conf
1889
1890" Xinetd conf
1891au BufNewFile,BufRead */etc/xinetd.conf		setf xinetd
1892
1893" XS Perl extension interface language
1894au BufNewFile,BufRead *.xs			setf xs
1895
1896" X resources file
1897au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults
1898
1899" Xmath
1900au BufNewFile,BufRead *.msc,*.msf		setf xmath
1901au BufNewFile,BufRead *.ms
1902	\ if !dist#ft#FTnroff() | setf xmath | endif
1903
1904" XML  specific variants: docbk and xbl
1905au BufNewFile,BufRead *.xml			call dist#ft#FTxml()
1906
1907" XMI (holding UML models) is also XML
1908au BufNewFile,BufRead *.xmi			setf xml
1909
1910" CSPROJ files are Visual Studio.NET's XML-based project config files
1911au BufNewFile,BufRead *.csproj,*.csproj.user	setf xml
1912
1913" Qt Linguist translation source and Qt User Interface Files are XML
1914" However, for .ts Typescript is more common.
1915au BufNewFile,BufRead *.ui			setf xml
1916
1917" TPM's are RDF-based descriptions of TeX packages (Nikolai Weibull)
1918au BufNewFile,BufRead *.tpm			setf xml
1919
1920" Xdg menus
1921au BufNewFile,BufRead */etc/xdg/menus/*.menu	setf xml
1922
1923" ATI graphics driver configuration
1924au BufNewFile,BufRead fglrxrc			setf xml
1925
1926" Web Services Description Language (WSDL)
1927au BufNewFile,BufRead *.wsdl			setf xml
1928
1929" XLIFF (XML Localisation Interchange File Format) is also XML
1930au BufNewFile,BufRead *.xlf			setf xml
1931au BufNewFile,BufRead *.xliff			setf xml
1932
1933" XML User Interface Language
1934au BufNewFile,BufRead *.xul			setf xml
1935
1936" X11 xmodmap (also see below)
1937au BufNewFile,BufRead *Xmodmap			setf xmodmap
1938
1939" Xquery
1940au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy	setf xquery
1941
1942" XSD
1943au BufNewFile,BufRead *.xsd			setf xsd
1944
1945" Xslt
1946au BufNewFile,BufRead *.xsl,*.xslt		setf xslt
1947
1948" Yacc
1949au BufNewFile,BufRead *.yy,*.yxx,*.y++		setf yacc
1950
1951" Yacc or racc
1952au BufNewFile,BufRead *.y			call dist#ft#FTy()
1953
1954" Yaml
1955au BufNewFile,BufRead *.yaml,*.yml		setf yaml
1956
1957" Raml
1958au BufNewFile,BufRead *.raml			setf raml
1959
1960" yum conf (close enough to dosini)
1961au BufNewFile,BufRead */etc/yum.conf		setf dosini
1962
1963" Zimbu
1964au BufNewFile,BufRead *.zu			setf zimbu
1965" Zimbu Templates
1966au BufNewFile,BufRead *.zut			setf zimbutempl
1967
1968" Zope
1969"   dtml (zope dynamic template markup language), pt (zope page template),
1970"   cpt (zope form controller page template)
1971au BufNewFile,BufRead *.dtml,*.pt,*.cpt		call dist#ft#FThtml()
1972"   zsql (zope sql method)
1973au BufNewFile,BufRead *.zsql			call dist#ft#SQL()
1974
1975" Z80 assembler asz80
1976au BufNewFile,BufRead *.z8a			setf z8a
1977
1978augroup END
1979
1980
1981" Source the user-specified filetype file, for backwards compatibility with
1982" Vim 5.x.
1983if exists("myfiletypefile") && filereadable(expand(myfiletypefile))
1984  execute "source " . myfiletypefile
1985endif
1986
1987
1988" Check for "*" after loading myfiletypefile, so that scripts.vim is only used
1989" when there are no matching file name extensions.
1990" Don't do this for compressed files.
1991augroup filetypedetect
1992au BufNewFile,BufRead *
1993	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
1994	\ | runtime! scripts.vim | endif
1995au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif
1996
1997
1998" Extra checks for when no filetype has been detected now.  Mostly used for
1999" patterns that end in "*".  E.g., "zsh*" matches "zsh.vim", but that's a Vim
2000" script file.
2001" Most of these should call s:StarSetf() to avoid names ending in .gz and the
2002" like are used.
2003
2004" More Apache style config files
2005au BufNewFile,BufRead */etc/proftpd/*.conf*,*/etc/proftpd/conf.*/*	call s:StarSetf('apachestyle')
2006au BufNewFile,BufRead proftpd.conf*					call s:StarSetf('apachestyle')
2007
2008" More Apache config files
2009au BufNewFile,BufRead access.conf*,apache.conf*,apache2.conf*,httpd.conf*,srm.conf*	call s:StarSetf('apache')
2010au BufNewFile,BufRead */etc/apache2/*.conf*,*/etc/apache2/conf.*/*,*/etc/apache2/mods-*/*,*/etc/apache2/sites-*/*,*/etc/httpd/conf.d/*.conf*		call s:StarSetf('apache')
2011
2012" Asterisk config file
2013au BufNewFile,BufRead *asterisk/*.conf*		call s:StarSetf('asterisk')
2014au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm')
2015
2016" Bazaar version control
2017au BufNewFile,BufRead bzr_log.*			setf bzr
2018
2019" Bazel build file
2020if !has("fname_case")
2021  au BufNewFile,BufRead BUILD			setf bzl
2022endif
2023
2024" BIND zone
2025au BufNewFile,BufRead */named/db.*,*/bind/db.*	call s:StarSetf('bindzone')
2026
2027" Calendar
2028au BufNewFile,BufRead */.calendar/*,
2029	\*/share/calendar/*/calendar.*,*/share/calendar/calendar.*
2030	\					call s:StarSetf('calendar')
2031
2032" Changelog
2033au BufNewFile,BufRead [cC]hange[lL]og*
2034	\ if getline(1) =~ '; urgency='
2035	\|  call s:StarSetf('debchangelog')
2036	\|else
2037	\|  call s:StarSetf('changelog')
2038	\|endif
2039
2040" Crontab
2041au BufNewFile,BufRead crontab,crontab.*,*/etc/cron.d/*		call s:StarSetf('crontab')
2042
2043" dnsmasq(8) configuration
2044au BufNewFile,BufRead */etc/dnsmasq.d/*		call s:StarSetf('dnsmasq')
2045
2046" Dracula
2047au BufNewFile,BufRead drac.*			call s:StarSetf('dracula')
2048
2049" Fvwm
2050au BufNewFile,BufRead */.fvwm/*			call s:StarSetf('fvwm')
2051au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
2052	\ let b:fvwm_version = 1 | call s:StarSetf('fvwm')
2053au BufNewFile,BufRead *fvwm2rc*
2054	\ if expand("<afile>:e") == "m4"
2055	\|  call s:StarSetf('fvwm2m4')
2056	\|else
2057	\|  let b:fvwm_version = 2 | call s:StarSetf('fvwm')
2058	\|endif
2059
2060" Gedcom
2061au BufNewFile,BufRead */tmp/lltmp*		call s:StarSetf('gedcom')
2062
2063" Git
2064au BufNewFile,BufRead */.gitconfig.d/*,/etc/gitconfig.d/* 	call s:StarSetf('gitconfig')
2065
2066" Gitolite
2067au BufNewFile,BufRead */gitolite-admin/conf/*	call s:StarSetf('gitolite')
2068
2069" GTK RC
2070au BufNewFile,BufRead .gtkrc*,gtkrc*		call s:StarSetf('gtkrc')
2071
2072" Jam
2073au BufNewFile,BufRead Prl*.*,JAM*.*		call s:StarSetf('jam')
2074
2075" Jargon
2076au! BufNewFile,BufRead *jarg*
2077	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE'
2078	\|  call s:StarSetf('jargon')
2079	\|endif
2080
2081" Java Properties resource file (note: doesn't catch font.properties.pl)
2082au BufNewFile,BufRead *.properties_??_??_*	call s:StarSetf('jproperties')
2083
2084" Kconfig
2085au BufNewFile,BufRead Kconfig.*			call s:StarSetf('kconfig')
2086
2087" Lilo: Linux loader
2088au BufNewFile,BufRead lilo.conf*		call s:StarSetf('lilo')
2089
2090" Logcheck
2091au BufNewFile,BufRead */etc/logcheck/*.d*/*	call s:StarSetf('logcheck')
2092
2093" Makefile
2094au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')
2095
2096" Ruby Makefile
2097au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')
2098
2099" Mail (also matches muttrc.vim, so this is below the other checks)
2100au BufNewFile,BufRead {neo,}mutt[[:alnum:]._-]\\\{6\}	setf mail
2101
2102au BufNewFile,BufRead reportbug-*		call s:StarSetf('mail')
2103
2104" Modconf
2105au BufNewFile,BufRead */etc/modutils/*
2106	\ if executable(expand("<afile>")) != 1
2107	\|  call s:StarSetf('modconf')
2108	\|endif
2109au BufNewFile,BufRead */etc/modprobe.*		call s:StarSetf('modconf')
2110
2111" Mutt setup file
2112au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
2113au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc*		call s:StarSetf('muttrc')
2114
2115" Neomutt setup file
2116au BufNewFile,BufRead .neomuttrc*,*/.neomutt/neomuttrc*	call s:StarSetf('neomuttrc')
2117au BufNewFile,BufRead neomuttrc*,Neomuttrc*		call s:StarSetf('neomuttrc')
2118
2119" Nroff macros
2120au BufNewFile,BufRead tmac.*			call s:StarSetf('nroff')
2121
2122" OpenBSD hostname.if
2123au BufNewFile,BufRead /etc/hostname.*		call s:StarSetf('config')
2124
2125" Pam conf
2126au BufNewFile,BufRead */etc/pam.d/*		call s:StarSetf('pamconf')
2127
2128" Printcap and Termcap
2129au BufNewFile,BufRead *printcap*
2130	\ if !did_filetype()
2131	\|  let b:ptcap_type = "print" | call s:StarSetf('ptcap')
2132	\|endif
2133au BufNewFile,BufRead *termcap*
2134	\ if !did_filetype()
2135	\|  let b:ptcap_type = "term" | call s:StarSetf('ptcap')
2136	\|endif
2137
2138" ReDIF
2139" Only used when the .rdf file was not detected to be XML.
2140au BufRead,BufNewFile *.rdf			call dist#ft#Redif()
2141
2142" Remind
2143au BufNewFile,BufRead .reminders*		call s:StarSetf('remind')
2144
2145" SGML catalog file
2146au BufNewFile,BufRead sgml.catalog*		call s:StarSetf('catalog')
2147
2148" Shell scripts ending in a star
2149au BufNewFile,BufRead .bashrc*,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,bash-fc[-.]*,,PKGBUILD* call dist#ft#SetFileTypeSH("bash")
2150au BufNewFile,BufRead .kshrc* call dist#ft#SetFileTypeSH("ksh")
2151au BufNewFile,BufRead .profile* call dist#ft#SetFileTypeSH(getline(1))
2152
2153" tcsh scripts ending in a star
2154au BufNewFile,BufRead .tcshrc*	call dist#ft#SetFileTypeShell("tcsh")
2155
2156" csh scripts ending in a star
2157au BufNewFile,BufRead .login*,.cshrc*  call dist#ft#CSH()
2158
2159" VHDL
2160au BufNewFile,BufRead *.vhdl_[0-9]*		call s:StarSetf('vhdl')
2161
2162" Vim script
2163au BufNewFile,BufRead *vimrc*			call s:StarSetf('vim')
2164
2165" Subversion commit file
2166au BufNewFile,BufRead svn-commit*.tmp		setf svn
2167
2168" X resources file
2169au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults')
2170
2171" XFree86 config
2172au BufNewFile,BufRead XF86Config-4*
2173	\ let b:xf86conf_xfree86_version = 4 | call s:StarSetf('xf86conf')
2174au BufNewFile,BufRead XF86Config*
2175	\ if getline(1) =~ '\<XConfigurator\>'
2176	\|  let b:xf86conf_xfree86_version = 3
2177	\|endif
2178	\|call s:StarSetf('xf86conf')
2179
2180" X11 xmodmap
2181au BufNewFile,BufRead *xmodmap*			call s:StarSetf('xmodmap')
2182
2183" Xinetd conf
2184au BufNewFile,BufRead */etc/xinetd.d/*		call s:StarSetf('xinetd')
2185
2186" yum conf (close enough to dosini)
2187au BufNewFile,BufRead */etc/yum.repos.d/*	call s:StarSetf('dosini')
2188
2189" Z-Shell script ending in a star
2190au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump*  call s:StarSetf('zsh')
2191au BufNewFile,BufRead zsh*,zlog*		call s:StarSetf('zsh')
2192
2193
2194" Plain text files, needs to be far down to not override others.  This avoids
2195" the "conf" type being used if there is a line starting with '#'.
2196au BufNewFile,BufRead *.text,README		setf text
2197
2198" Help files match *.txt but should have a last line that is a modeline.
2199au BufNewFile,BufRead *.txt
2200	\  if getline('$') !~ 'vim:.*ft=help'
2201	\|   setf text
2202	\| endif
2203
2204
2205" Use the filetype detect plugins.  They may overrule any of the previously
2206" detected filetypes.
2207runtime! ftdetect/*.vim
2208
2209" NOTE: The above command could have ended the filetypedetect autocmd group
2210" and started another one. Let's make sure it has ended to get to a consistent
2211" state.
2212augroup END
2213
2214" Generic configuration file. Use FALLBACK, it's just guessing!
2215au filetypedetect BufNewFile,BufRead,StdinReadPost *
2216	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
2217	\    && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
2218	\	|| getline(4) =~ '^#' || getline(5) =~ '^#') |
2219	\   setf FALLBACK conf |
2220	\ endif
2221
2222
2223" If the GUI is already running, may still need to install the Syntax menu.
2224" Don't do it when the 'M' flag is included in 'guioptions'.
2225if has("menu") && has("gui_running")
2226      \ && !exists("did_install_syntax_menu") && &guioptions !~# "M"
2227  source <sfile>:p:h/menu.vim
2228endif
2229
2230" Function called for testing all functions defined here.  These are
2231" script-local, thus need to be executed here.
2232" Returns a string with error messages (hopefully empty).
2233func! TestFiletypeFuncs(testlist)
2234  let output = ''
2235  for f in a:testlist
2236    try
2237      exe f
2238    catch
2239      let output = output . "\n" . f . ": " . v:exception
2240    endtry
2241  endfor
2242  return output
2243endfunc
2244
2245" Restore 'cpoptions'
2246let &cpo = s:cpo_save
2247unlet s:cpo_save
2248