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