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