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