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